@@ -543,26 +543,40 @@ describe('InstrumentationPatchTest', () => {
543543 const send = extractAwsSdkInstrumentation ( PATCHED_INSTRUMENTATIONS )
544544 [ '_getV3SmithyClientSendPatch' ] ( ( ...args : unknown [ ] ) => Promise . resolve ( ) )
545545 . bind ( { middlewareStack : mockedMiddlewareStack } ) ;
546+
546547 sinon
547548 . stub ( AWSXRayPropagator . prototype , 'inject' )
548- . callsFake ( ( context : OtelContext , carrier : unknown , setter : TextMapSetter ) => {
549- ( carrier as any ) [ 'isCarrierModified' ] = 'carrierIsModified' ;
549+ . callsFake ( ( context : OtelContext , carrier : any , setter : TextMapSetter ) => {
550+ carrier [ 'isCarrierModified' ] = 'carrierIsModified' ;
550551 } ) ;
551552
552553 // eslint-disable-next-line @typescript-eslint/ban-ts-comment
553554 // @ts -ignore
554555 await send ( { } , null ) ;
555556
556- const middlewareArgs : any = {
557+ // Test case 1: With existing header
558+ const existingHeader = 'test-trace-header' ;
559+ const middlewareArgsWithHeader : any = {
560+ request : {
561+ headers : { [ AWSXRAY_TRACE_ID_HEADER ] : existingHeader } ,
562+ } ,
563+ } ;
564+ await mockedMiddlewareStackInternal [ 0 ] [ 0 ] ( ( arg : any ) => Promise . resolve ( ) , null ) ( middlewareArgsWithHeader ) ;
565+ expect ( middlewareArgsWithHeader . request . headers [ 'isCarrierModified' ] ) . toEqual ( 'carrierIsModified' ) ;
566+ expect ( middlewareArgsWithHeader . request . headers [ 'X-Amzn-Trace-Id' ] ) . toEqual ( existingHeader ) ;
567+
568+ // Test case 2: Without existing header
569+ const middlewareArgsNoHeader : any = {
557570 request : {
558571 headers : { } ,
559572 } ,
560573 } ;
561- await mockedMiddlewareStackInternal [ 0 ] [ 0 ] ( ( arg : any ) => Promise . resolve ( ) , null ) ( middlewareArgs ) ;
574+ await mockedMiddlewareStackInternal [ 0 ] [ 0 ] ( ( arg : any ) => Promise . resolve ( ) , null ) ( middlewareArgsNoHeader ) ;
575+ expect ( middlewareArgsNoHeader . request . headers [ 'isCarrierModified' ] ) . toEqual ( 'carrierIsModified' ) ;
576+ expect ( middlewareArgsNoHeader . request . headers ) . not . toContain ( AWSXRAY_TRACE_ID_HEADER ) ;
562577
563- sinon . restore ( ) ;
564- expect ( middlewareArgs . request . headers [ 'isCarrierModified' ] ) . toEqual ( 'carrierIsModified' ) ;
565578 expect ( mockedMiddlewareStackInternal [ 0 ] [ 1 ] . name ) . toEqual ( '_adotInjectXrayContextMiddleware' ) ;
579+ sinon . restore ( ) ;
566580 } ) ;
567581
568582 it ( 'injects trace context header into request via propagator' , async ( ) => {
0 commit comments