@@ -3,50 +3,97 @@ import * as path from 'path';
3
3
import { getAPIResponse , runServer } from '../../../../utils/index' ;
4
4
import { TestAPIResponse } from '../server' ;
5
5
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 ( ) => {
7
7
const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
8
8
9
9
const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , {
10
- baggage : 'foo=bar,bar=baz ' ,
10
+ baggage : 'sentry-version=2.0.0,sentry-environment=myEnv ' ,
11
11
} ) ) as TestAPIResponse ;
12
12
13
13
expect ( response ) . toBeDefined ( ) ;
14
14
expect ( response ) . toMatchObject ( {
15
15
test_data : {
16
16
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 ' ,
18
18
} ,
19
19
} ) ;
20
20
} ) ;
21
21
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 ( ) => {
23
23
const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
24
24
25
25
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 ' ,
27
27
} ) ) as TestAPIResponse ;
28
28
29
29
expect ( response ) . toBeDefined ( ) ;
30
30
expect ( response ) . toMatchObject ( {
31
31
test_data : {
32
32
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') ,
34
34
} ,
35
35
} ) ;
36
36
} ) ;
37
37
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 ( ) => {
39
39
const url = await runServer ( __dirname , `${ path . resolve ( __dirname , '..' ) } /server.ts` ) ;
40
40
41
41
const response = ( await getAPIResponse ( new URL ( `${ url } /express` ) , {
42
- baggage : 'sentry-version=2.0.0,sentry-environment=myEnv,dogs=great ' ,
42
+ 'sentry-trace' : ' ',
43
43
} ) ) as TestAPIResponse ;
44
44
45
45
expect ( response ) . toBeDefined ( ) ;
46
46
expect ( response ) . toMatchObject ( {
47
47
test_data : {
48
48
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' ,
50
97
} ,
51
98
} ) ;
52
99
} ) ;
0 commit comments