refactor: improve readability (#6173)
[express.git] / test / res.vary.js
blobff3c97165294d175679e8a0bb3e5a8fc857fb270
1 'use strict'
3 var express = require('..');
4 var request = require('supertest');
5 var utils = require('./support/utils');
7 describe('res.vary()', function(){
8   describe('with no arguments', function(){
9     it('should throw error', function (done) {
10       var app = express();
12       app.use(function (req, res) {
13         res.vary();
14         res.end();
15       });
17       request(app)
18       .get('/')
19       .expect(500, /field.*required/, done)
20     })
21   })
23   describe('with an empty array', function(){
24     it('should not set Vary', function (done) {
25       var app = express();
27       app.use(function (req, res) {
28         res.vary([]);
29         res.end();
30       });
32       request(app)
33       .get('/')
34       .expect(utils.shouldNotHaveHeader('Vary'))
35       .expect(200, done);
36     })
37   })
39   describe('with an array', function(){
40     it('should set the values', function (done) {
41       var app = express();
43       app.use(function (req, res) {
44         res.vary(['Accept', 'Accept-Language', 'Accept-Encoding']);
45         res.end();
46       });
48       request(app)
49       .get('/')
50       .expect('Vary', 'Accept, Accept-Language, Accept-Encoding')
51       .expect(200, done);
52     })
53   })
55   describe('with a string', function(){
56     it('should set the value', function (done) {
57       var app = express();
59       app.use(function (req, res) {
60         res.vary('Accept');
61         res.end();
62       });
64       request(app)
65       .get('/')
66       .expect('Vary', 'Accept')
67       .expect(200, done);
68     })
69   })
71   describe('when the value is present', function(){
72     it('should not add it again', function (done) {
73       var app = express();
75       app.use(function (req, res) {
76         res.vary('Accept');
77         res.vary('Accept-Encoding');
78         res.vary('Accept-Encoding');
79         res.vary('Accept-Encoding');
80         res.vary('Accept');
81         res.end();
82       });
84       request(app)
85       .get('/')
86       .expect('Vary', 'Accept, Accept-Encoding')
87       .expect(200, done);
88     })
89   })