X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=test%2Flib%2Fdingus.js;h=01094a7c8e94bc9647411b422d76f8339783a0cd;hb=5b18a1fa46ef9c41f6089e5db259af80f3e98b0a;hp=9d471229d3a26ebde87ebfae9d53efbde46c9aaa;hpb=031c170bdaf1d9c331e6f6fc701ce6540c0e6941;p=squeep-api-dingus diff --git a/test/lib/dingus.js b/test/lib/dingus.js index 9d47122..01094a7 100644 --- a/test/lib/dingus.js +++ b/test/lib/dingus.js @@ -12,10 +12,14 @@ const Enum = require('../../lib/enum'); const noExpectedException = 'did not get expected exception'; +const _nop = () => undefined; +const _logFn = (process.env['VERBOSE_TESTS'] && console.log) || _nop; const noLogger = { - debug: () => {}, - error: () => {}, + debug: _logFn, + error: _logFn, }; +sinon.spy(noLogger, 'debug'); +sinon.spy(noLogger, 'error'); describe('Dingus', function () { let dingus; @@ -176,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 () { @@ -703,8 +772,9 @@ describe('Dingus', function () { }); it('covers no meta file', async function() { dingus._readFileInfo.resolves([null, null]); - await dingus._serveFileMetaHeaders(res, directory, fileName); + const result = await dingus._serveFileMetaHeaders(res, directory, fileName); assert(!res.setHeader.called); + assert.strictEqual(result, false); }); it('adds extra headers', async function () { dingus._readFileInfo.resolves([{}, Buffer.from(`Link: ; rel="relation" @@ -713,8 +783,9 @@ X-Folded-Header: data the fold Content-Type: image/sgi `)]); - await dingus._serveFileMetaHeaders(res, directory, fileName); + const result = await dingus._serveFileMetaHeaders(res, directory, fileName); assert(res.setHeader.called); + assert.strictEqual(result, true); }); }); // _serveFileMetaHeaders