metatron-open-seo/src/server/mcp/context.test.ts

44 lines
1.2 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
createWorkersOAuthMcpProps,
MCP_AUTH_CONTEXT_PROP,
withWorkersOAuthMcpScopes,
workersOAuthMcpPropsSchema,
} from "@/server/mcp/context";
const mcpContext = {
userId: "user_123",
userEmail: "alice@example.com",
organizationId: "org_123",
clientId: "client_123",
scopes: ["offline_access", "mcp"],
audience: "https://open-seo.test/mcp",
subject: "user_123",
baseUrl: "https://open-seo.test",
};
describe("withWorkersOAuthMcpScopes", () => {
it("stores the OpenSEO MCP context in Workers OAuth props", () => {
const props = createWorkersOAuthMcpProps(mcpContext);
expect(workersOAuthMcpPropsSchema.parse(props)).toEqual({
[MCP_AUTH_CONTEXT_PROP]: mcpContext,
});
});
it("updates access-token props with downscoped token scopes", () => {
const props = createWorkersOAuthMcpProps(mcpContext);
expect(withWorkersOAuthMcpScopes(props, ["mcp"])).toEqual({
[MCP_AUTH_CONTEXT_PROP]: {
...mcpContext,
scopes: ["mcp"],
},
});
});
it("leaves unrecognized provider props alone", () => {
expect(withWorkersOAuthMcpScopes({}, ["mcp"])).toBeUndefined();
});
});