|
|
'use strict'; |
|
|
|
|
|
var assert = require('assert'); |
|
|
var express = require('express'); |
|
|
var request = require('supertest'); |
|
|
var proxy = require('../'); |
|
|
|
|
|
function proxyTarget(port) { |
|
|
|
|
|
var other = express(); |
|
|
other.get('/', function (req, res) { |
|
|
res.send('Success'); |
|
|
}); |
|
|
return other.listen(port); |
|
|
} |
|
|
|
|
|
describe('proxies to requested port', function () { |
|
|
var other; |
|
|
var http; |
|
|
|
|
|
beforeEach(function () { |
|
|
http = express(); |
|
|
other = proxyTarget(56001); |
|
|
}); |
|
|
|
|
|
afterEach(function () { |
|
|
other.close(); |
|
|
}); |
|
|
|
|
|
|
|
|
function assertSuccess(server, done) { |
|
|
request(http) |
|
|
.get('/') |
|
|
.expect(200) |
|
|
.end(function (err, res) { |
|
|
if (err) { return done(err); } |
|
|
assert(res.text === 'Success'); |
|
|
done(); |
|
|
}); |
|
|
} |
|
|
|
|
|
describe('when host is a String', function () { |
|
|
it('when passed as an option', function (done) { |
|
|
|
|
|
http.use(proxy('http://localhost', { |
|
|
port: 56001 |
|
|
})); |
|
|
|
|
|
assertSuccess(http, done); |
|
|
}); |
|
|
|
|
|
it('when passed on the host string', function (done) { |
|
|
|
|
|
http.use(proxy('http://localhost:56001')); |
|
|
|
|
|
assertSuccess(http, done); |
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
describe('when host is a function', function () { |
|
|
|
|
|
|
|
|
it('and port is on the String returned', function (done) { |
|
|
|
|
|
http.use(proxy( |
|
|
function () { return 'http://localhost:56001'; } |
|
|
)); |
|
|
|
|
|
assertSuccess(http, done); |
|
|
}); |
|
|
|
|
|
it('and port passed as an option', function (done) { |
|
|
|
|
|
http.use(proxy( |
|
|
function () { return 'http://localhost'; }, |
|
|
{ port: 56001 } |
|
|
)); |
|
|
|
|
|
assertSuccess(http, done); |
|
|
}); |
|
|
}); |
|
|
|
|
|
}); |
|
|
|