diff --git a/README.md b/README.md index 7a408d6..66a12ca 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ SuperTest Cookie Assertions HTTP cookie assertions via [super-test](https://github.com/visionmedia/supertest). -Writing HTTP cookie tests can result in redundant and verbose test code. This module was written to make testing cookies easier and reduce redundancies. +Writing HTTP cookie tests can result in redundant and verbose test code. + +This module was written to make testing cookies easier and reduce redundancies. ## Requirements @@ -26,7 +28,7 @@ Source available on [GitHub](https://github.com/gregl83/expect-cookies) or insta Usage instructions assume general knowledge of [super-test](https://github.com/visionmedia/supertest). -Here is an example of using the `set` and `not` methods to make 2 cookie assertions: +Here is an example of using the `set` and `not` cookie assertions: ```js // get ExpectCookies module @@ -50,15 +52,21 @@ request(app) .expect('Content-Type', /json/) .expect('Content-Length', '20') .expect(200) - // assert alpha cookie is set and the domain, path, and httpOnly options are also set - .expect(Cookies.set({alpha: ['domain', 'path', 'httponly']})) - // assert bravo cookie is NOT set - .expect(Cookies.not('set', {bravo: []}) + // assert 'alpha' cookie is set with domain, path, and httpOnly options + .expect(Cookies.set({'name': 'alpha', 'options': ['domain', 'path', 'httponly']})) + // assert 'bravo' cookie is NOT set + .expect(Cookies.not('set', {'name': 'bravo'}) .end(function(err, res){ if (err) throw err; }); ``` +It is also possible to chain assertions: + +```js +Cookies.set({/* ... */}).not('set', {/* ... */}) +``` + ## License MIT \ No newline at end of file diff --git a/src/Assertion.js b/src/Assertion.js index 3294873..3f3f759 100644 --- a/src/Assertion.js +++ b/src/Assertion.js @@ -13,18 +13,21 @@ var should = require('should'); * {number} [expects.options.max-age] * {boolean} [expects.options.secure] * {boolean} [expects.options.httponly] - * {string|string[]} [expects.options.secret] + * {string|string[]} [expects.secret] * + * @param {null|string|string[]} [secret] * @param {function|function[]} [asserts] * @returns {Assertion} */ -module.exports = function(asserts) { +module.exports = function(secret, asserts) { var assertions = []; + if ('string' === typeof secret) secret = [secret]; + else if (!Array.isArray(secret)) secret = []; + if (Array.isArray(asserts)) assertions = asserts; else if ('function' === typeof asserts) assertions.push(asserts); - /** * Assertion function with static chainable methods * @@ -81,7 +84,7 @@ module.exports = function(asserts) { var cookie; stack.every(function(val) { - if (name !== Object.keys(val)[0]) return true; + if (name !== val.name) return true; cookie = val; return false; }); @@ -112,15 +115,11 @@ module.exports = function(asserts) { parts.forEach(function(part, i) { if (1 === i) cookie.options = {}; - var cookieRef = (0 === i) ? cookie : cookie.options; var equalsIndex = part.indexOf('='); // things that don't look like key=value get true flag - if (equalsIndex < 0) { - cookieRef[part.trim().toLowerCase()] = true; - return; - } + if (equalsIndex < 0) return (cookie.options[part.trim().toLowerCase()] = true); var key = part.substr(0, equalsIndex).trim().toLowerCase(); // only assign once @@ -130,11 +129,17 @@ module.exports = function(asserts) { // quoted values if ('"' == val[0]) val = val.slice(1, -1); + var value; try { - cookieRef[key] = decode(val); + value = decode(val); } catch (e) { - cookieRef[key] = val; + value = val; } + + if (0 < i) return cookie.options[key] = value; + + cookie.name = key; + cookie.value = decode(val); }); if ('undefined' === typeof cookie.options) cookie.options = {}; @@ -147,23 +152,23 @@ module.exports = function(asserts) { * Iterate expects * * @param {object|object[]} expects - * @param {function} cb + * @param {boolean|function} hasValues + * @param {function} [cb] */ - Assertion.expects = function(expects, cb) { + Assertion.expects = function(expects, hasValues, cb) { if (!Array.isArray(expects) && 'object' === typeof expects) expects = [expects]; - expects.forEach(function(expect) { - var secret; - - if ('object' === typeof expect.options) { - if ('string' === typeof expect.options.secret) secret = [expect.options.secret]; - else if (Array.isArray(expect.options.secret)) secret = expect.options.secret; + if ('undefined' === typeof cb && 'function' === typeof hasValues) { + cb = hasValues; + hasValues = false; + } - delete expect.options.secret; + expects.forEach(function(expect) { + if ('object' !== typeof expect.options && !Array.isArray(expect.options)) { + expect.options = (hasValues) ? {} : []; } - else expect.options = {}; - cb(expect, secret); + cb(expect); }); }; @@ -178,18 +183,15 @@ module.exports = function(asserts) { Assertion.set = function(expects, assert) { if ('undefined' === typeof assert) assert = true; - Assertion.expects(expects, function(expect, secret) { - var name = Object.keys(expect)[0]; - var keys = Object.keys(expect.options); - + Assertion.expects(expects, function(expect) { assertions.push(function(req, res) { // get expectation cookie - var cookie = Assertion.find(name, res.cookies); + var cookie = Assertion.find(expect.name, res.cookies); - if (assert && !cookie) throw new Error('expected: ' + name + ' cookie to be set'); + if (assert && !cookie) throw new Error('expected: ' + expect.name + ' cookie to be set'); - if (assert) should(cookie.options).have.properties(keys); - else if(cookie) should(cookie.options).not.have.properties(keys); + if (assert) should(cookie.options).have.properties(expect.options); + else if(cookie) should(cookie.options).not.have.properties(expect.options); }); }); @@ -207,17 +209,15 @@ module.exports = function(asserts) { Assertion.reset = function(expects, assert) { if ('undefined' === typeof assert) assert = true; - Assertion.expects(expects, function(expect, secret) { - var name = Object.keys(expect)[0]; - + Assertion.expects(expects, function(expect) { assertions.push(function(req, res) { // get sent cookie - var cookieReq = Assertion.find(name, req.cookies); + var cookieReq = Assertion.find(expect.name, req.cookies); // get expectation cookie - var cookieRes = Assertion.find(name, res.cookies); + var cookieRes = Assertion.find(expect.name, res.cookies); - if (assert && (!cookieReq || !cookieRes)) throw new Error('expected: ' + name + ' cookie to be set'); - else if (!assert && cookieReq && cookieRes) throw new Error('expected: ' + name + ' cookie to be set'); + if (assert && (!cookieReq || !cookieRes)) throw new Error('expected: ' + expect.name + ' cookie to be set'); + else if (!assert && cookieReq && cookieRes) throw new Error('expected: ' + expect.name + ' cookie to be set'); }); }); @@ -235,20 +235,18 @@ module.exports = function(asserts) { Assertion.new = function(expects, assert) { if ('undefined' === typeof assert) assert = true; - Assertion.expects(expects, function(expect, secret) { - var name = Object.keys(expect)[0]; - + Assertion.expects(expects, function(expect) { assertions.push(function(req, res) { // get sent cookie - var cookieReq = Assertion.find(name, req.cookies); + var cookieReq = Assertion.find(expect.name, req.cookies); // get expectation cookie - var cookieRes = Assertion.find(name, res.cookies); + var cookieRes = Assertion.find(expect.name, res.cookies); if (assert) { - if (!cookieRes) throw new Error('expected: ' + name + ' cookie to be set'); - if (cookieReq && cookieRes) throw new Error('expected: ' + name + ' cookie to NOT already be set'); + if (!cookieRes) throw new Error('expected: ' + expect.name + ' cookie to be set'); + if (cookieReq && cookieRes) throw new Error('expected: ' + expect.name + ' cookie to NOT already be set'); } - else if (!cookieReq || !cookieRes) throw new Error('expected: ' + name + ' cookie to be set'); + else if (!cookieReq || !cookieRes) throw new Error('expected: ' + expect.name + ' cookie to be set'); }); }); @@ -266,33 +264,31 @@ module.exports = function(asserts) { Assertion.renew = function(expects, assert) { if ('undefined' === typeof assert) assert = true; - Assertion.expects(expects, function(expect, secret) { - var name = Object.keys(expect)[0]; - + Assertion.expects(expects, true, function(expect) { var expectExpires = new Date(expect.options.expires); var expectMaxAge = parseInt(expect.options['max-age']); - if (!expectExpires.getTime() && !expectMaxAge) throw new Error('expected: ' + name + ' expects to have expires or max-age option'); + if (!expectExpires.getTime() && !expectMaxAge) throw new Error('expected: ' + expect.name + ' expects to have expires or max-age option'); assertions.push(function(req, res) { // get sent cookie - var cookieReq = Assertion.find(name, req.cookies); + var cookieReq = Assertion.find(expect.name, req.cookies); // get expectation cookie - var cookieRes = Assertion.find(name, res.cookies); + var cookieRes = Assertion.find(expect.name, res.cookies); var cookieMaxAge = (expectMaxAge && cookieRes) ? parseInt(cookieRes.options['max-age']) : undefined; var cookieExpires = (expectExpires.getTime() && cookieRes) ? new Date(cookieRes.options.expires) : undefined; if (assert) { - if (!cookieReq || !cookieRes) throw new Error('expected: ' + name + ' cookie to be set'); + if (!cookieReq || !cookieRes) throw new Error('expected: ' + expect.name + ' cookie to be set'); - if (expectMaxAge && (!cookieMaxAge || cookieMaxAge <= expectMaxAge)) throw new Error('expected: ' + name + ' cookie max-age to be greater than existing value'); + if (expectMaxAge && (!cookieMaxAge || cookieMaxAge <= expectMaxAge)) throw new Error('expected: ' + expect.name + ' cookie max-age to be greater than existing value'); - if (expectExpires.getTime() && (!cookieExpires.getTime() || cookieExpires <= expectExpires)) throw new Error('expected: ' + name + ' cookie expires to be greater than existing value'); + if (expectExpires.getTime() && (!cookieExpires.getTime() || cookieExpires <= expectExpires)) throw new Error('expected: ' + expect.name + ' cookie expires to be greater than existing value'); } else if (cookieRes) { - if (expectMaxAge && cookieMaxAge > expectMaxAge) throw new Error('expected: ' + name + ' cookie max-age to be less than or equal to existing value'); + if (expectMaxAge && cookieMaxAge > expectMaxAge) throw new Error('expected: ' + expect.name + ' cookie max-age to be less than or equal to existing value'); - if (expectExpires.getTime() && cookieExpires > expectExpires) throw new Error('expected: ' + name + ' cookie expires to be less than or equal to existing value'); + if (expectExpires.getTime() && cookieExpires > expectExpires) throw new Error('expected: ' + expect.name + ' cookie expires to be less than or equal to existing value'); } }); }); @@ -311,30 +307,29 @@ module.exports = function(asserts) { Assertion.contain = function(expects, assert) { if ('undefined' === typeof assert) assert = true; - Assertion.expects(expects, function(expect, secret) { - var name = Object.keys(expect)[0]; + Assertion.expects(expects, function(expect) { var keys = Object.keys(expect.options); assertions.push(function(req, res) { // get expectation cookie - var cookie = Assertion.find(name, res.cookies); + var cookie = Assertion.find(expect.name, res.cookies); - if (!cookie) throw new Error('expected: ' + name + ' cookie to be set'); + if (!cookie) throw new Error('expected: ' + expect.name + ' cookie to be set'); // check cookie values are equal try { - if (assert) should(cookie[name]).be.eql(expect[name]); - else should(cookie[name]).not.be.eql(expect[name]); + if (assert) should(cookie.value).be.eql(expect.value); + else should(cookie.value).not.be.eql(expect.value); } catch(e) { if (secret.length) { var value; secret.every(function(sec) { - value = signature.unsign(cookie[name].slice(2), sec); - return !(value && value === expect[name]); + value = signature.unsign(cookie.value.slice(2), sec); + return !(value && value === expect.value); }); - if (assert && !value) throw new Error('expected: ' + name + ' value to equal ' + expect[name]); - else if (!assert && value) throw new Error('expected: ' + name + ' value to NOT equal ' + expect[name]); + if (assert && !value) throw new Error('expected: ' + expect.name + ' value to equal ' + expect.value); + else if (!assert && value) throw new Error('expected: ' + expect.name + ' value to NOT equal ' + expect.value); } else throw e; } diff --git a/src/ExpectCookies.js b/src/ExpectCookies.js index 8efbbdd..2715705 100644 --- a/src/ExpectCookies.js +++ b/src/ExpectCookies.js @@ -3,12 +3,13 @@ var Assertion = require('./Assertion'); /** * Construct cookies assertion (function) * - * @param {function(req, res)[]} asserts ran within returned assertion function + * @param {null|string|string[]} [secret] + * @param {function(req, res)[]} [asserts] ran within returned assertion function * @returns {function} assertion * @constructor */ -function ExpectCookies(asserts) { - return Assertion(asserts); +function ExpectCookies(secret, asserts) { + return Assertion(secret, asserts); } diff --git a/test/ExpectCookies.js b/test/ExpectCookies.js index 4209ac3..cf514f6 100644 --- a/test/ExpectCookies.js +++ b/test/ExpectCookies.js @@ -31,8 +31,8 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") - .expect(Cookies(assertion)) + .set('Cookie', 'control=placebo') + .expect(Cookies(null, assertion)) .end(function() { sinon.assert.calledOnce(assertion); done(); @@ -56,8 +56,8 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") - .expect(Cookies(asserts)) + .set('Cookie', 'control=placebo') + .expect(Cookies(null, asserts)) .end(function() { sinon.assert.calledOnce(assertionA); sinon.assert.calledOnce(assertionB); @@ -67,31 +67,22 @@ describe('Cookies', function() { describe('.set', function() { it('asserts true if signed cookie is set and options are set', function(done) { - var expires = new Date(); - var app = express(); app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: expires, secure: 1, httpOnly: true, signed: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: new Date(), secure: 1, httpOnly: true, signed: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.set({ - "substance": 'active', - "options": { - "domain": 'domain.com', - "path": '/', - "expires": expires.toUTCString(), - "secure": true, - "httponly": true, - "secret": secrets - } + 'name': 'substance', + 'options': ['domain', 'path', 'expires', 'secure', 'httponly'] }); should(function() { @@ -102,30 +93,22 @@ describe('Cookies', function() { }); it('asserts true if unsigned cookie is set and options are set', function(done) { - var expires = new Date(); - var app = express(); app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: expires, secure: 1, httpOnly: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: new Date(), secure: 1, httpOnly: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.set({ - "substance": 'active', - "options": { - "domain": 'domain.com', - "path": '/', - "expires": expires.toUTCString(), - "secure": true, - "httponly": true - } + 'name': 'substance', + 'options': ['domain', 'path', 'expires', 'secure', 'httponly'] }); should(function() { @@ -136,30 +119,22 @@ describe('Cookies', function() { }); it('asserts false if unsigned cookie is set but option was NOT set', function(done) { - var expires = new Date(); - var app = express(); app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: expires, secure: 1}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: new Date(), secure: 1}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.set({ - "substance": 'active', - "options": { - "domain": 'domain.com', - "path": '/', - "expires": expires.toUTCString(), - "secure": true, - "httponly": true - } + 'name': 'substance', + 'options': ['domain', 'path', 'expires', 'secure', 'httponly'] }); should(function() { @@ -183,10 +158,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.reset({ - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -207,10 +182,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.reset({ - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -223,23 +198,21 @@ describe('Cookies', function() { describe('.new', function() { it('asserts true if signed cookie is set and was NOT already set', function(done) { - var expires = new Date(); - var app = express(); app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: expires, secure: 1, httpOnly: true, signed: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: new Date(), secure: 1, httpOnly: true, signed: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.new({ - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -250,23 +223,21 @@ describe('Cookies', function() { }); it('asserts false if signed cookie is set but was already set', function(done) { - var expires = new Date(); - var app = express(); app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: expires, secure: 1, httpOnly: true, signed: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: new Date(), secure: 1, httpOnly: true, signed: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.new({ - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -287,10 +258,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.new({ - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -317,12 +288,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.renew({ - "substance": 'active', - "options": { - "expires": expires.toUTCString() + 'name': 'substance', + 'options': { + 'expires': expires.toUTCString() } }); @@ -348,12 +319,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.renew({ - "substance": 'active', - "options": { - "expires": expires.toUTCString() + 'name': 'substance', + 'options': { + 'expires': expires.toUTCString() } }); @@ -370,18 +341,18 @@ describe('Cookies', function() { app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', "maxAge": 120000, secure: 1, httpOnly: true, signed: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', 'maxAge': 120000, secure: 1, httpOnly: true, signed: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.renew({ - "substance": 'active', - "options": { - "max-age": 60 + 'name': 'substance', + 'options': { + 'max-age': 60 } }); @@ -398,18 +369,18 @@ describe('Cookies', function() { app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', "maxAge": 60000, secure: 1, httpOnly: true, signed: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', 'maxAge': 60000, secure: 1, httpOnly: true, signed: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.renew({ - "substance": 'active', - "options": { - "max-age": 120 + 'name': 'substance', + 'options': { + 'max-age': 120 } }); @@ -433,12 +404,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.renew({ - "substance": 'active', - "options": { - "expires": expires.toUTCString() + 'name': 'substance', + 'options': { + 'expires': expires.toUTCString() } }); @@ -465,17 +436,17 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { - var assertion = Cookies.contain({ - "substance": 'active', - "options": { - "domain": 'domain.com', - "path": '/', - "expires": expires.toUTCString(), - "secure": true, - "httponly": true, - "secret": secrets + var assertion = Cookies(secrets).contain({ + 'name': 'substance', + 'value': 'active', + 'options': { + 'domain': 'domain.com', + 'path': '/', + 'expires': expires.toUTCString(), + 'secure': true, + 'httponly': true } }); @@ -500,18 +471,18 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { - var assertion = Cookies.contain({ - "substance": 'active', - "options": { - "domain": 'domain.com', - "path": '/', - "expires": expires.toUTCString(), - "max-age": 60, - "secure": true, - "httponly": true, - "secret": secrets + var assertion = Cookies(secrets).contain({ + 'name': 'substance', + 'value': 'active', + 'options': { + 'domain': 'domain.com', + 'path': '/', + 'expires': expires.toUTCString(), + 'max-age': 60, + 'secure': true, + 'httponly': true } }); @@ -535,17 +506,17 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { - var assertion = Cookies.contain({ - "substance": 'active', - "options": { - "domain": 'domain.com', - "path": '/', - "expires": expires.toUTCString(), - "secure": true, - "httponly": true, - "secret": secrets + var assertion = Cookies(secrets).contain({ + 'name': 'substance', + 'value': 'active', + 'options': { + 'domain': 'domain.com', + 'path': '/', + 'expires': expires.toUTCString(), + 'secure': true, + 'httponly': true } }); @@ -570,10 +541,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.not('set', { - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -597,13 +568,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.not('set', { - "substance": 'active', - "options": { - "httponly": true - } + 'substance': 'active', + 'name': 'substance', + 'options': ['httponly'] }); should(function() { @@ -627,10 +597,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.not('set', { - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -653,10 +623,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('reset', { - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -680,10 +650,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('reset', { - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -709,10 +679,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('new', { - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -736,10 +706,10 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { var assertion = Cookies.not('new', { - "substance": 'active' + 'name': 'substance' }); should(function() { @@ -765,12 +735,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('renew', { - "substance": 'active', - "options": { - "expires": expires.toUTCString() + 'name': 'substance', + 'options': { + 'expires': expires.toUTCString() } }); @@ -796,12 +766,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('renew', { - "substance": 'active', - "options": { - "expires": expires.toUTCString() + 'name': 'substance', + 'options': { + 'expires': expires.toUTCString() } }); @@ -827,12 +797,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('renew', { - "substance": 'active', - "options": { - "expires": expires.toUTCString() + 'name': 'substance', + 'options': { + 'expires': expires.toUTCString() } }); @@ -855,12 +825,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('renew', { - "substance": 'active', - "options": { - "max-age": 60 + 'name': 'substance', + 'options': { + 'max-age': 60 } }); @@ -883,12 +853,12 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('renew', { - "substance": 'active', - "options": { - "max-age": 60 + 'name': 'substance', + 'options': { + 'max-age': 60 } }); @@ -905,18 +875,18 @@ describe('Cookies', function() { app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', "maxAge": 120000, secure: 1, httpOnly: true, signed: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', 'maxAge': 120000, secure: 1, httpOnly: true, signed: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo;substance=active") + .set('Cookie', 'control=placebo;substance=active') .expect(function(res) { var assertion = Cookies.not('renew', { - "substance": 'active', - "options": { - "max-age": 60 + 'name': 'substance', + 'options': { + 'max-age': 60 } }); @@ -937,19 +907,17 @@ describe('Cookies', function() { app.use(cookieParser(secrets)); app.get('/', function(req, res) { - res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: expires, "maxAge": 60000, secure: 1, httpOnly: true}); + res.cookie('substance', 'active', {domain: 'domain.com', path: '/', expires: expires, 'maxAge': 60000, secure: 1, httpOnly: true}); res.send(); }); request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { - var assertion = Cookies.not('contain', { - "substance": 'active', - "options": { - "secret": secrets - } + var assertion = Cookies(secrets).not('contain', { + 'name': 'substance', + 'value': 'active' }); should(function() { @@ -973,17 +941,17 @@ describe('Cookies', function() { request(app) .get('/') - .set("Cookie", "control=placebo") + .set('Cookie', 'control=placebo') .expect(function(res) { - var assertion = Cookies.not('contain', { - "substance": 'active', - "options": { - "domain": 'domain.com', - "path": '/', - "expires": expires.toUTCString(), - "secure": true, - "httponly": true, - "secret": secrets + var assertion = Cookies(secrets).not('contain', { + 'name': 'substance', + 'value': 'active', + 'options': { + 'domain': 'domain.com', + 'path': '/', + 'expires': expires.toUTCString(), + 'secure': true, + 'httponly': true } });