add more validation to addCookie parameters
[squeep-api-dingus] / test / lib / common.js
index 68f2599791c12faf5d106656200fd23cb7c55947..06d711d186fdc07469e89311a0ca2207d769540c 100644 (file)
@@ -371,6 +371,7 @@ describe('common', function () {
         path: '/foo',
         sameSite: 'Lax',
         secure: true,
+        extension: ['Mischief'],
       });
       assert(res.appendHeader.called);
     });
@@ -378,7 +379,39 @@ describe('common', 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' }));
+      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);