mirror of
https://github.com/zebrajr/express.git
synced 2026-01-15 12:15:27 +00:00
Added JSON cookie support & tests. Closes #879
This commit is contained in:
@@ -370,6 +370,7 @@ res.clearCookie = function(name, options){
|
||||
|
||||
res.cookie = function(name, val, options){
|
||||
options = options || {};
|
||||
if ('object' == typeof val) val = 'j:' + JSON.stringify(val);
|
||||
if ('maxAge' in options) options.expires = new Date(Date.now() + options.maxAge);
|
||||
if (undefined === options.path) options.path = this.app.set('root');
|
||||
var cookie = utils.serializeCookie(name, val, options);
|
||||
|
||||
43
test/req.cookies.js
Normal file
43
test/req.cookies.js
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
var express = require('../')
|
||||
, request = require('./support/http');
|
||||
|
||||
describe('req', function(){
|
||||
describe('.cookies', function(){
|
||||
it('should expose cookie data', function(done){
|
||||
var app = express();
|
||||
|
||||
app.use(express.cookieParser());
|
||||
|
||||
app.use(function(req, res){
|
||||
res.end(req.cookies.name + ' ' + req.cookies.species);
|
||||
});
|
||||
|
||||
request(app)
|
||||
.get('/')
|
||||
.set('Cookie', 'name=tobi; species=ferret')
|
||||
.end(function(res){
|
||||
res.body.should.equal('tobi ferret');
|
||||
done();
|
||||
})
|
||||
})
|
||||
|
||||
it('should parse JSON cookies', function(done){
|
||||
var app = express();
|
||||
|
||||
app.use(express.cookieParser());
|
||||
|
||||
app.use(function(req, res){
|
||||
res.end(req.cookies.user.name);
|
||||
});
|
||||
|
||||
request(app)
|
||||
.get('/')
|
||||
.set('Cookie', 'user=j%3A%7B%22name%22%3A%22tobi%22%7D')
|
||||
.end(function(res){
|
||||
res.body.should.equal('tobi');
|
||||
done();
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -3,7 +3,25 @@ var express = require('../')
|
||||
, request = require('./support/http');
|
||||
|
||||
describe('res', function(){
|
||||
describe('.cookie(name, value)', function(){
|
||||
describe('.cookie(name, object)', function(){
|
||||
it('should generate a JSON cookie', function(done){
|
||||
var app = express();
|
||||
|
||||
app.use(function(req, res){
|
||||
res.cookie('user', { name: 'tobi' }).end();
|
||||
});
|
||||
|
||||
request(app)
|
||||
.get('/')
|
||||
.end(function(res){
|
||||
var val = ['user=j%3A%7B%22name%22%3A%22tobi%22%7D; path=/'];
|
||||
res.headers['set-cookie'].should.eql(val);
|
||||
done();
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('.cookie(name, string)', function(){
|
||||
it('should set a cookie', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -57,7 +75,7 @@ describe('res', function(){
|
||||
})
|
||||
})
|
||||
|
||||
describe('.cookie(name, value, options)', function(){
|
||||
describe('.cookie(name, string, options)', function(){
|
||||
it('should set params', function(done){
|
||||
var app = express();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user