81 lines
1.7 KiB
JavaScript
81 lines
1.7 KiB
JavaScript
|
|
||
|
var koa = require('../..')
|
||
|
var request = require('supertest');
|
||
|
|
||
|
describe('ctx.cookies.set()', function(){
|
||
|
it('should set an unsigned cookie', function(done){
|
||
|
var app = koa();
|
||
|
|
||
|
app.use(function *(next){
|
||
|
this.cookies.set('name', 'jon');
|
||
|
this.status = 204;
|
||
|
})
|
||
|
|
||
|
var server = app.listen();
|
||
|
|
||
|
request(server)
|
||
|
.get('/')
|
||
|
.expect(204)
|
||
|
.end(function(err, res){
|
||
|
if (err) return done(err);
|
||
|
|
||
|
res.headers['set-cookie'].some(function(cookie){
|
||
|
return /^name=/.test(cookie);
|
||
|
}).should.be.ok;
|
||
|
|
||
|
done();
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('with .signed', function(){
|
||
|
describe('when no .keys are set', function(){
|
||
|
it('should error', function(done){
|
||
|
var app = koa();
|
||
|
|
||
|
app.use(function *(next){
|
||
|
try {
|
||
|
this.cookies.set('foo', 'bar', { signed: true });
|
||
|
} catch (err) {
|
||
|
this.body = err.message;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
request(app.listen())
|
||
|
.get('/')
|
||
|
.expect('Cannot call method \'sign\' of undefined', done);
|
||
|
})
|
||
|
})
|
||
|
|
||
|
it('should send a signed cookie', function(done){
|
||
|
var app = koa();
|
||
|
|
||
|
app.keys = ['a', 'b'];
|
||
|
|
||
|
app.use(function *(next){
|
||
|
this.cookies.set('name', 'jon', { signed: true });
|
||
|
this.status = 204;
|
||
|
})
|
||
|
|
||
|
var server = app.listen();
|
||
|
|
||
|
request(server)
|
||
|
.get('/')
|
||
|
.expect(204)
|
||
|
.end(function(err, res){
|
||
|
if (err) return done(err);
|
||
|
|
||
|
var cookies = res.headers['set-cookie'];
|
||
|
|
||
|
cookies.some(function(cookie){
|
||
|
return /^name=/.test(cookie);
|
||
|
}).should.be.ok;
|
||
|
|
||
|
cookies.some(function(cookie){
|
||
|
return /^name\.sig=/.test(cookie);
|
||
|
}).should.be.ok;
|
||
|
|
||
|
done();
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
})
|