From 3e2dd35dcab440702dc9a94d9c32d42c8b2987fa Mon Sep 17 00:00:00 2001 From: Justin Spahr-Summers Date: Tue, 11 Feb 2025 22:02:20 +0000 Subject: [PATCH] Fix tests --- jest.config.js | 4 ++++ src/__mocks__/pkce-challenge.ts | 6 ++++++ src/client/auth.test.ts | 20 +++++++------------- src/client/sse.ts | 8 +++++++- tsconfig.cjs.json | 2 +- tsconfig.prod.json | 2 +- 6 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 src/__mocks__/pkce-challenge.ts diff --git a/jest.config.js b/jest.config.js index 17ab1fbe..f8f621c8 100644 --- a/jest.config.js +++ b/jest.config.js @@ -7,6 +7,10 @@ export default { ...defaultEsmPreset, moduleNameMapper: { "^(\\.{1,2}/.*)\\.js$": "$1", + "^pkce-challenge$": "/src/__mocks__/pkce-challenge.ts" }, + transformIgnorePatterns: [ + "/node_modules/(?!eventsource)/" + ], testPathIgnorePatterns: ["/node_modules/", "/dist/"], }; diff --git a/src/__mocks__/pkce-challenge.ts b/src/__mocks__/pkce-challenge.ts new file mode 100644 index 00000000..10e13054 --- /dev/null +++ b/src/__mocks__/pkce-challenge.ts @@ -0,0 +1,6 @@ +export default function pkceChallenge() { + return { + code_verifier: "test_verifier", + code_challenge: "test_challenge", + }; +} \ No newline at end of file diff --git a/src/client/auth.test.ts b/src/client/auth.test.ts index 7332ae36..6d60806f 100644 --- a/src/client/auth.test.ts +++ b/src/client/auth.test.ts @@ -6,14 +6,6 @@ import { registerClient, } from "./auth.js"; -// Mock pkce-challenge -jest.mock("pkce-challenge", () => ({ - __esModule: true, - default: () => ({ - code_verifier: "test_verifier", - code_challenge: "test_challenge", - }), -})); // Mock fetch globally const mockFetch = jest.fn(); @@ -43,11 +35,13 @@ describe("OAuth Authorization", () => { const metadata = await discoverOAuthMetadata("https://auth.example.com"); expect(metadata).toEqual(validMetadata); - expect(mockFetch).toHaveBeenCalledWith( - expect.objectContaining({ - href: "https://auth.example.com/.well-known/oauth-authorization-server", - }) - ); + const calls = mockFetch.mock.calls; + expect(calls.length).toBe(1); + const [url, options] = calls[0]; + expect(url.toString()).toBe("https://auth.example.com/.well-known/oauth-authorization-server"); + expect(options.headers).toEqual({ + "MCP-Protocol-Version": "2024-11-05" + }); }); it("returns undefined when discovery endpoint returns 404", async () => { diff --git a/src/client/sse.ts b/src/client/sse.ts index e8de3e38..59eef4d3 100644 --- a/src/client/sse.ts +++ b/src/client/sse.ts @@ -105,7 +105,13 @@ export class SSEClientTransport implements Transport { this._eventSource = new EventSource( this._url.href, this._eventSourceInit ?? { - fetch: (url, init) => this._commonHeaders().then((headers) => fetch(url, { ...init, headers })), + fetch: (url, init) => this._commonHeaders().then((headers) => fetch(url, { + ...init, + headers: { + ...headers, + Accept: "text/event-stream" + } + })), }, ); this._abortController = new AbortController(); diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json index 058a5d9a..b2f344a8 100644 --- a/tsconfig.cjs.json +++ b/tsconfig.cjs.json @@ -5,5 +5,5 @@ "moduleResolution": "node", "outDir": "./dist/cjs" }, - "exclude": ["**/*.test.ts"] + "exclude": ["**/*.test.ts", "src/__mocks__/**/*"] } diff --git a/tsconfig.prod.json b/tsconfig.prod.json index 2c68666e..2302dd84 100644 --- a/tsconfig.prod.json +++ b/tsconfig.prod.json @@ -3,5 +3,5 @@ "compilerOptions": { "outDir": "./dist/esm" }, - "exclude": ["**/*.test.ts"] + "exclude": ["**/*.test.ts", "src/__mocks__/**/*"] }