Skip to content

Commit 36999dc

Browse files
committed
Fix fetch test polluting auth tests
1 parent d47d88b commit 36999dc

File tree

1 file changed

+42
-35
lines changed

1 file changed

+42
-35
lines changed

src/client/sse.test.ts

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ describe("SSEClientTransport", () => {
6060
afterEach(async () => {
6161
await transport.close();
6262
await server.close();
63+
64+
jest.clearAllMocks();
6365
});
6466

6567
describe("connection handling", () => {
@@ -73,8 +75,7 @@ describe("SSEClientTransport", () => {
7375

7476
it("rejects if server returns non-200 status", async () => {
7577
// Create a server that returns 403
76-
server.close();
77-
await new Promise((resolve) => server.on("close", resolve));
78+
await server.close();
7879

7980
server = createServer((req, res) => {
8081
res.writeHead(403);
@@ -252,37 +253,45 @@ describe("SSEClientTransport", () => {
252253

253254
await transport.start();
254255

255-
// Mock fetch for the message sending test
256-
global.fetch = jest.fn().mockResolvedValue({
257-
ok: true,
258-
});
259-
260-
const message: JSONRPCMessage = {
261-
jsonrpc: "2.0",
262-
id: "1",
263-
method: "test",
264-
params: {},
265-
};
266-
267-
await transport.send(message);
256+
// Store original fetch
257+
const originalFetch = global.fetch;
268258

269-
// Verify fetch was called with correct headers
270-
expect(global.fetch).toHaveBeenCalledWith(
271-
expect.any(URL),
272-
expect.objectContaining({
273-
headers: expect.any(Headers),
274-
}),
275-
);
259+
try {
260+
// Mock fetch for the message sending test
261+
global.fetch = jest.fn().mockResolvedValue({
262+
ok: true,
263+
});
276264

277-
const calledHeaders = (global.fetch as jest.Mock).mock.calls[0][1]
278-
.headers;
279-
expect(calledHeaders.get("Authorization")).toBe(
280-
customHeaders.Authorization,
281-
);
282-
expect(calledHeaders.get("X-Custom-Header")).toBe(
283-
customHeaders["X-Custom-Header"],
284-
);
285-
expect(calledHeaders.get("content-type")).toBe("application/json");
265+
const message: JSONRPCMessage = {
266+
jsonrpc: "2.0",
267+
id: "1",
268+
method: "test",
269+
params: {},
270+
};
271+
272+
await transport.send(message);
273+
274+
// Verify fetch was called with correct headers
275+
expect(global.fetch).toHaveBeenCalledWith(
276+
expect.any(URL),
277+
expect.objectContaining({
278+
headers: expect.any(Headers),
279+
}),
280+
);
281+
282+
const calledHeaders = (global.fetch as jest.Mock).mock.calls[0][1]
283+
.headers;
284+
expect(calledHeaders.get("Authorization")).toBe(
285+
customHeaders.Authorization,
286+
);
287+
expect(calledHeaders.get("X-Custom-Header")).toBe(
288+
customHeaders["X-Custom-Header"],
289+
);
290+
expect(calledHeaders.get("content-type")).toBe("application/json");
291+
} finally {
292+
// Restore original fetch
293+
global.fetch = originalFetch;
294+
}
286295
});
287296
});
288297

@@ -345,8 +354,7 @@ describe("SSEClientTransport", () => {
345354

346355
it("attempts auth flow on 401 during SSE connection", async () => {
347356
// Create server that returns 401s
348-
server.close();
349-
await new Promise(resolve => server.on("close", resolve));
357+
await server.close();
350358

351359
server = createServer((req, res) => {
352360
lastServerRequest = req;
@@ -375,8 +383,7 @@ describe("SSEClientTransport", () => {
375383

376384
it("attempts auth flow on 401 during POST request", async () => {
377385
// Create server that accepts SSE but returns 401 on POST
378-
server.close();
379-
await new Promise(resolve => server.on("close", resolve));
386+
await server.close();
380387

381388
server = createServer((req, res) => {
382389
lastServerRequest = req;

0 commit comments

Comments
 (0)