update history.md for acceptParams change (#6177)
[express.git] / test / config.js
blobb04367fdbf896067eb51a0dd050aa12b85a8a89c
1 'use strict'
3 var assert = require('assert');
4 var express = require('..');
6 describe('config', function () {
7   describe('.set()', function () {
8     it('should set a value', function () {
9       var app = express();
10       app.set('foo', 'bar');
11       assert.equal(app.get('foo'), 'bar');
12     })
14     it('should set prototype values', function () {
15       var app = express()
16       app.set('hasOwnProperty', 42)
17       assert.strictEqual(app.get('hasOwnProperty'), 42)
18     })
20     it('should return the app', function () {
21       var app = express();
22       assert.equal(app.set('foo', 'bar'), app);
23     })
25     it('should return the app when undefined', function () {
26       var app = express();
27       assert.equal(app.set('foo', undefined), app);
28     })
30     it('should return set value', function () {
31       var app = express()
32       app.set('foo', 'bar')
33       assert.strictEqual(app.set('foo'), 'bar')
34     })
36     it('should return undefined for prototype values', function () {
37       var app = express()
38       assert.strictEqual(app.set('hasOwnProperty'), undefined)
39     })
41     describe('"etag"', function(){
42       it('should throw on bad value', function(){
43         var app = express();
44         assert.throws(app.set.bind(app, 'etag', 42), /unknown value/);
45       })
47       it('should set "etag fn"', function(){
48         var app = express()
49         var fn = function(){}
50         app.set('etag', fn)
51         assert.equal(app.get('etag fn'), fn)
52       })
53     })
55     describe('"trust proxy"', function(){
56       it('should set "trust proxy fn"', function(){
57         var app = express()
58         var fn = function(){}
59         app.set('trust proxy', fn)
60         assert.equal(app.get('trust proxy fn'), fn)
61       })
62     })
63   })
65   describe('.get()', function(){
66     it('should return undefined when unset', function(){
67       var app = express();
68       assert.strictEqual(app.get('foo'), undefined);
69     })
71     it('should return undefined for prototype values', function () {
72       var app = express()
73       assert.strictEqual(app.get('hasOwnProperty'), undefined)
74     })
76     it('should otherwise return the value', function(){
77       var app = express();
78       app.set('foo', 'bar');
79       assert.equal(app.get('foo'), 'bar');
80     })
82     describe('when mounted', function(){
83       it('should default to the parent app', function(){
84         var app = express();
85         var blog = express();
87         app.set('title', 'Express');
88         app.use(blog);
89         assert.equal(blog.get('title'), 'Express');
90       })
92       it('should given precedence to the child', function(){
93         var app = express();
94         var blog = express();
96         app.use(blog);
97         app.set('title', 'Express');
98         blog.set('title', 'Some Blog');
100         assert.equal(blog.get('title'), 'Some Blog');
101       })
103       it('should inherit "trust proxy" setting', function () {
104         var app = express();
105         var blog = express();
107         function fn() { return false }
109         app.set('trust proxy', fn);
110         assert.equal(app.get('trust proxy'), fn);
111         assert.equal(app.get('trust proxy fn'), fn);
113         app.use(blog);
115         assert.equal(blog.get('trust proxy'), fn);
116         assert.equal(blog.get('trust proxy fn'), fn);
117       })
119       it('should prefer child "trust proxy" setting', function () {
120         var app = express();
121         var blog = express();
123         function fn1() { return false }
124         function fn2() { return true }
126         app.set('trust proxy', fn1);
127         assert.equal(app.get('trust proxy'), fn1);
128         assert.equal(app.get('trust proxy fn'), fn1);
130         blog.set('trust proxy', fn2);
131         assert.equal(blog.get('trust proxy'), fn2);
132         assert.equal(blog.get('trust proxy fn'), fn2);
134         app.use(blog);
136         assert.equal(app.get('trust proxy'), fn1);
137         assert.equal(app.get('trust proxy fn'), fn1);
138         assert.equal(blog.get('trust proxy'), fn2);
139         assert.equal(blog.get('trust proxy fn'), fn2);
140       })
141     })
142   })
144   describe('.enable()', function(){
145     it('should set the value to true', function(){
146       var app = express();
147       assert.equal(app.enable('tobi'), app);
148       assert.strictEqual(app.get('tobi'), true);
149     })
151     it('should set prototype values', function () {
152       var app = express()
153       app.enable('hasOwnProperty')
154       assert.strictEqual(app.get('hasOwnProperty'), true)
155     })
156   })
158   describe('.disable()', function(){
159     it('should set the value to false', function(){
160       var app = express();
161       assert.equal(app.disable('tobi'), app);
162       assert.strictEqual(app.get('tobi'), false);
163     })
165     it('should set prototype values', function () {
166       var app = express()
167       app.disable('hasOwnProperty')
168       assert.strictEqual(app.get('hasOwnProperty'), false)
169     })
170   })
172   describe('.enabled()', function(){
173     it('should default to false', function(){
174       var app = express();
175       assert.strictEqual(app.enabled('foo'), false);
176     })
178     it('should return true when set', function(){
179       var app = express();
180       app.set('foo', 'bar');
181       assert.strictEqual(app.enabled('foo'), true);
182     })
184     it('should default to false for prototype values', function () {
185       var app = express()
186       assert.strictEqual(app.enabled('hasOwnProperty'), false)
187     })
188   })
190   describe('.disabled()', function(){
191     it('should default to true', function(){
192       var app = express();
193       assert.strictEqual(app.disabled('foo'), true);
194     })
196     it('should return false when set', function(){
197       var app = express();
198       app.set('foo', 'bar');
199       assert.strictEqual(app.disabled('foo'), false);
200     })
202     it('should default to true for prototype values', function () {
203       var app = express()
204       assert.strictEqual(app.disabled('hasOwnProperty'), true)
205     })
206   })