1
- import { Event } from '../src' ;
1
+ import { Runtime } from '@sentry/types' ;
2
+
3
+ import { Event , Request , User } from '../src' ;
2
4
import { parseRequest } from '../src/handlers' ;
3
5
4
6
describe ( 'parseRequest' , ( ) => {
@@ -21,12 +23,12 @@ describe('parseRequest', () => {
21
23
describe ( 'parseRequest.contexts runtime' , ( ) => {
22
24
test ( 'runtime name must contain node' , ( ) => {
23
25
const parsedRequest : Event = parseRequest ( { } , mockReq ) ;
24
- expect ( parsedRequest . contexts . runtime . name ) . toEqual ( 'node' ) ;
26
+ expect ( ( parsedRequest . contexts ! . runtime as Runtime ) . name ) . toEqual ( 'node' ) ;
25
27
} ) ;
26
28
27
29
test ( 'runtime version must contain current node version' , ( ) => {
28
30
const parsedRequest : Event = parseRequest ( { } , mockReq ) ;
29
- expect ( parsedRequest . contexts . runtime . version ) . toEqual ( process . version ) ;
31
+ expect ( ( parsedRequest . contexts ! . runtime as Runtime ) . version ) . toEqual ( process . version ) ;
30
32
} ) ;
31
33
32
34
test ( 'runtime disbaled by options' , ( ) => {
@@ -42,17 +44,27 @@ describe('parseRequest', () => {
42
44
const CUSTOM_USER_KEYS = [ 'custom_property' ] ;
43
45
44
46
test ( 'parseRequest.user only contains the default properties from the user' , ( ) => {
45
- const parsedRequest : Event = parseRequest ( { } , mockReq , {
46
- user : DEFAULT_USER_KEYS ,
47
- } ) ;
48
- expect ( Object . keys ( parsedRequest . user as any [ ] ) ) . toEqual ( DEFAULT_USER_KEYS ) ;
47
+ const parsedRequest : Event = parseRequest ( { } , mockReq ) ;
48
+ expect ( Object . keys ( parsedRequest . user as User ) ) . toEqual ( DEFAULT_USER_KEYS ) ;
49
49
} ) ;
50
50
51
51
test ( 'parseRequest.user only contains the custom properties specified in the options.user array' , ( ) => {
52
52
const parsedRequest : Event = parseRequest ( { } , mockReq , {
53
53
user : CUSTOM_USER_KEYS ,
54
54
} ) ;
55
- expect ( Object . keys ( parsedRequest . user as any [ ] ) ) . toEqual ( CUSTOM_USER_KEYS ) ;
55
+ expect ( Object . keys ( parsedRequest . user as User ) ) . toEqual ( CUSTOM_USER_KEYS ) ;
56
+ } ) ;
57
+
58
+ test ( 'parseRequest.user doesnt blow up when someone passes non-object value' , ( ) => {
59
+ const parsedRequest : Event = parseRequest (
60
+ { } ,
61
+ {
62
+ ...mockReq ,
63
+ // @ts -ignore
64
+ user : 'wat' ,
65
+ } ,
66
+ ) ;
67
+ expect ( Object . keys ( parsedRequest . user as User ) ) . toEqual ( [ ] ) ;
56
68
} ) ;
57
69
} ) ;
58
70
@@ -92,15 +104,15 @@ describe('parseRequest', () => {
92
104
test ( 'parseRequest.request only contains the default set of properties from the request' , ( ) => {
93
105
const DEFAULT_REQUEST_PROPERTIES = [ 'cookies' , 'data' , 'headers' , 'method' , 'query_string' , 'url' ] ;
94
106
const parsedRequest : Event = parseRequest ( { } , mockReq ) ;
95
- expect ( Object . keys ( parsedRequest . request as { } ) ) . toEqual ( DEFAULT_REQUEST_PROPERTIES ) ;
107
+ expect ( Object . keys ( parsedRequest . request as Request ) ) . toEqual ( DEFAULT_REQUEST_PROPERTIES ) ;
96
108
} ) ;
97
109
98
110
test ( 'parseRequest.request only contains the specified properties in the options.request array' , ( ) => {
99
111
const INCLUDED_PROPERTIES = [ 'data' , 'headers' , 'query_string' , 'url' ] ;
100
112
const parsedRequest : Event = parseRequest ( { } , mockReq , {
101
113
request : INCLUDED_PROPERTIES ,
102
114
} ) ;
103
- expect ( Object . keys ( parsedRequest . request as { } ) ) . toEqual ( INCLUDED_PROPERTIES ) ;
115
+ expect ( Object . keys ( parsedRequest . request as Request ) ) . toEqual ( INCLUDED_PROPERTIES ) ;
104
116
} ) ;
105
117
106
118
test ( 'parseRequest.request skips `body` property for GET and HEAD requests' , ( ) => {
0 commit comments