11import { beforeEach , describe , expect , it , vi } from 'vitest' ;
22import { getCurrentScope } from '../../../../src/currentScopes' ;
3- import {
4- completeSpanFromToolResult ,
5- storeSpanForRequest ,
6- } from '../../../../src/integrations/mcp-server/correlation' ;
3+ import { completeSpanFromToolResult , storeSpanForRequest } from '../../../../src/integrations/mcp-server/correlation' ;
74import type { MCPTransport } from '../../../../src/integrations/mcp-server/types' ;
85import { createMockTransport } from './testUtils' ;
96
@@ -22,7 +19,7 @@ describe('correlation edge cases', () => {
2219 end : vi . fn ( ) ,
2320 isRecording : vi . fn ( ) . mockReturnValue ( true ) ,
2421 } ;
25-
22+
2623 ( getCurrentScope as any ) . mockReturnValue ( {
2724 getSpan : vi . fn ( ) . mockReturnValue ( mockSpan ) ,
2825 } ) ;
@@ -32,7 +29,7 @@ describe('correlation edge cases', () => {
3229 it ( 'handles null transport gracefully' , ( ) => {
3330 const transport = null as any ;
3431 const requestId = 'test-request-1' ;
35-
32+
3633 // Should not throw when storing span for null transport
3734 expect ( ( ) => {
3835 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
@@ -42,7 +39,7 @@ describe('correlation edge cases', () => {
4239 it ( 'handles undefined transport gracefully' , ( ) => {
4340 const transport = undefined as any ;
4441 const requestId = 'test-request-2' ;
45-
42+
4643 // Should not throw when storing span for undefined transport
4744 expect ( ( ) => {
4845 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
@@ -52,7 +49,7 @@ describe('correlation edge cases', () => {
5249 it ( 'handles non-object transport gracefully' , ( ) => {
5350 const transport = 'not-an-object' as any ;
5451 const requestId = 'test-request-3' ;
55-
52+
5653 // Should not throw when storing span for string transport
5754 expect ( ( ) => {
5855 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
@@ -62,7 +59,7 @@ describe('correlation edge cases', () => {
6259 it ( 'handles number transport gracefully' , ( ) => {
6360 const transport = 123 as any ;
6461 const requestId = 'test-request-4' ;
65-
62+
6663 // Should not throw when storing span for number transport
6764 expect ( ( ) => {
6865 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
@@ -72,7 +69,7 @@ describe('correlation edge cases', () => {
7269 it ( 'handles boolean transport gracefully' , ( ) => {
7370 const transport = true as any ;
7471 const requestId = 'test-request-5' ;
75-
72+
7673 // Should not throw when storing span for boolean transport
7774 expect ( ( ) => {
7875 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
@@ -83,10 +80,10 @@ describe('correlation edge cases', () => {
8380 const invalidTransport1 = null as any ;
8481 const invalidTransport2 = 'string-transport' as any ;
8582 const requestId = 'test-request-6' ;
86-
83+
8784 // Store span for first invalid transport
8885 storeSpanForRequest ( invalidTransport1 , requestId , mockSpan , 'tools/call' ) ;
89-
86+
9087 // Complete span from different invalid transport with same request ID
9188 // This should work because they both use the fallback map
9289 expect ( ( ) => {
@@ -99,35 +96,35 @@ describe('correlation edge cases', () => {
9996 it ( 'works normally with valid transport objects' , ( ) => {
10097 const transport = createMockTransport ( ) ;
10198 const requestId = 'test-request-7' ;
102-
99+
103100 // Should work normally with valid transport
104101 expect ( ( ) => {
105102 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
106103 completeSpanFromToolResult ( transport , requestId , {
107104 content : [ { type : 'text' , text : 'result' } ] ,
108105 } ) ;
109106 } ) . not . toThrow ( ) ;
110-
107+
111108 expect ( mockSpan . end ) . toHaveBeenCalled ( ) ;
112109 } ) ;
113110
114111 it ( 'maintains separate correlation for valid transports' , ( ) => {
115112 const transport1 = createMockTransport ( ) ;
116113 const transport2 = createMockTransport ( ) ;
117114 const requestId = 'test-request-8' ;
118-
115+
119116 const mockSpan1 = { ...mockSpan , id : 'span1' , end : vi . fn ( ) } ;
120117 const mockSpan2 = { ...mockSpan , id : 'span2' , end : vi . fn ( ) } ;
121-
118+
122119 // Store spans for different transports with same request ID
123120 storeSpanForRequest ( transport1 , requestId , mockSpan1 , 'tools/call' ) ;
124121 storeSpanForRequest ( transport2 , requestId , mockSpan2 , 'tools/call' ) ;
125-
122+
126123 // Complete span for transport1 should only affect span1
127124 completeSpanFromToolResult ( transport1 , requestId , {
128125 content : [ { type : 'text' , text : 'result1' } ] ,
129126 } ) ;
130-
127+
131128 expect ( mockSpan1 . end ) . toHaveBeenCalled ( ) ;
132129 expect ( mockSpan2 . end ) . not . toHaveBeenCalled ( ) ;
133130 } ) ;
@@ -136,27 +133,27 @@ describe('correlation edge cases', () => {
136133 const validTransport = createMockTransport ( ) ;
137134 const invalidTransport = null as any ;
138135 const requestId = 'test-request-9' ;
139-
136+
140137 const mockSpan1 = { ...mockSpan , id : 'valid-span' , end : vi . fn ( ) } ;
141138 const mockSpan2 = { ...mockSpan , id : 'fallback-span' , end : vi . fn ( ) } ;
142-
139+
143140 // Store spans for both valid and invalid transports
144141 storeSpanForRequest ( validTransport , requestId , mockSpan1 , 'tools/call' ) ;
145142 storeSpanForRequest ( invalidTransport , requestId , mockSpan2 , 'tools/call' ) ;
146-
143+
147144 // Complete span for valid transport should only affect valid span
148145 completeSpanFromToolResult ( validTransport , requestId , {
149146 content : [ { type : 'text' , text : 'valid-result' } ] ,
150147 } ) ;
151-
148+
152149 expect ( mockSpan1 . end ) . toHaveBeenCalled ( ) ;
153150 expect ( mockSpan2 . end ) . not . toHaveBeenCalled ( ) ;
154-
151+
155152 // Complete span for invalid transport should only affect fallback span
156153 completeSpanFromToolResult ( invalidTransport , requestId , {
157154 content : [ { type : 'text' , text : 'fallback-result' } ] ,
158155 } ) ;
159-
156+
160157 expect ( mockSpan2 . end ) . toHaveBeenCalled ( ) ;
161158 } ) ;
162159 } ) ;
@@ -165,7 +162,7 @@ describe('correlation edge cases', () => {
165162 it ( 'handles transport with null prototype' , ( ) => {
166163 const transport = Object . create ( null ) as MCPTransport ;
167164 const requestId = 'test-request-10' ;
168-
165+
169166 // Should not throw with null prototype object
170167 expect ( ( ) => {
171168 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
@@ -175,32 +172,32 @@ describe('correlation edge cases', () => {
175172 it ( 'handles frozen transport object' , ( ) => {
176173 const transport = Object . freeze ( createMockTransport ( ) ) ;
177174 const requestId = 'test-request-11' ;
178-
175+
179176 // Should work with frozen object
180177 expect ( ( ) => {
181178 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
182179 completeSpanFromToolResult ( transport , requestId , {
183180 content : [ { type : 'text' , text : 'result' } ] ,
184181 } ) ;
185182 } ) . not . toThrow ( ) ;
186-
183+
187184 expect ( mockSpan . end ) . toHaveBeenCalled ( ) ;
188185 } ) ;
189186
190187 it ( 'handles transport with circular references' , ( ) => {
191188 const transport = createMockTransport ( ) as any ;
192189 transport . self = transport ; // Create circular reference
193190 const requestId = 'test-request-12' ;
194-
191+
195192 // Should work with circular references
196193 expect ( ( ) => {
197194 storeSpanForRequest ( transport , requestId , mockSpan , 'tools/call' ) ;
198195 completeSpanFromToolResult ( transport , requestId , {
199196 content : [ { type : 'text' , text : 'result' } ] ,
200197 } ) ;
201198 } ) . not . toThrow ( ) ;
202-
199+
203200 expect ( mockSpan . end ) . toHaveBeenCalled ( ) ;
204201 } ) ;
205202 } ) ;
206- } ) ;
203+ } ) ;
0 commit comments