From 7b6ce1a3df53a6ef337744f88f4e98bd084fe34c Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Sat, 11 Nov 2017 02:08:44 +0100 Subject: [PATCH] Fix failing tests for 0.10.x, 4.x and 5.x Travis build failed on "Uncaught TypeError: Object.keys called on non-object". That's a real error (res._headers was initially null until a header is set). --- lib/cors-anywhere.js | 2 +- test/test.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/cors-anywhere.js b/lib/cors-anywhere.js index 97e7b3b..7a82400 100644 --- a/lib/cors-anywhere.js +++ b/lib/cors-anywhere.js @@ -414,7 +414,7 @@ exports.createServer = function createServer(options) { // When the error occurs after setting headers but before writing the response, // then any previously set headers must be removed. - var headerNames = res.getHeaderNames ? res.getHeaderNames() : Object.keys(res._headers); + var headerNames = res.getHeaderNames ? res.getHeaderNames() : Object.keys(res._headers || {}); headerNames.forEach(function(name) { res.removeHeader(name); }); diff --git a/test/test.js b/test/test.js index d2885e5..367a01a 100644 --- a/test/test.js +++ b/test/test.js @@ -392,6 +392,16 @@ describe('Proxy errors', function() { }); it('Invalid HTTP status code', function(done) { + // Strict HTTP status validation was introduced in Node 4.5.5+, 5.11.0+. + // https://github.com/nodejs/node/pull/6291 + var nodev = process.versions.node.split('.').map(function(v) { return parseInt(v); }); + if (nodev[0] < 4 || + nodev[0] === 4 && nodev[1] < 5 || + nodev[0] === 4 && nodev[1] === 5 && nodev[2] < 5 || + nodev[0] === 5 && nodev[1] < 11) { + this.skip(); + } + var errorMessage = 'RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: 0'; if (parseInt(process.versions.node, 10) < 9) { errorMessage = 'RangeError: Invalid status code: 0';