cookies are now parsed and populated on ctx.cookie by deault
[squeep-api-dingus] / test / lib / dingus.js
index 8913436980c22cd5ad076af0dd39f2f722625381..01094a7c8e94bc9647411b422d76f8339783a0cd 100644 (file)
@@ -12,7 +12,7 @@ const Enum = require('../../lib/enum');
 
 const noExpectedException = 'did not get expected exception';
 
-const _nop = () => {};
+const _nop = () => undefined;
 const _logFn = (process.env['VERBOSE_TESTS'] && console.log) || _nop;
 const noLogger = {
   debug: _logFn,
@@ -180,6 +180,71 @@ describe('Dingus', function () {
     });
   }); // clientAddressContext
 
+  describe('ingestCookie', function () {
+    let req, res, ctx;
+    beforeEach(function () {
+      req = {
+        getHeader: sinon.stub(),
+      };
+      ctx = {};
+    });
+    it('covers no header', function () {
+      const expected = {};
+      Dingus.ingestCookie(req, res, ctx);
+      assert.deepStrictEqual(ctx.cookie, expected);
+    });
+    it('covers non variable', function () {
+      req.getHeader.returns('foo');
+      const expected = {
+        foo: null,
+      };
+      Dingus.ingestCookie(req, res, ctx);
+      assert.deepStrictEqual(ctx.cookie, expected);
+    });
+    it('parses cookies', function () {
+      req.getHeader.returns('foo=bar; baz="quux"');
+      const expected = {
+        foo: 'bar',
+        baz: 'quux',
+      };
+      Dingus.ingestCookie(req, res, ctx);
+      assert.deepStrictEqual(ctx.cookie, expected);
+    });
+    it('parses nulls', function () {
+      req.getHeader.returns('foo=; bar=');
+      const expected = {
+        foo: '',
+        bar: '',
+      };
+      Dingus.ingestCookie(req, res, ctx);
+      assert.deepStrictEqual(ctx.cookie, expected);
+    });
+    it('parses non-uri-encoded', function () {
+      req.getHeader.returns('foo%=%qux');
+      const expected = {
+        'foo%': '%qux',
+      };
+      Dingus.ingestCookie(req, res, ctx);
+      assert.deepStrictEqual(ctx.cookie, expected);
+    });
+    it('covers nameless cookie', function () {
+      req.getHeader.returns('=bar');
+      const expected = {
+      };
+      Dingus.ingestCookie(req, res, ctx);
+      assert.deepStrictEqual(ctx.cookie, expected);
+
+    });
+    it('covers duplicate cookie', function () {
+      req.getHeader.returns('foo=bar; foo="quux"');
+      const expected = {
+        foo: 'bar',
+      };
+      Dingus.ingestCookie(req, res, ctx);
+      assert.deepStrictEqual(ctx.cookie, expected);
+    });
+  }); // ingestCookie
+
   describe('getRequestContentType', function () {
     let req;
     beforeEach(function () {