33var assert = require ( 'node:assert' )
44var express = require ( '../' )
55 , request = require ( 'supertest' ) ;
6- var qs = require ( 'qs' ) ;
76
87describe ( 'req' , function ( ) {
98 describe ( '.query' , function ( ) {
@@ -39,22 +38,6 @@ describe('req', function(){
3938 . get ( '/?user.name=tj' )
4039 . expect ( 200 , '{"user.name":"tj"}' , done ) ;
4140 } ) ;
42-
43- it ( 'should not be able to access object prototype properties' , function ( done ) {
44- var app = createApp ( 'extended' , true ) ;
45-
46- request ( app )
47- . get ( '/?foo=yee' )
48- . expect ( 200 , / T y p e E r r o r : r e q \. q u e r y \. h a s O w n P r o p e r t y i s n o t a f u n c t i o n / , done ) ;
49- } ) ;
50-
51- it ( 'should be able to use object prototype property names as keys' , function ( done ) {
52- var app = createApp ( 'extended' , true ) ;
53-
54- request ( app )
55- . get ( '/?hasOwnProperty=yee' )
56- . expect ( 200 , '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}' , done ) ;
57- } ) ;
5841 } ) ;
5942
6043 describe ( 'when "query parser" is simple' , function ( ) {
@@ -65,22 +48,6 @@ describe('req', function(){
6548 . get ( '/?user%5Bname%5D=tj' )
6649 . expect ( 200 , '{"user[name]":"tj"}' , done ) ;
6750 } ) ;
68-
69- it ( 'should not be able to access object prototype properties' , function ( done ) {
70- var app = createApp ( 'simple' , true ) ;
71-
72- request ( app )
73- . get ( '/?foo=yee' )
74- . expect ( 200 , / T y p e E r r o r : r e q \. q u e r y \. h a s O w n P r o p e r t y i s n o t a f u n c t i o n / , done ) ;
75- } ) ;
76-
77- it ( 'should be able to use object prototype property names as keys' , function ( done ) {
78- var app = createApp ( 'simple' , true ) ;
79-
80- request ( app )
81- . get ( '/?hasOwnProperty=yee' )
82- . expect ( 200 , '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}' , done ) ;
83- } ) ;
8451 } ) ;
8552
8653 describe ( 'when "query parser" is a function' , function ( ) {
@@ -93,18 +60,6 @@ describe('req', function(){
9360 . get ( '/?user%5Bname%5D=tj' )
9461 . expect ( 200 , '{"length":17}' , done ) ;
9562 } ) ;
96-
97- // test exists to verify behavior for folks wishing to workaround our qs defaults
98- it ( 'should drop object prototype property names and be able to access object prototype properties' , function ( done ) {
99- var app = createApp (
100- function ( str ) {
101- return qs . parse ( str )
102- } , true ) ;
103-
104- request ( app )
105- . get ( '/?hasOwnProperty=biscuits' )
106- . expect ( 200 , '{"query":{},"hasOwnProperty":false}' , done ) ;
107- } ) ;
10863 } ) ;
10964
11065 describe ( 'when "query parser" disabled' , function ( ) {
@@ -115,22 +70,6 @@ describe('req', function(){
11570 . get ( '/?user%5Bname%5D=tj' )
11671 . expect ( 200 , '{}' , done ) ;
11772 } ) ;
118-
119- it ( 'should not be able to access object prototype properties' , function ( done ) {
120- var app = createApp ( 'extended' , true ) ;
121-
122- request ( app )
123- . get ( '/?foo=yee' )
124- . expect ( 200 , / T y p e E r r o r : r e q \. q u e r y \. h a s O w n P r o p e r t y i s n o t a f u n c t i o n / , done ) ;
125- } ) ;
126-
127- it ( 'should be able to use object prototype property names as keys' , function ( done ) {
128- var app = createApp ( 'extended' , true ) ;
129-
130- request ( app )
131- . get ( '/?hasOwnProperty=yee' )
132- . expect ( 200 , '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}' , done ) ;
133- } ) ;
13473 } ) ;
13574
13675 describe ( 'when "query parser" enabled' , function ( ) {
@@ -141,22 +80,6 @@ describe('req', function(){
14180 . get ( '/?user%5Bname%5D=tj' )
14281 . expect ( 200 , '{"user[name]":"tj"}' , done ) ;
14382 } ) ;
144-
145- it ( 'should not be able to access object prototype properties' , function ( done ) {
146- var app = createApp ( 'extended' , true ) ;
147-
148- request ( app )
149- . get ( '/?foo=yee' )
150- . expect ( 200 , / T y p e E r r o r : r e q \. q u e r y \. h a s O w n P r o p e r t y i s n o t a f u n c t i o n / , done ) ;
151- } ) ;
152-
153- it ( 'should be able to use object prototype property names as keys' , function ( done ) {
154- var app = createApp ( 'extended' , true ) ;
155-
156- request ( app )
157- . get ( '/?hasOwnProperty=yee' )
158- . expect ( 200 , '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}' , done ) ;
159- } ) ;
16083 } ) ;
16184
16285 describe ( 'when "query parser" an unknown value' , function ( ) {
@@ -168,25 +91,15 @@ describe('req', function(){
16891 } )
16992} )
17093
171- function createApp ( setting , isPrototypePropertyTest ) {
94+ function createApp ( setting ) {
17295 var app = express ( ) ;
17396
17497 if ( setting !== undefined ) {
17598 app . set ( 'query parser' , setting ) ;
17699 }
177100
178101 app . use ( function ( req , res ) {
179- if ( isPrototypePropertyTest ) {
180- try {
181- var hasOwnProperty = req . query . hasOwnProperty ( '✨ express ✨' ) ;
182- res . send ( { query : req . query , hasOwnProperty : hasOwnProperty } ) ;
183- } catch ( error ) {
184- res . send ( { query : req . query , error : error . toString ( ) } ) ;
185- }
186- }
187- else {
188- res . send ( req . query ) ;
189- }
102+ res . send ( req . query ) ;
190103 } ) ;
191104
192105 return app ;
0 commit comments