mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
Add tests for headers bug fixes
This commit is contained in:
parent
ffe74ed299
commit
ecb547223f
@ -61,6 +61,12 @@ exports.createServer = function (options, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
if (options.outputHeaders){
|
||||
Object.keys(options.outputHeaders).forEach(function(header){
|
||||
res.setHeader(header, options.outputHeaders[header]);
|
||||
});
|
||||
}
|
||||
|
||||
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
||||
res.write(options.output || 'hello proxy');
|
||||
res.end();
|
||||
@ -114,6 +120,11 @@ exports.createProxyServer = function (options, callback) {
|
||||
function requestHandler(req, res) {
|
||||
var buffer = httpProxy.buffer(req);
|
||||
|
||||
if (options.outputHeaders){
|
||||
Object.keys(options.outputHeaders).forEach(function(header){
|
||||
res.setHeader(header, options.outputHeaders[header]);
|
||||
});
|
||||
}
|
||||
setTimeout(function () {
|
||||
//
|
||||
// Setup options dynamically for `RoutingProxy.prototype.proxyRequest`
|
||||
|
||||
@ -42,11 +42,41 @@ vows.describe(helpers.describe()).addBatch({
|
||||
"and headers": macros.http.assertProxied({
|
||||
request: { headers: { host: 'unknown.com' } }
|
||||
}),
|
||||
"and request close connection header": macros.http.assertProxied({
|
||||
request: { headers: { connection: "close" } },
|
||||
outputHeaders: { connection: "close" }
|
||||
}),
|
||||
"and request keep alive connection header": macros.http.assertProxied({
|
||||
request: { headers: { connection: "keep-alive" } },
|
||||
outputHeaders: { connection: "keep-alive" }
|
||||
}),
|
||||
"and response close connection header": macros.http.assertProxied({
|
||||
request: { headers: { connection: "" } }, // Must explicitly set to "" because otherwise node will automatically add a "connection: keep-alive" header
|
||||
targetHeaders: { connection: "close" },
|
||||
outputHeaders: { connection: "close" }
|
||||
}),
|
||||
"and response keep-alive connection header": macros.http.assertProxied({
|
||||
request: { headers: { connection: "" } }, // Must explicitly set to "" because otherwise node will automatically add a "connection: keep-alive" header
|
||||
targetHeaders: { connection: "keep-alive" },
|
||||
outputHeaders: { connection: "keep-alive" }
|
||||
}),
|
||||
"and no connection header": macros.http.assertProxied({
|
||||
request: { headers: { connection: "" } }, // Must explicitly set to "" because otherwise node will automatically add a "connection: keep-alive" header
|
||||
outputHeaders: { connection: "keep-alive" }
|
||||
}),
|
||||
"and forwarding enabled": macros.http.assertForwardProxied()
|
||||
},
|
||||
"and latency": macros.http.assertProxied({
|
||||
latency: 2000
|
||||
})
|
||||
"and latency": {
|
||||
"and no headers": macros.http.assertProxied({
|
||||
latency: 2000
|
||||
}),
|
||||
"and response headers": macros.http.assertProxied({
|
||||
targetHeaders: { "x-testheader": "target" },
|
||||
proxyHeaders: { "X-TestHeader": "proxy" },
|
||||
outputHeaders: { "x-testheader": "target" },
|
||||
latency: 1000
|
||||
})
|
||||
}
|
||||
},
|
||||
"With a no valid target server": {
|
||||
"and no latency": macros.http.assertInvalidProxy(),
|
||||
|
||||
@ -32,6 +32,12 @@ exports.assertRequest = function (options) {
|
||||
},
|
||||
"should succeed": function (err, res, body) {
|
||||
assert.isNull(err);
|
||||
if (options.assert.headers) {
|
||||
Object.keys(options.assert.headers).forEach(function(header){
|
||||
assert.equal(res.headers[header], options.assert.headers[header]);
|
||||
});
|
||||
}
|
||||
|
||||
if (options.assert.body) {
|
||||
assert.equal(body, options.assert.body);
|
||||
}
|
||||
@ -57,10 +63,14 @@ exports.assertRequest = function (options) {
|
||||
exports.assertProxied = function (options) {
|
||||
options = options || {};
|
||||
|
||||
var ports = options.ports || helpers.nextPortPair,
|
||||
output = options.output || 'hello world from ' + ports.target,
|
||||
protocol = helpers.protocols.proxy,
|
||||
req = options.request || {};
|
||||
var ports = options.ports || helpers.nextPortPair,
|
||||
output = options.output || 'hello world from ' + ports.target,
|
||||
outputHeaders = options.outputHeaders,
|
||||
targetHeaders = options.targetHeaders,
|
||||
proxyHeaders = options.proxyHeaders,
|
||||
protocol = helpers.protocols.proxy,
|
||||
req = options.request || {};
|
||||
|
||||
|
||||
req.uri = req.uri || protocol + '://127.0.0.1:' + ports.proxy;
|
||||
|
||||
@ -73,12 +83,14 @@ exports.assertProxied = function (options) {
|
||||
helpers.http.createServerPair({
|
||||
target: {
|
||||
output: output,
|
||||
outputHeaders: targetHeaders,
|
||||
port: ports.target,
|
||||
headers: req.headers
|
||||
},
|
||||
proxy: {
|
||||
latency: options.latency,
|
||||
port: ports.proxy,
|
||||
outputHeaders: proxyHeaders,
|
||||
proxy: {
|
||||
forward: options.forward,
|
||||
target: {
|
||||
@ -93,6 +105,7 @@ exports.assertProxied = function (options) {
|
||||
"the proxy request": exports.assertRequest({
|
||||
request: req,
|
||||
assert: {
|
||||
headers: outputHeaders,
|
||||
body: output
|
||||
}
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user