mirror of
https://gitee.com/java110/MicroCommunityWeb.git
synced 2026-02-25 06:09:11 +08:00
60 lines
1.7 KiB
JavaScript
Executable File
60 lines
1.7 KiB
JavaScript
Executable File
'use strict';
|
|
|
|
var assert = require('assert');
|
|
var express = require('express');
|
|
var request = require('supertest');
|
|
var proxy = require('../');
|
|
|
|
describe('proxies https', function () {
|
|
|
|
this.timeout(10000);
|
|
|
|
var app;
|
|
|
|
beforeEach(function () {
|
|
app = express();
|
|
});
|
|
|
|
function assertSecureRequest(app, done) {
|
|
request(app)
|
|
.get('/get?show_env=1')
|
|
.end(function (err, res) {
|
|
if (err) { return done(err); }
|
|
assert(res.body.headers['X-Forwarded-Port'] === '443', 'Expects forwarded 443 Port');
|
|
assert(res.body.headers['X-Forwarded-Proto'] === 'https', 'Expects forwarded protocol to be https');
|
|
done();
|
|
});
|
|
}
|
|
|
|
describe('when host is a String', function () {
|
|
describe('and includes "https" as protocol', function () {
|
|
it('proxys via https', function (done) {
|
|
app.use(proxy('https://httpbin.org'));
|
|
assertSecureRequest(app, done);
|
|
});
|
|
});
|
|
describe('option https is set to "true"', function () {
|
|
it('proxys via https', function (done) {
|
|
app.use(proxy('http://httpbin.org', { https: true }));
|
|
assertSecureRequest(app, done);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when host is a Function', function () {
|
|
describe('returned value includes "https" as protocol', function () {
|
|
it('proxys via https', function (done) {
|
|
app.use(proxy(function () { return 'https://httpbin.org'; }));
|
|
assertSecureRequest(app, done);
|
|
});
|
|
});
|
|
describe('option https is set to "true"', function () {
|
|
it('proxys via https', function (done) {
|
|
app.use(proxy(function () { return 'http://httpbin.org'; }, { https: true }));
|
|
assertSecureRequest(app, done);
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|