Skip to content

Commit

Permalink
Closes #1401
Browse files Browse the repository at this point in the history
  • Loading branch information
Eran Hammer committed Feb 8, 2014
1 parent 3dfbdb0 commit 945febf
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
3 changes: 1 addition & 2 deletions lib/payload.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ exports.read = function (request, next) {
request.mime = mime;

if (request.route.payload.allow &&
((Array.isArray(request.route.payload.allow) && request.route.payload.allow.indexOf(mime) === -1) ||
request.route.payload.allow !== mime)) {
request.route.payload.allow.indexOf(mime) === -1) {

return failActionNext(Boom.unsupportedMediaType());
}
Expand Down
3 changes: 3 additions & 0 deletions lib/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ exports = module.exports = internals.Route = function (options, server, env) {
this.settings.payload.maxBytes = this.settings.payload.maxBytes || this.server.settings.payload.maxBytes;
this.settings.payload.uploads = this.settings.payload.uploads || this.server.settings.payload.uploads;
this.settings.payload.failAction = this.settings.payload.failAction || 'error';
if (this.settings.payload.allow) {
this.settings.payload.allow = [].concat(this.settings.payload.allow);
}
}

Utils.assert(!this.settings.validate.payload || (this.settings.payload && this.settings.payload.parse), 'Route payload must be set to \'parse\' when payload validation enabled:', options.path);
Expand Down
20 changes: 20 additions & 0 deletions test/integration/payload.js
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,7 @@ describe('Payload', function () {
server.route({ method: 'POST', path: '/override', config: { handler: handler, payload: { override: 'application/json' } } });
server.route({ method: 'POST', path: '/text', config: { handler: textHandler } });
server.route({ method: 'POST', path: '/textOnly', config: { handler: textHandler, payload: { allow: 'text/plain' } } });
server.route({ method: 'POST', path: '/textOnlyArray', config: { handler: textHandler, payload: { allow: ['text/plain'] } } });
server.route({ method: '*', path: '/any', handler: handler });

before(function (done) {
Expand Down Expand Up @@ -621,6 +622,25 @@ describe('Payload', function () {
});
});

it('returns 200 on text mime type when allowed (array)', function (done) {

server.inject({ method: 'POST', url: '/textOnlyArray', payload: 'testing123', headers: { 'content-type': 'text/plain' } }, function (res) {

expect(res.statusCode).to.equal(200);
expect(res.result).to.equal('testing123+456');
done();
});
});

it('returns 415 on nonn text mime type when disallowed (array)', function (done) {

server.inject({ method: 'POST', url: '/textOnlyArray', payload: 'testing123', headers: { 'content-type': 'application/octet-stream' } }, function (res) {

expect(res.statusCode).to.equal(415);
done();
});
});

it('parses application/x-www-form-urlencoded', function (done) {

var server = new Hapi.Server();
Expand Down

0 comments on commit 945febf

Please sign in to comment.