var after = require('after'); var body = require('../index.js'); var hammock = require('hammock'); var test = require('tape'); test('caching works', function t(assert) { var request = hammock.Request({ method: 'GET', headers: { 'Content-Type': 'application/json' }, url: '/somewhere' }); var response = hammock.Response(); var done = after(2, assert.end.bind(assert)); body(request, response, { cache: true }, function onBody(err, body) { assert.equal(body, 'thisbody', 'raw body has been set'); assert.pass('body is parsed'); done(); }); request.on('end', function() { body(request, response, { cache: true }, function onBody(err, body) { assert.equal(body, 'thisbody', 'cached body is provided'); assert.pass('body is parsed'); done(); }); }); request.end('thisbody'); }); test('parallel caching works', function t(assert) { var request = hammock.Request({ method: 'GET', headers: { 'Content-Type': 'application/json' }, url: '/somewhere' }); request.end('thisbody'); var response = hammock.Response(); var done = after(5, function() { process.nextTick(function() { assert.equal(request.listeners('rawBody').length, 0, 'rawBody listeners cleared'); assert.end(); }); }); for (var i = 0; i < 5; ++i) { body(request, response, { cache: true }, function onBody(err, body) { assert.equal(body, 'thisbody', 'raw body has been set'); assert.pass('body is parsed'); done(); }); } });