Skip to content

Commit

Permalink
Add tests for headers bug fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
gilad61 authored and indexzero committed Mar 9, 2013
1 parent ffe74ed commit ecb5472
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 7 deletions.
11 changes: 11 additions & 0 deletions test/helpers/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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`
Expand Down
36 changes: 33 additions & 3 deletions test/http/http-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down
21 changes: 17 additions & 4 deletions test/macros/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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;

Expand All @@ -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: {
Expand All @@ -93,6 +105,7 @@ exports.assertProxied = function (options) {
"the proxy request": exports.assertRequest({
request: req,
assert: {
headers: outputHeaders,
body: output
}
})
Expand Down

0 comments on commit ecb5472

Please sign in to comment.