mirror of
https://github.com/denoland/deno.git
synced 2024-12-30 02:59:11 -05:00
78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
|
// deno-fmt-ignore-file
|
||
|
// deno-lint-ignore-file
|
||
|
|
||
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
||
|
// Taken from Node 20.11.1
|
||
|
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
require('../common');
|
||
|
|
||
|
const assert = require('assert');
|
||
|
const http = require('http');
|
||
|
|
||
|
function execute(options) {
|
||
|
http.createServer(function(req, res) {
|
||
|
const expectHeaders = {
|
||
|
'x-foo': 'boom',
|
||
|
'cookie': 'a=1; b=2; c=3',
|
||
|
'connection': 'keep-alive',
|
||
|
'host': 'example.com',
|
||
|
};
|
||
|
|
||
|
// no Host header when you set headers an array
|
||
|
if (!Array.isArray(options.headers)) {
|
||
|
expectHeaders.host = `localhost:${this.address().port}`;
|
||
|
}
|
||
|
|
||
|
// no Authorization header when you set headers an array
|
||
|
if (options.auth && !Array.isArray(options.headers)) {
|
||
|
expectHeaders.authorization =
|
||
|
`Basic ${Buffer.from(options.auth).toString('base64')}`;
|
||
|
}
|
||
|
|
||
|
this.close();
|
||
|
|
||
|
assert.deepStrictEqual(req.headers, expectHeaders);
|
||
|
|
||
|
res.writeHead(200, { 'Connection': 'close' });
|
||
|
res.end();
|
||
|
}).listen(0, function() {
|
||
|
options = Object.assign(options, {
|
||
|
port: this.address().port,
|
||
|
path: '/'
|
||
|
});
|
||
|
const req = http.request(options);
|
||
|
req.end();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Should be the same except for implicit Host header on the first two
|
||
|
execute({ headers: { 'x-foo': 'boom', 'cookie': 'a=1; b=2; c=3' } });
|
||
|
execute({ headers: { 'x-foo': 'boom', 'cookie': [ 'a=1', 'b=2', 'c=3' ] } });
|
||
|
execute({ headers: [
|
||
|
[ 'x-foo', 'boom' ],
|
||
|
[ 'cookie', 'a=1; b=2; c=3' ],
|
||
|
[ 'Host', 'example.com' ],
|
||
|
] });
|
||
|
execute({ headers: [
|
||
|
[ 'x-foo', 'boom' ],
|
||
|
[ 'cookie', [ 'a=1', 'b=2', 'c=3' ]],
|
||
|
[ 'Host', 'example.com' ],
|
||
|
] });
|
||
|
execute({ headers: [
|
||
|
[ 'x-foo', 'boom' ], [ 'cookie', 'a=1' ],
|
||
|
[ 'cookie', 'b=2' ], [ 'cookie', 'c=3' ],
|
||
|
[ 'Host', 'example.com'],
|
||
|
] });
|
||
|
|
||
|
// Authorization and Host header both missing from the second
|
||
|
execute({ auth: 'foo:bar', headers:
|
||
|
{ 'x-foo': 'boom', 'cookie': 'a=1; b=2; c=3' } });
|
||
|
execute({ auth: 'foo:bar', headers: [
|
||
|
[ 'x-foo', 'boom' ], [ 'cookie', 'a=1' ],
|
||
|
[ 'cookie', 'b=2' ], [ 'cookie', 'c=3'],
|
||
|
[ 'Host', 'example.com'],
|
||
|
] });
|