Skip to content
Browse files

Add tests for headers bug fixes

  • Loading branch information...
1 parent 3438e54 commit 876157f51ed9a9e8d9446700f72f2a11df9b8440 @gilad61 gilad61 committed
Showing with 61 additions and 7 deletions.
  1. +11 −0 test/helpers/http.js
  2. +33 −3 test/http/http-test.js
  3. +17 −4 test/macros/http.js
View
11 test/helpers/http.js
@@ -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();
@@ -113,6 +119,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`
View
36 test/http/http-test.js
@@ -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(),
View
21 test/macros/http.js
@@ -31,6 +31,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);
}
@@ -56,10 +62,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;
@@ -72,12 +82,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: {
@@ -92,6 +104,7 @@ exports.assertProxied = function (options) {
"the proxy request": exports.assertRequest({
request: req,
assert: {
+ headers: outputHeaders,
body: output
}
})

0 comments on commit 876157f

Please sign in to comment.
Something went wrong with that request. Please try again.