1
- import { NodeBackend } from '../../src' ;
1
+ import { NodeBackend , SentryEvent } from '../../src' ;
2
2
import { LinkedErrors } from '../../src/integrations/linkederrors' ;
3
3
4
4
let linkedErrors : LinkedErrors ;
@@ -14,26 +14,37 @@ describe('LinkedErrors', () => {
14
14
15
15
describe ( 'handler' , ( ) => {
16
16
it ( 'should bail out if event doesnt contain exception' , async ( ) => {
17
+ expect . assertions ( 2 ) ;
17
18
const spy = jest . spyOn ( linkedErrors , 'walkErrorTree' ) ;
18
19
const event = {
19
20
message : 'foo' ,
20
21
} ;
21
- const result = await linkedErrors . handler ( event ) ;
22
- expect ( spy . mock . calls . length ) . toEqual ( 0 ) ;
23
- expect ( result ) . toEqual ( event ) ;
22
+ return linkedErrors . handler ( event ) . then ( result => {
23
+ expect ( spy . mock . calls . length ) . toEqual ( 0 ) ;
24
+ expect ( result ) . toEqual ( event ) ;
25
+ } ) ;
24
26
} ) ;
25
27
26
28
it ( 'should bail out if event contains exception, but no hint' , async ( ) => {
29
+ expect . assertions ( 2 ) ;
27
30
const spy = jest . spyOn ( linkedErrors , 'walkErrorTree' ) ;
28
31
const one = new Error ( 'originalException' ) ;
29
32
const backend = new NodeBackend ( { } ) ;
30
- const event = await backend . eventFromException ( one ) ;
31
- const result = await linkedErrors . handler ( event ) ;
32
- expect ( spy . mock . calls . length ) . toEqual ( 0 ) ;
33
- expect ( result ) . toEqual ( event ) ;
33
+ let event : SentryEvent | undefined ;
34
+ return backend
35
+ . eventFromException ( one )
36
+ . then ( eventFromException => {
37
+ event = eventFromException ;
38
+ return linkedErrors . handler ( eventFromException ) ;
39
+ } )
40
+ . then ( result => {
41
+ expect ( spy . mock . calls . length ) . toEqual ( 0 ) ;
42
+ expect ( result ) . toEqual ( event ) ;
43
+ } ) ;
34
44
} ) ;
35
45
36
46
it ( 'should call walkErrorTree if event contains exception and hint with originalException' , async ( ) => {
47
+ expect . assertions ( 1 ) ;
37
48
const spy = jest . spyOn ( linkedErrors , 'walkErrorTree' ) . mockImplementation (
38
49
async ( ) =>
39
50
new Promise < [ ] > ( resolve => {
@@ -42,39 +53,48 @@ describe('LinkedErrors', () => {
42
53
) ;
43
54
const one = new Error ( 'originalException' ) ;
44
55
const backend = new NodeBackend ( { } ) ;
45
- const event = await backend . eventFromException ( one ) ;
46
- await linkedErrors . handler ( event , {
47
- originalException : one ,
48
- } ) ;
49
- expect ( spy . mock . calls . length ) . toEqual ( 1 ) ;
56
+ return backend . eventFromException ( one ) . then ( event =>
57
+ linkedErrors
58
+ . handler ( event , {
59
+ originalException : one ,
60
+ } )
61
+ . then ( _ => {
62
+ expect ( spy . mock . calls . length ) . toEqual ( 1 ) ;
63
+ } ) ,
64
+ ) ;
50
65
} ) ;
51
66
52
67
it ( 'should recursively walk error to find linked exceptions and assign them to the event' , async ( ) => {
68
+ expect . assertions ( 10 ) ;
53
69
const one
10000
span>: ExtendedError = new Error ( 'one' ) ;
54
70
const two : ExtendedError = new TypeError ( 'two' ) ;
55
71
const three : ExtendedError = new SyntaxError ( 'three' ) ;
56
72
one . cause = two ;
57
73
two . cause = three ;
58
74
59
75
const backend = new NodeBackend ( { } ) ;
60
- const event = await backend . eventFromException ( one ) ;
61
- const result = await linkedErrors . handler ( event , {
62
- originalException : one ,
63
- } ) ;
64
-
65
- expect ( result ! . exception ! . values ! . length ) . toEqual ( 3 ) ;
66
- expect ( result ! . exception ! . values ! [ 0 ] . type ) . toEqual ( 'SyntaxError' ) ;
67
- expect ( result ! . exception ! . values ! [ 0 ] . value ) . toEqual ( 'three' ) ;
68
- expect ( result ! . exception ! . values ! [ 0 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
69
- expect ( result ! . exception ! . values ! [ 1 ] . type ) . toEqual ( 'TypeError' ) ;
70
- expect ( result ! . exception ! . values ! [ 1 ] . value ) . toEqual ( 'two' ) ;
71
- expect ( result ! . exception ! . values ! [ 1 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
72
- expect ( result ! . exception ! . values ! [ 2 ] . type ) . toEqual ( 'Error' ) ;
73
- expect ( result ! . exception ! . values ! [ 2 ] . value ) . toEqual ( 'one' ) ;
74
- expect ( result ! . exception ! . values ! [ 2 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
76
+ return backend . eventFromException ( one ) . then ( event =>
77
+ linkedErrors
78
+ . handler ( event , {
79
+ originalException : one ,
80
+ } )
81
+ . then ( result => {
82
+ expect ( result ! . exception ! . values ! . length ) . toEqual ( 3 ) ;
83
+ expect ( result ! . exception ! . values ! [ 0 ] . type ) . toEqual ( 'SyntaxError' ) ;
84
+ expect ( result ! . exception ! . values ! [ 0 ] . value ) . toEqual ( 'three' ) ;
85
+ expect ( result ! . exception ! . values ! [ 0 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
86
+ expect ( result ! . exception ! . values ! [ 1 ] . type ) . toEqual ( 'TypeError' ) ;
87
+ expect ( result ! . exception ! . values ! [ 1 ] . value ) . toEqual ( 'two' ) ;
88
+ expect ( result ! . exception ! . values ! [ 1 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
89
+ expect ( result ! . exception ! . values ! [ 2 ] . type ) . toEqual ( 'Error' ) ;
90
+ expect ( result ! . exception ! . values ! [ 2 ] . value ) . toEqual ( 'one' ) ;
91
+ expect ( result ! . exception ! . values ! [ 2 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
92
+ } ) ,
93
+ ) ;
75
94
} ) ;
76
95
77
96
it ( 'should allow to change walk key' , async ( ) => {
97
+ expect . assertions ( 10 ) ;
78
98
linkedErrors = new LinkedErrors ( {
79
99
key : 'reason' ,
80
100
} ) ;
@@ -86,24 +106,28 @@ describe('LinkedErrors', () => {
86
106
two . reason = three ;
87
107
88
108
const backend = new NodeBackend ( { } ) ;
89
- const event = await backend . eventFromException ( one ) ;
90
- const result = await linkedErrors . handler ( event , {
91
- originalException : one ,
92
- } ) ;
93
-
94
- expect ( result ! . exception ! . values ! . length ) . toEqual ( 3 ) ;
95
- expect ( result ! . exception ! . values ! [ 0 ] . type ) . toEqual ( 'SyntaxError' ) ;
96
- expect ( result ! . exception ! . values ! [ 0 ] . value ) . toEqual ( 'three' ) ;
97
- expect ( result ! . exception ! . values ! [ 0 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
98
- expect ( result ! . exception ! . values ! [ 1 ] . type ) . toEqual ( 'TypeError' ) ;
99
- expect ( result ! . exception ! . values ! [ 1 ] . value ) . toEqual ( 'two' ) ;
100
- expect ( result ! . exception ! . values ! [ 1 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
101
- expect ( result ! . exception ! . values ! [ 2 ] . type ) . toEqual ( 'Error' ) ;
102
- expect ( result ! . exception ! . values ! [ 2 ] . value ) . toEqual ( 'one' ) ;
103
- expect ( result ! . exception ! . values ! [ 2 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
109
+ return backend . eventFromException ( one ) . then ( event =>
110
+ linkedErrors
111
+ . handler ( event , {
112
+ originalException : one ,
113
+ } )
114
+ . then ( result => {
115
+ expect ( result ! . exception ! . values ! . length ) . toEqual ( 3 ) ;
116
+ expect ( result ! . exception ! . values ! [ 0 ] . type ) . toEqual ( 'SyntaxError' ) ;
117
+ expect ( result ! . exception ! . values ! [ 0 ] . value ) . toEqual ( 'three' ) ;
118
+ expect ( result ! . exception ! . values ! [ 0 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
119
+ expect ( result ! . exception ! . values ! [ 1 ] . type ) . toEqual ( 'TypeError' ) ;
120
+ expect ( result ! . exception ! . values ! [ 1 ] . value ) . toEqual ( 'two' ) ;
121
+ expect ( result ! . exception ! . values ! [ 1 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
122
+ expect ( result ! . exception ! . values ! [ 2 ] . type ) . toEqual ( 'Error' ) ;
123
+ expect ( result ! . exception ! . values ! [ 2 ] . value ) . toEqual ( 'one' ) ;
124
+ expect ( result ! . exception ! . values ! [ 2 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
125
+ } ) ,
126
+ ) ;
104
127
} ) ;
105
128
106
129
it ( 'should allow to change stack size limit' , async ( ) => {
130
+ expect . assertions ( 7 ) ;
107
131
linkedErrors = new LinkedErrors ( {
108
132
limit : 2 ,
109
133
} ) ;
@@ -115,18 +139,21 @@ describe('LinkedErrors', () => {
115
139
two . cause = three ;
116
140
117
141
const backend = new NodeBackend ( { } ) ;
118
- const event = await backend . eventFromException ( one ) ;
119
- const result = await linkedErrors . handler ( event , {
120
- originalException : one ,
121
- } ) ;
122
-
123
- expect ( result ! . exception ! . values ! . length ) . toEqual ( 2 ) ;
124
- expect ( result ! . exception ! . values ! [ 0 ] . type ) . toEqual ( 'TypeError' ) ;
125
- expect ( result ! . exception ! . values ! [ 0 ] . value ) . toEqual ( 'two' ) ;
126
- expect ( result ! . exception ! . values ! [ 0 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
127
- expect ( result ! . exception ! . values ! [ 1 ] . type ) . toEqual ( 'Error' ) ;
128
- expect ( result ! . exception ! . values ! [ 1 ] . value ) . toEqual ( 'one' ) ;
129
- expect ( result ! . exception ! . values ! [ 1 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
142
+ return backend . eventFromException ( one ) . then ( event =>
143
+ linkedErrors
144
+ . handler ( event , {
145
+ originalException : one ,
146
+ } )
147
+ . then ( result => {
148
+ expect ( result ! . exception ! . values . length ) . toEqual ( 2 ) ;
149
+ expect ( result ! . exception ! . values ! [ 0 ] . type ) . toEqual ( 'TypeError' ) ;
150
+ expect ( result ! . exception ! . values ! [ 0 ] . value ) . toEqual ( 'two' ) ;
151
+ expect ( result ! . exception ! . values ! [ 0 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
152
+ expect ( result ! . exception ! . values ! [ 1 ] . type ) . toEqual ( 'Error' ) ;
153
+ expect ( result ! . exception ! . values ! [ 1 ] . value ) . toEqual ( 'one' ) ;
154
+ expect ( result ! . exception ! . values ! [ 1 ] . stacktrace ) . toHaveProperty ( 'frames' ) ;
155
+ } ) ,
156
+ ) ;
130
157
} ) ;
131
158
} ) ;
132
159
} ) ;
0 commit comments