1- import { Event } from '../src' ;
1+ import { Runtime } from '@sentry/types' ;
2+
3+ import { Event , Request , User } from '../src' ;
24import { parseRequest } from '../src/handlers' ;
35
46describe ( 'parseRequest' , ( ) => {
@@ -21,12 +23,12 @@ describe('parseRequest', () => {
2123 describe ( 'parseRequest.contexts runtime' , ( ) => {
2224 test ( 'runtime name must contain node' , ( ) => {
2325 const parsedRequest : Event = parseRequest ( { } , mockReq ) ;
24- expect ( parsedRequest . contexts . runtime . name ) . toEqual ( 'node' ) ;
26+ expect ( ( parsedRequest . contexts ! . runtime as Runtime ) . name ) . toEqual ( 'node' ) ;
2527 } ) ;
2628
2729 test ( 'runtime version must contain current node version' , ( ) => {
2830 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 ) ;
3032 } ) ;
3133
3234 test ( 'runtime disbaled by options' , ( ) => {
@@ -42,17 +44,27 @@ describe('parseRequest', () => {
4244 const CUSTOM_USER_KEYS = [ 'custom_property' ] ;
4345
4446 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 ) ;
4949 } ) ;
5050
5151 test ( 'parseRequest.user only contains the custom properties specified in the options.user array' , ( ) => {
5252 const parsedRequest : Event = parseRequest ( { } , mockReq , {
5353 user : CUSTOM_USER_KEYS ,
5454 } ) ;
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 ( [ ] ) ;
5668 } ) ;
5769 } ) ;
5870
@@ -92,15 +104,15 @@ describe('parseRequest', () => {
92104 test ( 'parseRequest.request only contains the default set of properties from the request' , ( ) => {
93105 const DEFAULT_REQUEST_PROPERTIES = [ 'cookies' , 'data' , 'headers' , 'method' , 'query_string' , 'url' ] ;
94106 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 ) ;
96108 } ) ;
97109
98110 test ( 'parseRequest.request only contains the specified properties in the options.request array' , ( ) => {
99111 const INCLUDED_PROPERTIES = [ 'data' , 'headers' , 'query_string' , 'url' ] ;
100112 const parsedRequest : Event = parseRequest ( { } , mockReq , {
101113 request : INCLUDED_PROPERTIES ,
102114 } ) ;
103- expect ( Object . keys ( parsedRequest . request as { } ) ) . toEqual ( INCLUDED_PROPERTIES ) ;
115+ expect ( Object . keys ( parsedRequest . request as Request ) ) . toEqual ( INCLUDED_PROPERTIES ) ;
104116 } ) ;
105117
106118 test ( 'parseRequest.request skips `body` property for GET and HEAD requests' , ( ) => {
0 commit comments