Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/body/test/unit.js b/node_modules/body/test/unit.js
new file mode 100644
index 0000000..33c2811
--- /dev/null
+++ b/node_modules/body/test/unit.js
@@ -0,0 +1,60 @@
+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();
+        });
+    }
+});