Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"once": "^1.4.0",
"parseurl": "^1.3.3",
"proxy-addr": "^2.0.7",
"qs": "^6.14.0",
"qs": "^6.14.1",
"range-parser": "^1.2.1",
"router": "^2.2.0",
"send": "^1.1.0",
Expand Down
37 changes: 37 additions & 0 deletions test/req.query.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
var assert = require('node:assert')
var express = require('../')
, request = require('supertest');
var qs = require('qs');

describe('req', function(){
describe('.query', function(){
Expand Down Expand Up @@ -88,6 +89,42 @@ describe('req', function(){
/unknown value.*query parser/)
});
});

describe('when "query parser" enforces arrayLimit on bracket notation', function () {
it('should returns 500 when throwOnLimitExceeded is enabled and limit is surpassed', function (done) {
var app = createApp(
function (str) {
return qs.parse(str, { allowPrototypes: true, arrayLimit: 2, throwOnLimitExceeded: true } );
}
);

request(app)
.get('/?a[]=1&a[]=2&a[]=3')
.expect(function (res) {
if (Array.isArray(res.body.a) && res.body.a.length > 2) {
throw new Error('arrayLimit ignored for bracket notation');
}
})
.expect(500, done);
});

it('allows arrays up to the arrayLimit without error', function (done) {
var app = createApp(
function (str) {
return qs.parse(str, { allowPrototypes: true, arrayLimit: 2 } );
}
);

request(app)
.get('/?a[]=1&a[]=2&a[]=3')
.expect(function (res) {
if (Array.isArray(res.body.a) && res.body.a.length > 2) {
throw new Error('arrayLimit ignored for bracket notation');
}
})
.expect(200, done);
});
});
})
})

Expand Down