3 var assert
= require('assert')
4 var express
= require('..')
5 var request
= require('supertest')
7 describe('res', function () {
8 describe('.append(field, val)', function () {
9 it('should append multiple headers', function (done
) {
12 app
.use(function (req
, res
, next
) {
13 res
.append('Set-Cookie', 'foo=bar')
17 app
.use(function (req
, res
) {
18 res
.append('Set-Cookie', 'fizz=buzz')
25 .expect(shouldHaveHeaderValues('Set-Cookie', ['foo=bar', 'fizz=buzz']))
29 it('should accept array of values', function (done
) {
32 app
.use(function (req
, res
, next
) {
33 res
.append('Set-Cookie', ['foo=bar', 'fizz=buzz'])
40 .expect(shouldHaveHeaderValues('Set-Cookie', ['foo=bar', 'fizz=buzz']))
44 it('should get reset by res.set(field, val)', function (done
) {
47 app
.use(function (req
, res
, next
) {
48 res
.append('Set-Cookie', 'foo=bar')
49 res
.append('Set-Cookie', 'fizz=buzz')
53 app
.use(function (req
, res
) {
54 res
.set('Set-Cookie', 'pet=tobi')
61 .expect(shouldHaveHeaderValues('Set-Cookie', ['pet=tobi']))
65 it('should work with res.set(field, val) first', function (done
) {
68 app
.use(function (req
, res
, next
) {
69 res
.set('Set-Cookie', 'foo=bar')
73 app
.use(function(req
, res
){
74 res
.append('Set-Cookie', 'fizz=buzz')
81 .expect(shouldHaveHeaderValues('Set-Cookie', ['foo=bar', 'fizz=buzz']))
85 it('should work together with res.cookie', function (done
) {
88 app
.use(function (req
, res
, next
) {
89 res
.cookie('foo', 'bar')
93 app
.use(function (req
, res
) {
94 res
.append('Set-Cookie', 'fizz=buzz')
101 .expect(shouldHaveHeaderValues('Set-Cookie', ['foo=bar; Path=/', 'fizz=buzz']))
107 function shouldHaveHeaderValues (key
, values
) {
108 return function (res
) {
109 var headers
= res
.headers
[key
.toLowerCase()]
110 assert
.ok(headers
, 'should have header "' + key
+ '"')
111 assert
.strictEqual(headers
.length
, values
.length
, 'should have ' + values
.length
+ ' occurances of "' + key
+ '"')
112 for (var i
= 0; i
< values
.length
; i
++) {
113 assert
.strictEqual(headers
[i
], values
[i
])