blob: 33c2811cdb9aa94cda2c5f08a4b8047049c452f4 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001var after = require('after');
2var body = require('../index.js');
3var hammock = require('hammock');
4var test = require('tape');
5
6test('caching works', function t(assert) {
7 var request = hammock.Request({
8 method: 'GET',
9 headers: {
10 'Content-Type': 'application/json'
11 },
12 url: '/somewhere'
13 });
14 var response = hammock.Response();
15
16 var done = after(2, assert.end.bind(assert));
17
18 body(request, response, { cache: true }, function onBody(err, body) {
19 assert.equal(body, 'thisbody', 'raw body has been set');
20 assert.pass('body is parsed');
21 done();
22 });
23
24 request.on('end', function() {
25 body(request, response, { cache: true }, function onBody(err, body) {
26 assert.equal(body, 'thisbody', 'cached body is provided');
27 assert.pass('body is parsed');
28 done();
29 });
30 });
31
32 request.end('thisbody');
33});
34
35test('parallel caching works', function t(assert) {
36 var request = hammock.Request({
37 method: 'GET',
38 headers: {
39 'Content-Type': 'application/json'
40 },
41 url: '/somewhere'
42 });
43 request.end('thisbody');
44 var response = hammock.Response();
45
46 var done = after(5, function() {
47 process.nextTick(function() {
48 assert.equal(request.listeners('rawBody').length, 0, 'rawBody listeners cleared');
49 assert.end();
50 });
51 });
52
53 for (var i = 0; i < 5; ++i) {
54 body(request, response, { cache: true }, function onBody(err, body) {
55 assert.equal(body, 'thisbody', 'raw body has been set');
56 assert.pass('body is parsed');
57 done();
58 });
59 }
60});