File tree Expand file tree Collapse file tree 4 files changed +45
-8
lines changed
dev-packages/node-integration-tests
suites/tracing-experimental/hapi
packages/node/src/integrations/hapi Expand file tree Collapse file tree 4 files changed +45
-8
lines changed Original file line number Diff line number Diff line change @@ -26,6 +26,14 @@ const init = async () => {
2626 } ,
2727 } ) ;
2828
29+ server . route ( {
30+ method : 'GET' ,
31+ path : '/error' ,
32+ handler : ( _request , _h ) => {
33+ throw new Error ( 'Sentry Test Error' ) ;
34+ } ,
35+ } ) ;
36+
2937 await Sentry . setupHapiErrorHandler ( server ) ;
3038 await server . start ( ) ;
3139
Original file line number Diff line number Diff line change @@ -25,10 +25,29 @@ describe('hapi auto-instrumentation', () => {
2525 ] ) ,
2626 } ;
2727
28+ const EXPECTED_ERROR_EVENT = {
29+ exception : {
30+ values : [
31+ {
32+ type : 'Error' ,
33+ value : 'Sentry Test Error' ,
34+ } ,
35+ ] ,
36+ } ,
37+ } ;
38+
2839 test ( 'CJS - should auto-instrument `@hapi/hapi` package.' , done => {
2940 createRunner ( __dirname , 'scenario.js' )
3041 . expect ( { transaction : EXPECTED_TRANSACTION } )
3142 . start ( done )
3243 . makeRequest ( 'get' , '/' ) ;
3344 } ) ;
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+ } ) ;
3453} ) ;
Original file line number Diff line number Diff line change @@ -126,6 +126,7 @@ export function createRunner(...paths: string[]) {
126126 let withSentryServer = false ;
127127 let dockerOptions : DockerOptions | undefined ;
128128 let ensureNoErrorOutput = false ;
129+ let expectError = false ;
129130
130131 if ( testPath . endsWith ( '.ts' ) ) {
131132 flags . push ( '-r' , 'ts-node/register' ) ;
@@ -136,6 +137,10 @@ export function createRunner(...paths: string[]) {
136137 expectedEnvelopes . push ( expected ) ;
137138 return this ;
138139 } ,
140+ expectError : function ( ) {
141+ expectError = true ;
142+ return this ;
143+ } ,
139144 withFlags : function ( ...args : string [ ] ) {
140145 flags . push ( ...args ) ;
141146 return this ;
@@ -347,7 +352,18 @@ export function createRunner(...paths: string[]) {
347352 }
348353
349354 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' ) {
351367 return ( await axios . get ( url , { headers } ) ) . data ;
352368 } else {
353369 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
2323 return response && ( response as ResponseObject ) . statusCode !== undefined ;
2424}
2525
26- function isBoomObject ( response : ResponseObject | Boom ) : response is Boom {
27- return response && ( response as Boom ) . isBoom !== undefined ;
28- }
29-
3026function isErrorEvent ( event : RequestEvent ) : event is RequestEvent {
3127 return event && ( event as RequestEvent ) . error !== undefined ;
3228}
@@ -54,9 +50,7 @@ export const hapiErrorPlugin = {
5450 const activeSpan = getActiveSpan ( ) ;
5551 const rootSpan = activeSpan && getRootSpan ( activeSpan ) ;
5652
57- if ( request . response && isBoomObject ( request . response ) ) {
58- sendErrorToSentry ( request . response ) ;
59- } else if ( isErrorEvent ( event ) ) {
53+ if ( isErrorEvent ( event ) ) {
6054 sendErrorToSentry ( event . error ) ;
6155 }
6256
You can’t perform that action at this time.
0 commit comments