@@ -3,50 +3,97 @@ import * as path from 'path';
33import { getAPIResponse , runServer } from '../../../../utils/index' ;
44import { TestAPIResponse } from '../server' ;
55
6- test ( 'Should assign ` baggage` header which contains 3rd party trace baggage data to an outgoing request .' , async ( ) => {
6+ test ( 'Should not overwrite baggage if the incoming request already has Sentry baggage data.' , async ( ) => {
77 const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
88
99 const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , {
10- baggage : 'foo=bar,bar=baz ' ,
10+ baggage : 'sentry-version=2.0.0,sentry-environment=myEnv ' ,
1111 } ) ) as TestAPIResponse ;
1212
1313 expect ( response ) . toBeDefined ( ) ;
1414 expect ( response ) . toMatchObject ( {
1515 test_data : {
1616 host : 'somewhere.not.sentry' ,
17- baggage : 'foo=bar,bar=baz, sentry-environment=prod ,sentry-release=1.0 ' ,
17+ baggage : 'sentry-version=2.0.0 ,sentry-environment=myEnv ' ,
1818 } ,
1919 } ) ;
2020} ) ;
2121
22- test ( 'Should not overwrite baggage if the incoming request already has Sentry baggage data .' , async ( ) => {
22+ test ( 'Should pass along sentry and 3rd party trace baggage data from an incoming to an outgoing request .' , async ( ) => {
2323 const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
2424
2525 const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , {
26- baggage : 'sentry-version=2.0.0,sentry-environment=myEnv' ,
26+ baggage : 'sentry-version=2.0.0,sentry-environment=myEnv,dogs=great ' ,
2727 } ) ) as TestAPIResponse ;
2828
2929 expect ( response ) . toBeDefined ( ) ;
3030 expect ( response ) . toMatchObject ( {
3131 test_data : {
3232 host : 'somewhere.not.sentry' ,
33- baggage : ' sentry-version=2.0.0,sentry-environment=myEnv',
33+ baggage : expect . stringContaining ( 'dogs=great, sentry-version=2.0.0,sentry-environment=myEnv') ,
3434 } ,
3535 } ) ;
3636} ) ;
3737
38- test ( 'Should pass along sentry and 3rd party trace baggage data from an incoming to an outgoing request. ' , async ( ) => {
38+ test ( 'Should propagate empty baggage if sentry- trace header is present in incoming request but no baggage header ' , async ( ) => {
3939 const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
4040
4141 const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , {
42- baggage : 'sentry-version=2.0.0,sentry-environment=myEnv,dogs=great ' ,
42+ 'sentry-trace' : ' ',
4343 } ) ) as TestAPIResponse ;
4444
4545 expect ( response ) . toBeDefined ( ) ;
4646 expect ( response ) . toMatchObject ( {
4747 test_data : {
4848 host : 'somewhere.not.sentry' ,
49- baggage : expect . stringContaining ( 'dogs=great,sentry-version=2.0.0,sentry-environment=myEnv' ) ,
49+ baggage : '' ,
50+ } ,
51+ } ) ;
52+ } ) ;
53+
54+ test ( 'Should propagate empty sentry and original 3rd party baggage if sentry-trace header is present' , async ( ) => {
55+ const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
56+
57+ const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , {
58+ 'sentry-trace' : '' ,
59+ baggage : 'foo=bar' ,
60+ } ) ) as TestAPIResponse ;
61+
62+ expect ( response ) . toBeDefined ( ) ;
63+ expect ( response ) . toMatchObject ( {
64+ test_data : {
65+ host : 'somewhere.not.sentry' ,
66+ baggage : 'foo=bar' ,
67+ } ,
68+ } ) ;
69+ } ) ;
70+
71+ test ( 'Should populate and propagate sentry baggage if sentry-trace header does not exist' , async ( ) => {
72+ const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
73+
74+ const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , { } ) ) as TestAPIResponse ;
75+
76+ expect ( response ) . toBeDefined ( ) ;
77+ expect ( response ) . toMatchObject ( {
78+ test_data : {
79+ host : 'somewhere.not.sentry' ,
80+ baggage : 'sentry-environment=prod,sentry-release=1.0' ,
81+ } ,
82+ } ) ;
83+ } ) ;
84+
85+ test ( 'Should populate Sentry and propagate 3rd party content if sentry-trace header does not exist' , async ( ) => {
86+ const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
87+
88+ const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , {
89+ baggage : 'foo=bar,bar=baz' ,
90+ } ) ) as TestAPIResponse ;
91+
92+ expect ( response ) . toBeDefined ( ) ;
93+ expect ( response ) . toMatchObject ( {
94+ test_data : {
95+ host : 'somewhere.not.sentry' ,
96+ baggage : 'foo=bar,bar=baz,sentry-environment=prod,sentry-release=1.0' ,
5097 } ,
5198 } ) ;
5299} ) ;
0 commit comments