3 var express
= require('../')
4 , request
= require('supertest');
6 describe('req', function(){
7 describe('.protocol', function(){
8 it('should return the protocol string', function(done
){
11 app
.use(function(req
, res
){
12 res
.end(req
.protocol
);
17 .expect('http', done
);
20 describe('when "trust proxy" is enabled', function(){
21 it('should respect X-Forwarded-Proto', function(done
){
24 app
.enable('trust proxy');
26 app
.use(function(req
, res
){
27 res
.end(req
.protocol
);
32 .set('X-Forwarded-Proto', 'https')
33 .expect('https', done
);
36 it('should default to the socket addr if X-Forwarded-Proto not present', function(done
){
39 app
.enable('trust proxy');
41 app
.use(function(req
, res
){
42 req
.connection
.encrypted
= true;
43 res
.end(req
.protocol
);
48 .expect('https', done
);
51 it('should ignore X-Forwarded-Proto if socket addr not trusted', function(done
){
54 app
.set('trust proxy', '10.0.0.1');
56 app
.use(function(req
, res
){
57 res
.end(req
.protocol
);
62 .set('X-Forwarded-Proto', 'https')
63 .expect('http', done
);
66 it('should default to http', function(done
){
69 app
.enable('trust proxy');
71 app
.use(function(req
, res
){
72 res
.end(req
.protocol
);
77 .expect('http', done
);
80 describe('when trusting hop count', function () {
81 it('should respect X-Forwarded-Proto', function (done
) {
84 app
.set('trust proxy', 1);
86 app
.use(function (req
, res
) {
87 res
.end(req
.protocol
);
92 .set('X-Forwarded-Proto', 'https')
93 .expect('https', done
);
98 describe('when "trust proxy" is disabled', function(){
99 it('should ignore X-Forwarded-Proto', function(done
){
102 app
.use(function(req
, res
){
103 res
.end(req
.protocol
);
108 .set('X-Forwarded-Proto', 'https')
109 .expect('http', done
);