X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=test%2Flib%2Fcommon.js;h=4b10d38965777c2372a4dadbc2fcd446d6af1e75;hb=HEAD;hp=a04bf614eeadac136f2df8ff44cf1519846d8221;hpb=ca35f167826c0732571da5f35e3c25881d138b79;p=squeep-api-dingus diff --git a/test/lib/common.js b/test/lib/common.js index a04bf61..06d711d 100644 --- a/test/lib/common.js +++ b/test/lib/common.js @@ -1,27 +1,12 @@ -/* eslint-disable capitalized-comments */ -/* eslint-env mocha */ 'use strict'; -const assert = require('assert'); -const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require +const assert = require('node:assert'); +const sinon = require('sinon'); const common = require('../../lib/common'); describe('common', function () { - describe('fileScope', function () { - it('names a file path', function () { - const filename = 'lib/foo/bar.js'; - const result = common.fileScope(filename)('baz'); - assert.strictEqual(result, 'bar:baz'); - }); - it('names an index path', function () { - const filename = 'lib/foo/index.js'; - const result = common.fileScope(filename)('baz'); - assert.strictEqual(result, 'foo:baz'); - }); - }); // fileScope - describe('generateETag', function () { it('generates a tag from data', function () { const expected = '"RHUvNyculE/SyROjU0LqzN0arxibrlBnazAashP8UGE"'; @@ -128,34 +113,6 @@ describe('common', function () { }); }); // pick - describe('requestLogData', function () { - it('gives data', function () { - const req = { - method: 'GET', - somethingElse: 'blah', - }; - const result = common.requestLogData(req); - assert.deepStrictEqual(result, { - method: 'GET', - }); - }); - }); // requestLogData - - describe('responseLogData', function () { - it('gives data', function () { - const res = { - getHeaders: () => ({}), - statusCode: 200, - blah: 'blah', - }; - const result = common.responseLogData(res); - assert.deepStrictEqual(result, { - headers: {}, - statusCode: 200, - }); - }); - }); // responseLogData - describe('setOptions', function () { it('sets options', function () { const expected = { @@ -258,13 +215,6 @@ describe('common', function () { }); }); // requestId - describe('ensureLoggerLevels', function () { - it('adds missing levels', function () { - const result = common.ensureLoggerLevels(); - assert.deepStrictEqual(result, common.nullLogger); - }); - }); // ensureLoggerLevels - describe('httpStatusCodeClass', function () { it('works', function () { for (const [statusCode, statusClassExpected] of Object.entries({ @@ -399,4 +349,74 @@ describe('common', function () { }); }); // unfoldHeaderLines + describe('addCookie', function () { + let res, name, value; + beforeEach(function () { + res = { + appendHeader: sinon.stub(), + }; + name = 'someCookieName'; + value = 'someCookieValue'; + }); + it('covers no options', function () { + common.addCookie(res, name, value, {}); + assert(res.appendHeader.called); + }); + it('covers all options', function () { + common.addCookie(res, name, value, { + domain: 'example.com', + expires: new Date(), + httpOnly: true, + maxAge: 9999999, + path: '/foo', + sameSite: 'Lax', + secure: true, + extension: ['Mischief'], + }); + assert(res.appendHeader.called); + }); + it('covers invalid expires', function () { + assert.throws(() => common.addCookie(res, name, value, { expires: 'never' }), TypeError); + }); + it('covers invalid sameSite', function () { + assert.throws(() => common.addCookie(res, name, value, { sameSite: 'Whatever' }), RangeError); + }); + it('covers invalid sameSite/secure setting', function () { + assert.throws(() => common.addCookie(res, name, value, { sameSite: 'None', secure: false }), RangeError); + }); + it('covers invalid path', function () { + assert.throws(() => common.addCookie(res, name, value, { path: '/bad;path' }), RangeError); + }); + it('covers invalid domain', function () { + assert.throws(() => common.addCookie(res, name, value, { domain: 'a-.com' }), RangeError); + }); + it('covers invalid extension type', function () { + assert.throws(() => common.addCookie(res, name, value, { extension: 'extension' }), TypeError); + }); + it('covers invalid extension', function () { + assert.throws(() => common.addCookie(res, name, value, { extension: ['bad;extension'] }), RangeError); + }); + it('covers invalid name', function () { + name = 'bad:name'; + assert.throws(() => common.addCookie(res, name, value), RangeError); + }); + it('covers invalid value', function () { + value = 'bad;value'; + assert.throws(() => common.addCookie(res, name, value), RangeError); + }); + it('covers quoted value', function () { + value = '"value"'; + common.addCookie(res, name, value); + assert(res.appendHeader.called); + }); + it('covers invalid quoted value', function () { + value = '"bad;value"'; + assert.throws(() => common.addCookie(res, name, value), RangeError); + }); + it('covers no options', function () { + common.addCookie(res, name, value); + assert(res.appendHeader.called); + }); + }); // addCookie + });