From 219a2982dde56f5551dcd5a1acae64b01b747adc Mon Sep 17 00:00:00 2001 From: Gareth Robinson Date: Sun, 22 Apr 2018 22:54:44 +0100 Subject: [PATCH 1/2] Alterations for failing CI tests --- tests/test-headers.js | 90 +++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 37 deletions(-) diff --git a/tests/test-headers.js b/tests/test-headers.js index c1c29622a..6f2b79605 100644 --- a/tests/test-headers.js +++ b/tests/test-headers.js @@ -5,6 +5,15 @@ var request = require('../index') var util = require('util') var tape = require('tape') var url = require('url') +var os = require('os') + +var interfaces = os.networkInterfaces() +var loopbackKeyTest = exports.isWindows ? /Loopback Pseudo-Interface/ : /lo/ +var hasIPv6interface = Object.keys(interfaces).some(function (name) { + return loopbackKeyTest.test(name) && interfaces[name].some(function (info) { + return info.family === 'IPv6' + }) +}) var s = server.createServer() @@ -171,6 +180,11 @@ tape('undefined headers', function (t) { }) }) +var isExpectedHeaderCharacterError = function (headerName, err) { + return err.message === 'The header content contains invalid characters' || + err.message === ('Invalid character in header content ["' + headerName + '"]') +} + tape('catch invalid characters error - GET', function (t) { request({ url: s.url + '/headers.json', @@ -178,10 +192,10 @@ tape('catch invalid characters error - GET', function (t) { 'test': 'אבגד' } }, function (err, res, body) { - t.equal(err.message, 'The header content contains invalid characters') + t.true(isExpectedHeaderCharacterError('test', err)) }) .on('error', function (err) { - t.equal(err.message, 'The header content contains invalid characters') + t.true(isExpectedHeaderCharacterError('test', err)) t.end() }) }) @@ -195,49 +209,51 @@ tape('catch invalid characters error - POST', function (t) { }, body: 'beep' }, function (err, res, body) { - t.equal(err.message, 'The header content contains invalid characters') + t.true(isExpectedHeaderCharacterError('test', err)) }) .on('error', function (err) { - t.equal(err.message, 'The header content contains invalid characters') + t.true(isExpectedHeaderCharacterError('test', err)) t.end() }) }) -tape('IPv6 Host header', function (t) { - // Horrible hack to observe the raw data coming to the server - var rawData = '' +if (hasIPv6interface) { + tape('IPv6 Host header', function (t) { + // Horrible hack to observe the raw data coming to the server + var rawData = '' - s.on('connection', function (socket) { - if (socket.ondata) { - var ondata = socket.ondata - } - function handledata (d, start, end) { - if (ondata) { - rawData += d.slice(start, end).toString() - return ondata.apply(this, arguments) - } else { - rawData += d + s.on('connection', function (socket) { + if (socket.ondata) { + var ondata = socket.ondata } - } - socket.on('data', handledata) - socket.ondata = handledata - }) + function handledata (d, start, end) { + if (ondata) { + rawData += d.slice(start, end).toString() + return ondata.apply(this, arguments) + } else { + rawData += d + } + } + socket.on('data', handledata) + socket.ondata = handledata + }) - function checkHostHeader (host) { - t.ok( - new RegExp('^Host: ' + host + '$', 'im').test(rawData), - util.format( - 'Expected "Host: %s" in data "%s"', - host, rawData.trim().replace(/\r?\n/g, '\\n'))) - rawData = '' - } + function checkHostHeader (host) { + t.ok( + new RegExp('^Host: ' + host + '$', 'im').test(rawData), + util.format( + 'Expected "Host: %s" in data "%s"', + host, rawData.trim().replace(/\r?\n/g, '\\n'))) + rawData = '' + } - request({ - url: s.url.replace(url.parse(s.url).hostname, '[::1]') + '/headers.json' - }, function (err, res, body) { - t.equal(err, null) - t.equal(res.statusCode, 200) - checkHostHeader('\\[::1\\]:' + s.port) - t.end() + request({ + url: s.url.replace(url.parse(s.url).hostname, '[::1]') + '/headers.json' + }, function (err, res, body) { + t.equal(err, null) + t.equal(res.statusCode, 200) + checkHostHeader('\\[::1\\]:' + s.port) + t.end() + }) }) -}) +} From 3745cece1d3be3cd6612c1ac9fed9087674b75e2 Mon Sep 17 00:00:00 2001 From: Gareth Robinson Date: Mon, 23 Apr 2018 11:13:58 +0100 Subject: [PATCH 2/2] Correction for Windows OS identification --- tests/test-headers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test-headers.js b/tests/test-headers.js index 6f2b79605..b80c9b312 100644 --- a/tests/test-headers.js +++ b/tests/test-headers.js @@ -8,7 +8,7 @@ var url = require('url') var os = require('os') var interfaces = os.networkInterfaces() -var loopbackKeyTest = exports.isWindows ? /Loopback Pseudo-Interface/ : /lo/ +var loopbackKeyTest = os.platform() === 'win32' ? /Loopback Pseudo-Interface/ : /lo/ var hasIPv6interface = Object.keys(interfaces).some(function (name) { return loopbackKeyTest.test(name) && interfaces[name].some(function (info) { return info.family === 'IPv6'