208 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict'
 | |
| 
 | |
| var assert = require('node:assert');
 | |
| var express = require('..');
 | |
| 
 | |
| describe('config', function () {
 | |
|   describe('.set()', function () {
 | |
|     it('should set a value', function () {
 | |
|       var app = express();
 | |
|       app.set('foo', 'bar');
 | |
|       assert.equal(app.get('foo'), 'bar');
 | |
|     })
 | |
| 
 | |
|     it('should set prototype values', function () {
 | |
|       var app = express()
 | |
|       app.set('hasOwnProperty', 42)
 | |
|       assert.strictEqual(app.get('hasOwnProperty'), 42)
 | |
|     })
 | |
| 
 | |
|     it('should return the app', function () {
 | |
|       var app = express();
 | |
|       assert.equal(app.set('foo', 'bar'), app);
 | |
|     })
 | |
| 
 | |
|     it('should return the app when undefined', function () {
 | |
|       var app = express();
 | |
|       assert.equal(app.set('foo', undefined), app);
 | |
|     })
 | |
| 
 | |
|     it('should return set value', function () {
 | |
|       var app = express()
 | |
|       app.set('foo', 'bar')
 | |
|       assert.strictEqual(app.set('foo'), 'bar')
 | |
|     })
 | |
| 
 | |
|     it('should return undefined for prototype values', function () {
 | |
|       var app = express()
 | |
|       assert.strictEqual(app.set('hasOwnProperty'), undefined)
 | |
|     })
 | |
| 
 | |
|     describe('"etag"', function(){
 | |
|       it('should throw on bad value', function(){
 | |
|         var app = express();
 | |
|         assert.throws(app.set.bind(app, 'etag', 42), /unknown value/);
 | |
|       })
 | |
| 
 | |
|       it('should set "etag fn"', function(){
 | |
|         var app = express()
 | |
|         var fn = function(){}
 | |
|         app.set('etag', fn)
 | |
|         assert.equal(app.get('etag fn'), fn)
 | |
|       })
 | |
|     })
 | |
| 
 | |
|     describe('"trust proxy"', function(){
 | |
|       it('should set "trust proxy fn"', function(){
 | |
|         var app = express()
 | |
|         var fn = function(){}
 | |
|         app.set('trust proxy', fn)
 | |
|         assert.equal(app.get('trust proxy fn'), fn)
 | |
|       })
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   describe('.get()', function(){
 | |
|     it('should return undefined when unset', function(){
 | |
|       var app = express();
 | |
|       assert.strictEqual(app.get('foo'), undefined);
 | |
|     })
 | |
| 
 | |
|     it('should return undefined for prototype values', function () {
 | |
|       var app = express()
 | |
|       assert.strictEqual(app.get('hasOwnProperty'), undefined)
 | |
|     })
 | |
| 
 | |
|     it('should otherwise return the value', function(){
 | |
|       var app = express();
 | |
|       app.set('foo', 'bar');
 | |
|       assert.equal(app.get('foo'), 'bar');
 | |
|     })
 | |
| 
 | |
|     describe('when mounted', function(){
 | |
|       it('should default to the parent app', function(){
 | |
|         var app = express();
 | |
|         var blog = express();
 | |
| 
 | |
|         app.set('title', 'Express');
 | |
|         app.use(blog);
 | |
|         assert.equal(blog.get('title'), 'Express');
 | |
|       })
 | |
| 
 | |
|       it('should given precedence to the child', function(){
 | |
|         var app = express();
 | |
|         var blog = express();
 | |
| 
 | |
|         app.use(blog);
 | |
|         app.set('title', 'Express');
 | |
|         blog.set('title', 'Some Blog');
 | |
| 
 | |
|         assert.equal(blog.get('title'), 'Some Blog');
 | |
|       })
 | |
| 
 | |
|       it('should inherit "trust proxy" setting', function () {
 | |
|         var app = express();
 | |
|         var blog = express();
 | |
| 
 | |
|         function fn() { return false }
 | |
| 
 | |
|         app.set('trust proxy', fn);
 | |
|         assert.equal(app.get('trust proxy'), fn);
 | |
|         assert.equal(app.get('trust proxy fn'), fn);
 | |
| 
 | |
|         app.use(blog);
 | |
| 
 | |
|         assert.equal(blog.get('trust proxy'), fn);
 | |
|         assert.equal(blog.get('trust proxy fn'), fn);
 | |
|       })
 | |
| 
 | |
|       it('should prefer child "trust proxy" setting', function () {
 | |
|         var app = express();
 | |
|         var blog = express();
 | |
| 
 | |
|         function fn1() { return false }
 | |
|         function fn2() { return true }
 | |
| 
 | |
|         app.set('trust proxy', fn1);
 | |
|         assert.equal(app.get('trust proxy'), fn1);
 | |
|         assert.equal(app.get('trust proxy fn'), fn1);
 | |
| 
 | |
|         blog.set('trust proxy', fn2);
 | |
|         assert.equal(blog.get('trust proxy'), fn2);
 | |
|         assert.equal(blog.get('trust proxy fn'), fn2);
 | |
| 
 | |
|         app.use(blog);
 | |
| 
 | |
|         assert.equal(app.get('trust proxy'), fn1);
 | |
|         assert.equal(app.get('trust proxy fn'), fn1);
 | |
|         assert.equal(blog.get('trust proxy'), fn2);
 | |
|         assert.equal(blog.get('trust proxy fn'), fn2);
 | |
|       })
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   describe('.enable()', function(){
 | |
|     it('should set the value to true', function(){
 | |
|       var app = express();
 | |
|       assert.equal(app.enable('tobi'), app);
 | |
|       assert.strictEqual(app.get('tobi'), true);
 | |
|     })
 | |
| 
 | |
|     it('should set prototype values', function () {
 | |
|       var app = express()
 | |
|       app.enable('hasOwnProperty')
 | |
|       assert.strictEqual(app.get('hasOwnProperty'), true)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   describe('.disable()', function(){
 | |
|     it('should set the value to false', function(){
 | |
|       var app = express();
 | |
|       assert.equal(app.disable('tobi'), app);
 | |
|       assert.strictEqual(app.get('tobi'), false);
 | |
|     })
 | |
| 
 | |
|     it('should set prototype values', function () {
 | |
|       var app = express()
 | |
|       app.disable('hasOwnProperty')
 | |
|       assert.strictEqual(app.get('hasOwnProperty'), false)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   describe('.enabled()', function(){
 | |
|     it('should default to false', function(){
 | |
|       var app = express();
 | |
|       assert.strictEqual(app.enabled('foo'), false);
 | |
|     })
 | |
| 
 | |
|     it('should return true when set', function(){
 | |
|       var app = express();
 | |
|       app.set('foo', 'bar');
 | |
|       assert.strictEqual(app.enabled('foo'), true);
 | |
|     })
 | |
| 
 | |
|     it('should default to false for prototype values', function () {
 | |
|       var app = express()
 | |
|       assert.strictEqual(app.enabled('hasOwnProperty'), false)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   describe('.disabled()', function(){
 | |
|     it('should default to true', function(){
 | |
|       var app = express();
 | |
|       assert.strictEqual(app.disabled('foo'), true);
 | |
|     })
 | |
| 
 | |
|     it('should return false when set', function(){
 | |
|       var app = express();
 | |
|       app.set('foo', 'bar');
 | |
|       assert.strictEqual(app.disabled('foo'), false);
 | |
|     })
 | |
| 
 | |
|     it('should default to true for prototype values', function () {
 | |
|       var app = express()
 | |
|       assert.strictEqual(app.disabled('hasOwnProperty'), true)
 | |
|     })
 | |
|   })
 | |
| })
 |