From ff19bab386b5b2c3296827e8a975ccec0fbb46ea Mon Sep 17 00:00:00 2001 From: Christopher Blasnik Date: Tue, 28 Jul 2015 17:23:35 +0200 Subject: [PATCH] plugins.buffer: do not ignore `buffer:false` on request level --- lib/plugins/buffer.js | 3 ++- test/test-http-buffer.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/plugins/buffer.js b/lib/plugins/buffer.js index 0639b53..67655fd 100644 --- a/lib/plugins/buffer.js +++ b/lib/plugins/buffer.js @@ -21,7 +21,8 @@ BufferPlugin.prototype._setup = function() { this._rail.on('plugin-response', function(call, options, response) { // HEAD responses are buffered too, acting as stream terminator - if (self.default || options.buffer && options.buffer !== false) { + if (self.default && options.buffer !== false || + !self.default && options.buffer === true) { self.intercept(call); } }); diff --git a/test/test-http-buffer.js b/test/test-http-buffer.js index 3487c8b..33e650e 100644 --- a/test/test-http-buffer.js +++ b/test/test-http-buffer.js @@ -50,6 +50,37 @@ suite('http:buffer', function() { }); + test('call w/ buffer=false (request)', function(done) { + onrequest = function(request, response) { + response.end('pong'); + }; + + rail.call({ + proto: 'http', + port: common.port, + buffer: false + }, function(response) { + assert.strictEqual(response.statusCode, 200); + + assert(!response.buffer); + assert(response instanceof http.IncomingMessage); + + var data = []; + response.on('readable', function() { + data.push(new Buffer(response.read())); + }); + + response.on('end', function() { + var data_ = Buffer.concat(data); + assert.strictEqual(data_.length, 4); + assert.strictEqual(data_.toString(), 'pong'); + done(); + }); + + }).end(); + }); + + suiteTeardown(function(done) { server.close(done); });