import { afterAll, beforeAll, describe, expect, test } from "bun:test";
import { Client, StreamableHTTPClientTransport } from "@modelcontextprotocol/client";
import {
approveConsent,
BASE,
body,
call,
MODERN,
patClient,
quote,
agentToken,
seedToken,
seedWorld,
sha256Hex,
sql,
sqlRows,
teardown,
TestOAuthProvider,
toolText,
} from "./mcp-helpers";
import type { World } from "./mcp-helpers";
let world: World;
beforeAll(async () => {
world = await seedWorld();
}, 120_000);
afterAll(async () => {
await teardown(world);
});
describe("authorization", () => {
test("advertises protected resource and authorization server metadata", async () => {
const prm = await body<{ resource: string }>(await fetch(`${BASE}/.well-known/oauth-protected-resource/mcp`));
expect(prm.resource).toBe(`${BASE}/mcp`);
const as = await body<{ code_challenge_methods_supported: string[]; registration_endpoint: string }>(
await fetch(`${BASE}/.well-known/oauth-authorization-server`),
);
expect(as.code_challenge_methods_supported).toEqual(["S256"]);