build: update example dependencies
[express.git] / test / req.secure.js
blob2025c8786b6d029f392563fa97a382f58d883c3d
2 var express = require('../')
3   , request = require('supertest');
5 describe('req', function(){
6   describe('.secure', function(){
7     describe('when X-Forwarded-Proto is missing', function(){
8       it('should return false when http', function(done){
9         var app = express();
11         app.get('/', function(req, res){
12           res.send(req.secure ? 'yes' : 'no');
13         });
15         request(app)
16         .get('/')
17         .expect('no', done)
18       })
19     })
20   })
22   describe('.secure', function(){
23     describe('when X-Forwarded-Proto is present', function(){
24       it('should return false when http', function(done){
25         var app = express();
27         app.get('/', function(req, res){
28           res.send(req.secure ? 'yes' : 'no');
29         });
31         request(app)
32         .get('/')
33         .set('X-Forwarded-Proto', 'https')
34         .expect('no', done)
35       })
37       it('should return true when "trust proxy" is enabled', function(done){
38         var app = express();
40         app.enable('trust proxy');
42         app.get('/', function(req, res){
43           res.send(req.secure ? 'yes' : 'no');
44         });
46         request(app)
47         .get('/')
48         .set('X-Forwarded-Proto', 'https')
49         .expect('yes', done)
50       })
52       it('should return false when initial proxy is http', function(done){
53         var app = express();
55         app.enable('trust proxy');
57         app.get('/', function(req, res){
58           res.send(req.secure ? 'yes' : 'no');
59         });
61         request(app)
62         .get('/')
63         .set('X-Forwarded-Proto', 'http, https')
64         .expect('no', done)
65       })
67       it('should return true when initial proxy is https', function(done){
68         var app = express();
70         app.enable('trust proxy');
72         app.get('/', function(req, res){
73           res.send(req.secure ? 'yes' : 'no');
74         });
76         request(app)
77         .get('/')
78         .set('X-Forwarded-Proto', 'https, http')
79         .expect('yes', done)
80       })
82       describe('when "trust proxy" trusting hop count', function () {
83         it('should respect X-Forwarded-Proto', function (done) {
84           var app = express();
86           app.set('trust proxy', 1);
88           app.get('/', function (req, res) {
89             res.send(req.secure ? 'yes' : 'no');
90           });
92           request(app)
93           .get('/')
94           .set('X-Forwarded-Proto', 'https')
95           .expect('yes', done)
96         })
97       })
98     })
99   })