1
- import { TestEnv , assertSentryTransaction } from '../../../utils/index ' ;
1
+ import { assertSentryTransaction , createRunner } from '../../../utils/runner ' ;
2
2
3
- test ( 'should create and send transactions for Express routes and spans for middlewares.' , async ( ) => {
4
- const env = await TestEnv . init ( __dirname , `${ __dirname } /server.ts` ) ;
5
- const envelope = await env . getEnvelopeRequest ( { url : `${ env . url } /express` , envelopeType : 'transaction' } ) ;
6
-
7
- expect ( envelope ) . toHaveLength ( 3 ) ;
8
-
9
- assertSentryTransaction ( envelope [ 2 ] , {
10
- contexts : {
11
- trace : {
12
- data : {
13
- url : '/test/express' ,
14
- 'http.response.status_code' : 200 ,
15
- } ,
16
- op : 'http.server' ,
17
- status : 'ok' ,
18
- tags : {
19
- 'http.status_code' : '200' ,
20
- } ,
21
- } ,
22
- } ,
23
- spans : [
24
- {
25
- description : 'corsMiddleware' ,
26
- op : 'middleware.express.use' ,
3
+ test ( 'should create and send transactions for Express routes and spans for middlewares.' , done => {
4
+ createRunner ( __dirname , 'server.ts' )
5
+ . expect ( {
6
+ transaction : transaction => {
7
+ assertSentryTransaction ( transaction , {
8
+ contexts : {
9
+ trace : {
10
+ span_id : expect . any ( String ) ,
11
+ trace_id : expect . any ( String ) ,
12
+ data : {
13
+ url : '/test/express' ,
14
+ 'http.response.status_code' : 200 ,
15
+ } ,
16
+ op : 'http.server' ,
17
+ status : 'ok' ,
18
+ tags : {
19
+ 'http.status_code' : '200' ,
20
+ } ,
21
+ } ,
22
+ } ,
23
+ spans : [
24
+ expect . objectContaining ( {
25
+ description : 'corsMiddleware' ,
26
+ op : 'middleware.express.use' ,
27
+ } ) ,
28
+ ] ,
29
+ } ) ;
27
30
} ,
28
- ] ,
29
- } ) ;
31
+ } )
32
+ . start ( done )
33
+ . makeRequest ( 'get' , '/test/express' ) ;
30
34
} ) ;
31
35
32
- test ( 'should set a correct transaction name for routes specified in RegEx' , async ( ) => {
33
- const env = await TestEnv . init ( __dirname , `${ __dirname } /server.ts` ) ;
34
- const envelope = await env . getEnvelopeRequest ( { url : `${ env . url } /regex` , envelopeType : 'transaction' } ) ;
35
-
36
- expect ( envelope ) . toHaveLength ( 3 ) ;
37
-
38
- assertSentryTransaction ( envelope [ 2 ] , {
39
- transaction : 'GET /\\/test\\/regex/' ,
40
- transaction_info : {
41
- source : 'route' ,
42
- } ,
43
- contexts : {
44
- trace : {
45
- data : {
46
- url : '/test/regex' ,
47
- 'http.response.status_code' : 200 ,
48
- } ,
49
- op : 'http.server' ,
50
- status : 'ok' ,
51
- tags : {
52
- 'http.status_code' : '200' ,
53
- } ,
36
+ test ( 'should set a correct transaction name for routes specified in RegEx' , done => {
37
+ createRunner ( __dirname , 'server.ts' )
38
+ . expect ( {
39
+ transaction : transaction => {
40
+ assertSentryTransaction ( transaction , {
41
+ transaction : 'GET /\\/test\\/regex/' ,
42
+ transaction_info : {
43
+ source : 'route' ,
44
+ } ,
45
+ contexts : {
46
+ trace : {
47
+ trace_id : expect . any ( String ) ,
48
+ span_id : expect . any ( String ) ,
49
+ data : {
50
+ url : '/test/regex' ,
51
+ 'http.response.status_code' : 200 ,
52
+ } ,
53
+ op : 'http.server' ,
54
+ status : 'ok' ,
55
+ tags : {
56
+ 'http.status_code' : '200' ,
57
+ } ,
58
+ } ,
59
+ } ,
60
+ } ) ;
54
61
} ,
55
- } ,
56
- } ) ;
62
+ } )
63
+ . start ( done )
64
+ . makeRequest ( 'get' , '/test/regex' ) ;
57
65
} ) ;
58
66
59
67
test . each ( [ [ 'array1' ] , [ 'array5' ] ] ) (
60
68
'should set a correct transaction name for routes consisting of arrays of routes' ,
61
- async segment => {
62
- const env = await TestEnv . init ( __dirname , `${ __dirname } /server.ts` ) ;
63
- const envelope = await env . getEnvelopeRequest ( { url : `${ env . url } /${ segment } ` , envelopeType : 'transaction' } ) ;
64
-
65
- expect ( envelope ) . toHaveLength ( 3 ) ;
66
-
67
- assertSentryTransaction ( envelope [ 2 ] , {
68
- transaction : 'GET /test/array1,/\\/test\\/array[2-9]' ,
69
- transaction_info : {
70
- source : 'route' ,
71
- } ,
72
- contexts : {
73
- trace : {
74
- data : {
75
- url : `/test/${ segment } ` ,
76
- 'http.response.status_code' : 200 ,
77
- } ,
78
- op : 'http.server' ,
79
- status : 'ok' ,
80
- tags : {
81
- 'http.status_code' : '200' ,
82
- } ,
69
+ ( ( segment : string , done : ( ) => void ) => {
70
+ createRunner ( __dirname , 'server.ts' )
71
+ . expect ( {
72
+ transaction : transaction => {
73
+ assertSentryTransaction ( transaction , {
74
+ transaction : 'GET /test/array1,/\\/test\\/array[2-9]' ,
75
+ transaction_info : {
76
+ source : 'route' ,
77
+ } ,
78
+ contexts : {
79
+ trace : {
80
+ trace_id : expect . any ( String ) ,
81
+ span_id : expect . any ( String ) ,
82
+ data : {
83
+ url : `/test/${ segment } ` ,
84
+ 'http.response.status_code' : 200 ,
85
+ } ,
86
+ op : 'http.server' ,
87
+ status : 'ok' ,
88
+ tags : {
89
+ 'http.status_code' : '200' ,
90
+ } ,
91
+ } ,
92
+ } ,
93
+ } ) ;
83
94
} ,
84
- } ,
85
- } ) ;
86
- } ,
95
+ } )
96
+ . start ( done )
97
+ . makeRequest ( 'get' , `/test/${ segment } ` ) ;
98
+ } ) as any ,
87
99
) ;
88
100
89
101
test . each ( [
@@ -95,29 +107,33 @@ test.each([
95
107
[ 'arr55/required/lastParam' ] ,
96
108
[ 'arr/requiredPath/optionalPath/' ] ,
97
109
[ 'arr/requiredPath/optionalPath/lastParam' ] ,
98
- ] ) ( 'should handle more complex regexes in route arrays correctly' , async segment => {
99
- const env = await TestEnv . init ( __dirname , `${ __dirname } /server.ts` ) ;
100
- const envelope = await env . getEnvelopeRequest ( { url : `${ env . url } /${ segment } ` , envelopeType : 'transaction' } ) ;
101
-
102
- expect ( envelope ) . toHaveLength ( 3 ) ;
103
-
104
- assertSentryTransaction ( envelope [ 2 ] , {
105
- transaction : 'GET /test/arr/:id,/\\/test\\/arr[0-9]*\\/required(path)?(\\/optionalPath)?\\/(lastParam)?' ,
106
- transaction_info : {
107
- source : 'route' ,
108
- } ,
109
- contexts : {
110
- trace : {
111
- data : {
112
- url : `/test/${ segment } ` ,
113
- 'http.response.status_code' : 200 ,
114
- } ,
115
- op : 'http.server' ,
116
- status : 'ok' ,
117
- tags : {
118
- 'http.status_code' : '200' ,
119
- } ,
110
+ ] ) ( 'should handle more complex regexes in route arrays correctly' , ( ( segment : string , done : ( ) => void ) => {
111
+ createRunner ( __dirname , 'server.ts' )
112
+ . expect ( {
113
+ transaction : transaction => {
114
+ assertSentryTransaction ( transaction , {
115
+ transaction : 'GET /test/arr/:id,/\\/test\\/arr[0-9]*\\/required(path)?(\\/optionalPath)?\\/(lastParam)?' ,
116
+ transaction_info : {
117
+ source : 'route' ,
118
+ } ,
119
+ contexts : {
120
+ trace : {
121
+ trace_id : expect . any ( String ) ,
122
+ span_id : expect . any ( String ) ,
123
+ data : {
124
+ url : `/test/${ segment } ` ,
125
+ 'http.response.status_code' : 200 ,
126
+ } ,
127
+ op : 'http.server' ,
128
+ status : 'ok' ,
129
+ tags : {
130
+ 'http.status_code' : '200' ,
131
+ } ,
132
+ } ,
133
+ } ,
134
+ } ) ;
120
135
} ,
121
- } ,
122
- } ) ;
123
- } ) ;
136
+ } )
137
+ . start ( done )
138
+ . makeRequest ( 'get' , `/test/${ segment } ` ) ;
139
+ } ) as any ) ;
0 commit comments