X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=test%2Flib%2Fcommon.js;h=4b10d38965777c2372a4dadbc2fcd446d6af1e75;hb=HEAD;hp=57c4113a9db986dbee499942e6e11ea0a78964b9;hpb=aee1a77b22217893a609e581de7e4d3521e2c54e;p=squeep-api-dingus diff --git a/test/lib/common.js b/test/lib/common.js index 57c4113..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,100 +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('obscureAuthorizationHeader', function () { - it('obscures basic data', function () { - const authHeader = 'Basic Zm9vOmJhcg=='; - const expected = 'Basic ************'; - const result = common.obscureAuthorizationHeader(authHeader); - assert.strictEqual(result, expected); - }); - it('obscures all of other types', function () { - const authHeader = 'someWeirdAuth'; - const expected = '*************'; - const result = common.obscureAuthorizationHeader(authHeader); - assert.strictEqual(result, expected); - }); - it('does nothing when empty', function () { - const authHeader = undefined; - const expected = undefined; - const result = common.obscureAuthorizationHeader(authHeader); - assert.strictEqual(result, expected); - }); - }); // obscureAuthorizationHeader - - describe('scrubHeaderObject', function () { - it('', function () { - const data = { - headers: { - 'foo': 'bar', - 'authorization': 'Basic Zm9vOmJhcg==', - }, - }; - const expected = { - headers: { - 'foo': 'bar', - 'authorization': 'Basic ************', - }, - }; - common.scrubHeaderObject(data); - assert.deepStrictEqual(data, expected); - }); - }); // scrubHeaderObject - - 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('handlerLogData', function () { - it('covers', function () { - const req = { - method: 'GET', - somethingElse: 'blah', - }; - const res = { - getHeaders: () => ({}), - statusCode: 200, - blah: 'blah', - }; - const ctx = {}; - const result = common.handlerLogData(req, res, ctx); - assert.deepStrictEqual(result, { - req: { - method: 'GET', - }, - res: { - headers: {}, - statusCode: 200, - }, - ctx: {}, - }); - }); - }); // handlerLogData - describe('setOptions', function () { it('sets options', function () { const expected = { @@ -324,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({ @@ -465,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 + });