@@ -60,6 +60,8 @@ describe("SSEClientTransport", () => {
60
60
afterEach ( async ( ) => {
61
61
await transport . close ( ) ;
62
62
await server . close ( ) ;
63
+
64
+ jest . clearAllMocks ( ) ;
63
65
} ) ;
64
66
65
67
describe ( "connection handling" , ( ) => {
@@ -73,8 +75,7 @@ describe("SSEClientTransport", () => {
73
75
74
76
it ( "rejects if server returns non-200 status" , async ( ) => {
75
77
// Create a server that returns 403
76
- server . close ( ) ;
77
- await new Promise ( ( resolve ) => server . on ( "close" , resolve ) ) ;
78
+ await server . close ( ) ;
78
79
79
80
server = createServer ( ( req , res ) => {
80
81
res . writeHead ( 403 ) ;
@@ -252,37 +253,45 @@ describe("SSEClientTransport", () => {
252
253
253
254
await transport . start ( ) ;
254
255
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 ;
268
258
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
+ } ) ;
276
264
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
+ }
286
295
} ) ;
287
296
} ) ;
288
297
@@ -345,8 +354,7 @@ describe("SSEClientTransport", () => {
345
354
346
355
it ( "attempts auth flow on 401 during SSE connection" , async ( ) => {
347
356
// Create server that returns 401s
348
- server . close ( ) ;
349
- await new Promise ( resolve => server . on ( "close" , resolve ) ) ;
357
+ await server . close ( ) ;
350
358
351
359
server = createServer ( ( req , res ) => {
352
360
lastServerRequest = req ;
@@ -375,8 +383,7 @@ describe("SSEClientTransport", () => {
375
383
376
384
it ( "attempts auth flow on 401 during POST request" , async ( ) => {
377
385
// 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 ( ) ;
380
387
381
388
server = createServer ( ( req , res ) => {
382
389
lastServerRequest = req ;
0 commit comments