UNPKG

fruitstand

Version:
73 lines (61 loc) 1.88 kB
var connect = require('connect') , request = require('supertest') , signature = require('cookie-signature'); var app = connect(); app.use(connect.cookieParser('keyboard cat')); app.use(function(req, res, next){ if ('/signed' != req.url) return next(); res.end(JSON.stringify(req.signedCookies)); }); app.use(function(req, res, next){ res.end(JSON.stringify(req.cookies)); }); describe('connect.cookieParser()', function(){ describe('when no cookies are sent', function(){ it('should default req.cookies to {}', function(done){ request(app) .get('/') .expect('{}', done); }) it('should default req.signedCookies to {}', function(done){ request(app) .get('/signed') .expect('{}', done); }) }) describe('when cookies are sent', function(){ it('should populate req.cookies', function(done){ request(app) .get('/') .set('Cookie', 'foo=bar; bar=baz') .expect('{"foo":"bar","bar":"baz"}', done); }) }) describe('when a secret is given', function(){ var val = signature.sign('foobarbaz', 'keyboard cat'); // TODO: "bar" fails... it('should populate req.signedCookies', function(done){ request(app) .get('/signed') .set('Cookie', 'foo=s:' + val) .expect('{"foo":"foobarbaz"}', done); }) it('should remove the signed value from req.cookies', function(done){ request(app) .get('/') .set('Cookie', 'foo=s:' + val) .expect('{}', done); }) it('should omit invalid signatures', function(done){ request(app) .get('/signed') .set('Cookie', 'foo=' + val + '3') .expect('{}', function(){ request(app) .get('/') .set('Cookie', 'foo=' + val + '3') .expect('{"foo":"foobarbaz.CP7AWaXDfAKIRfH49dQzKJx7sKzzSoPq7/AcBBRVwlI3"}', done); }); }) }) })