Merge branch 'v2.1-dev' as v2.1.2
[squeep-api-dingus] / test / lib / common.js
index 57c4113a9db986dbee499942e6e11ea0a78964b9..06d711d186fdc07469e89311a0ca2207d769540c 100644 (file)
@@ -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
+
 });