Skip to content

Commit

Permalink
Merge pull request #3380 from wwalser/reusable-booms
Browse files Browse the repository at this point in the history
Ensure Boom objects can be reused - Fix for issue #3378
  • Loading branch information
hueniverse authored Nov 29, 2016
2 parents db8ffbf + f9c51ef commit 4596dd9
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/transmit.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ internals.marshal = function (request, next) {

internals.fail = function (request, boom, callback) {

const error = boom.output;
const error = Hoek.clone(boom.output);
const response = new Response(error.payload, request);
response._error = boom;
response.code(error.statusCode);
Expand Down
84 changes: 84 additions & 0 deletions test/transmit.js
Original file line number Diff line number Diff line change
Expand Up @@ -1400,6 +1400,90 @@ describe('transmission', () => {
});
});

it('boom object reused does not affect encoding header.', (done) => {

const error = Boom.badRequest();
const data = JSON.stringify({
statusCode: error.output.statusCode,
error: error.message
});

const server = new Hapi.Server();
server.connection();

const handler = function (request, reply) {

return reply(error);
};

server.route({ method: 'GET', path: '/', handler });
server.start((err) => {

expect(err).to.not.exist();

const uri = 'http://localhost:' + server.info.port;

Zlib.gzip(new Buffer(data), (err, zipped) => {

expect(err).to.not.exist();

Wreck.get(uri, { headers: { 'accept-encoding': 'gzip' } }, (err, res, body) => {

expect(err).to.not.exist();
expect(body.toString()).to.equal(zipped.toString());

Wreck.get(uri, { headers: { 'accept-encoding': 'gzip' } }, (err2, res2, body2) => {

expect(err2).to.not.exist();
expect(body2.toString()).to.equal(zipped.toString());
server.stop(done);
});
});
});
});
});

it('Error reused does not affect encoding header.', (done) => {

const error = new Error('something went wrong');
const wrappedError = Boom.wrap(error);
const data = JSON.stringify(wrappedError.output.payload);

const server = new Hapi.Server();
server.connection();

const handler = function (request, reply) {

return reply(error);
};

server.route({ method: 'GET', path: '/', handler });
server.start((err) => {

expect(err).to.not.exist();

const uri = 'http://localhost:' + server.info.port;

Zlib.gzip(new Buffer(data), (err, zipped) => {

expect(err).to.not.exist();

Wreck.get(uri, { headers: { 'accept-encoding': 'gzip' } }, (err, res, body) => {

expect(err).to.not.exist();
expect(body.toString()).to.equal(zipped.toString());

Wreck.get(uri, { headers: { 'accept-encoding': 'gzip' } }, (err2, res2, body2) => {

expect(err2).to.not.exist();
expect(body2.toString()).to.equal(zipped.toString());
server.stop(done);
});
});
});
});
});

it('returns an identity response on a post request when accept-encoding is missing', (done) => {

const data = '{"test":"true"}';
Expand Down

0 comments on commit 4596dd9

Please sign in to comment.