File tree 4 files changed +45
-8
lines changed
dev-packages/node-integration-tests
suites/tracing-experimental/hapi
packages/node/src/integrations/hapi
4 files changed +45
-8
lines changed Original file line number Diff line number Diff line change @@ -26,6 +26,14 @@ const init = async () => {
26
26
} ,
27
27
} ) ;
28
28
29
+ server . route ( {
30
+ method : 'GET' ,
31
+ path : '/error' ,
32
+ handler : ( _request , _h ) => {
33
+ throw new Error ( 'Sentry Test Error' ) ;
34
+ } ,
35
+ } ) ;
36
+
29
37
await Sentry . setupHapiErrorHandler ( server ) ;
30
38
await server . start ( ) ;
31
39
Original file line number Diff line number Diff line change @@ -25,10 +25,29 @@ describe('hapi auto-instrumentation', () => {
25
25
] ) ,
26
26
} ;
27
27
28
+ const EXPECTED_ERROR_EVENT = {
29
+ exception : {
30
+ values : [
31
+ {
32
+ type : 'Error' ,
33
+ value : 'Sentry Test Error' ,
34
+ } ,
35
+ ] ,
36
+ } ,
37
+ } ;
38
+
28
39
test ( 'CJS - should auto-instrument `@hapi/hapi` package.' , done => {
29
40
createRunner ( __dirname , 'scenario.js' )
30
41
. expect ( { transaction : EXPECTED_TRANSACTION } )
31
42
. start ( done )
32
43
. makeRequest ( 'get' , '/' ) ;
33
44
} ) ;
45
+
46
+ test ( 'CJS - should handle errors in routes.' , done => {
47
+ createRunner ( __dirname , 'scenario.js' )
48
+ . expect ( { event : EXPECTED_ERROR_EVENT } )
49
+ . expectError ( )
50
+ . start ( done )
51
+ . makeRequest ( 'get' , '/error' ) ;
52
+ } ) ;
34
53
} ) ;
Original file line number Diff line number Diff line change @@ -126,6 +126,7 @@ export function createRunner(...paths: string[]) {
126
126
let withSentryServer = false ;
127
127
let dockerOptions : DockerOptions | undefined ;
128
128
let ensureNoErrorOutput = false ;
129
+ let expectError = false ;
129
130
130
131
if ( testPath . endsWith ( '.ts' ) ) {
131
132
flags . push ( '-r' , 'ts-node/register' ) ;
@@ -136,6 +137,10 @@ export function createRunner(...paths: string[]) {
136
137
expectedEnvelopes . push ( expected ) ;
137
138
return this ;
138
139
} ,
140
+ expectError : function ( ) {
141
+ expectError = true ;
142
+ return this ;
143
+ } ,
139
144
withFlags : function ( ...args : string [ ] ) {
140
145
flags . push ( ...args ) ;
141
146
return this ;
@@ -347,7 +352,18 @@ export function createRunner(...paths: string[]) {
347
352
}
348
353
349
354
const url = `http://localhost:${ scenarioServerPort } ${ path } ` ;
350
- if ( method === 'get' ) {
355
+ if ( expectError ) {
356
+ try {
357
+ if ( method === 'get' ) {
358
+ await axios . get ( url , { headers } ) ;
359
+ } else {
360
+ await axios . post ( url , { headers } ) ;
361
+ }
362
+ } catch ( e ) {
363
+ return ;
364
+ }
365
+ return ;
366
+ } else if ( method === 'get' ) {
351
367
return ( await axios . get ( url , { headers } ) ) . data ;
352
368
} else {
353
369
return ( await axios . post ( url , { headers } ) ) . data ;
Original file line number Diff line number Diff line change @@ -23,10 +23,6 @@ function isResponseObject(response: ResponseObject | Boom): response is Response
23
23
return response && ( response as ResponseObject ) . statusCode !== undefined ;
24
24
}
25
25
26
- function isBoomObject ( response : ResponseObject | Boom ) : response is Boom {
27
- return response && ( response as Boom ) . isBoom !== undefined ;
28
- }
29
-
30
26
function isErrorEvent ( event : RequestEvent ) : event is RequestEvent {
31
27
return event && ( event as RequestEvent ) . error !== undefined ;
32
28
}
@@ -54,9 +50,7 @@ export const hapiErrorPlugin = {
54
50
const activeSpan = getActiveSpan ( ) ;
55
51
const rootSpan = activeSpan && getRootSpan ( activeSpan ) ;
56
52
57
- if ( request . response && isBoomObject ( request . response ) ) {
58
- sendErrorToSentry ( request . response ) ;
59
- } else if ( isErrorEvent ( event ) ) {
53
+ if ( isErrorEvent ( event ) ) {
60
54
sendErrorToSentry ( event . error ) ;
61
55
}
62
56
You can’t perform that action at this time.
0 commit comments