-/* 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"';
});
}); // 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 = {
});
}); // 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({
});
}); // 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
+
});