mirror of
https://github.com/nodejs/node.git
synced 2025-05-07 09:52:26 +00:00

Enable linting for the test directory. A number of changes was made so all tests conform the current rules used by lib and src directories. The only exception for tests is that unreachable (dead) code is allowed. test-fs-non-number-arguments-throw had to be excluded from the changes because of a weird issue on Windows CI. PR-URL: https://github.com/nodejs/io.js/pull/1721 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
91 lines
2.3 KiB
JavaScript
91 lines
2.3 KiB
JavaScript
'use strict';
|
|
// Verify that the HTTP server implementation handles multiple instances
|
|
// of the same header as per RFC2616: joining the handful of fields by ', '
|
|
// that support it, and dropping duplicates for other fields.
|
|
|
|
var common = require('../common');
|
|
var assert = require('assert');
|
|
var http = require('http');
|
|
|
|
var multipleAllowed = [
|
|
'Accept',
|
|
'Accept-Charset',
|
|
'Accept-Encoding',
|
|
'Accept-Language',
|
|
'Connection',
|
|
'Cookie',
|
|
'DAV', // GH-2750
|
|
'Pragma', // GH-715
|
|
'Link', // GH-1187
|
|
'WWW-Authenticate', // GH-1083
|
|
'Proxy-Authenticate', // GH-4052
|
|
'Sec-Websocket-Extensions', // GH-2764
|
|
'Sec-Websocket-Protocol', // GH-2764
|
|
'Via', // GH-6660
|
|
|
|
// not a special case, just making sure it's parsed correctly
|
|
'X-Forwarded-For',
|
|
|
|
// make sure that unspecified headers is treated as multiple
|
|
'Some-Random-Header',
|
|
'X-Some-Random-Header',
|
|
];
|
|
|
|
var multipleForbidden = [
|
|
'Content-Type',
|
|
'User-Agent',
|
|
'Referer',
|
|
'Host',
|
|
'Authorization',
|
|
'Proxy-Authorization',
|
|
'If-Modified-Since',
|
|
'If-Unmodified-Since',
|
|
'From',
|
|
'Location',
|
|
'Max-Forwards',
|
|
|
|
// special case, tested differently
|
|
//'Content-Length',
|
|
];
|
|
|
|
var srv = http.createServer(function(req, res) {
|
|
multipleForbidden.forEach(function(header) {
|
|
assert.equal(req.headers[header.toLowerCase()],
|
|
'foo', 'header parsed incorrectly: ' + header);
|
|
});
|
|
multipleAllowed.forEach(function(header) {
|
|
assert.equal(req.headers[header.toLowerCase()],
|
|
'foo, bar', 'header parsed incorrectly: ' + header);
|
|
});
|
|
assert.equal(req.headers['content-length'], 0);
|
|
|
|
res.writeHead(200, {'Content-Type' : 'text/plain'});
|
|
res.end('EOF');
|
|
|
|
srv.close();
|
|
});
|
|
|
|
function makeHeader(value) {
|
|
return function(header) {
|
|
return [header, value];
|
|
};
|
|
}
|
|
|
|
var headers = []
|
|
.concat(multipleAllowed.map(makeHeader('foo')))
|
|
.concat(multipleForbidden.map(makeHeader('foo')))
|
|
.concat(multipleAllowed.map(makeHeader('bar')))
|
|
.concat(multipleForbidden.map(makeHeader('bar')))
|
|
// content-length is a special case since node.js
|
|
// is dropping connetions with non-numeric headers
|
|
.concat([['content-length', 0], ['content-length', 123]]);
|
|
|
|
srv.listen(common.PORT, function() {
|
|
http.get({
|
|
host: 'localhost',
|
|
port: common.PORT,
|
|
path: '/',
|
|
headers: headers,
|
|
});
|
|
});
|