2022-02-09 01:07:08 -05:00
|
|
|
'use strict'
|
2013-06-05 11:59:47 -07:00
|
|
|
|
|
|
|
|
var express = require('../')
|
2014-03-05 22:06:14 -08:00
|
|
|
, request = require('supertest');
|
2013-06-05 11:59:47 -07:00
|
|
|
|
|
|
|
|
describe('req', function(){
|
|
|
|
|
describe('.secure', function(){
|
|
|
|
|
describe('when X-Forwarded-Proto is missing', function(){
|
|
|
|
|
it('should return false when http', function(done){
|
|
|
|
|
var app = express();
|
|
|
|
|
|
|
|
|
|
app.get('/', function(req, res){
|
|
|
|
|
res.send(req.secure ? 'yes' : 'no');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
request(app)
|
|
|
|
|
.get('/')
|
|
|
|
|
.expect('no', done)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('.secure', function(){
|
|
|
|
|
describe('when X-Forwarded-Proto is present', function(){
|
|
|
|
|
it('should return false when http', function(done){
|
|
|
|
|
var app = express();
|
|
|
|
|
|
|
|
|
|
app.get('/', function(req, res){
|
|
|
|
|
res.send(req.secure ? 'yes' : 'no');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
request(app)
|
|
|
|
|
.get('/')
|
|
|
|
|
.set('X-Forwarded-Proto', 'https')
|
|
|
|
|
.expect('no', done)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should return true when "trust proxy" is enabled', function(done){
|
|
|
|
|
var app = express();
|
|
|
|
|
|
|
|
|
|
app.enable('trust proxy');
|
|
|
|
|
|
|
|
|
|
app.get('/', function(req, res){
|
|
|
|
|
res.send(req.secure ? 'yes' : 'no');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
request(app)
|
|
|
|
|
.get('/')
|
|
|
|
|
.set('X-Forwarded-Proto', 'https')
|
|
|
|
|
.expect('yes', done)
|
|
|
|
|
})
|
2013-06-05 12:05:45 -07:00
|
|
|
|
|
|
|
|
it('should return false when initial proxy is http', function(done){
|
|
|
|
|
var app = express();
|
|
|
|
|
|
|
|
|
|
app.enable('trust proxy');
|
|
|
|
|
|
|
|
|
|
app.get('/', function(req, res){
|
|
|
|
|
res.send(req.secure ? 'yes' : 'no');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
request(app)
|
|
|
|
|
.get('/')
|
|
|
|
|
.set('X-Forwarded-Proto', 'http, https')
|
|
|
|
|
.expect('no', done)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('should return true when initial proxy is https', function(done){
|
|
|
|
|
var app = express();
|
|
|
|
|
|
|
|
|
|
app.enable('trust proxy');
|
|
|
|
|
|
|
|
|
|
app.get('/', function(req, res){
|
|
|
|
|
res.send(req.secure ? 'yes' : 'no');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
request(app)
|
|
|
|
|
.get('/')
|
|
|
|
|
.set('X-Forwarded-Proto', 'https, http')
|
|
|
|
|
.expect('yes', done)
|
|
|
|
|
})
|
2015-02-28 17:06:37 +00:00
|
|
|
|
|
|
|
|
describe('when "trust proxy" trusting hop count', function () {
|
|
|
|
|
it('should respect X-Forwarded-Proto', function (done) {
|
|
|
|
|
var app = express();
|
|
|
|
|
|
|
|
|
|
app.set('trust proxy', 1);
|
|
|
|
|
|
|
|
|
|
app.get('/', function (req, res) {
|
|
|
|
|
res.send(req.secure ? 'yes' : 'no');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
request(app)
|
|
|
|
|
.get('/')
|
|
|
|
|
.set('X-Forwarded-Proto', 'https')
|
|
|
|
|
.expect('yes', done)
|
|
|
|
|
})
|
|
|
|
|
})
|
2013-06-05 11:59:47 -07:00
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|