diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/node_compat/config.jsonc | 2 | ||||
-rw-r--r-- | cli/tests/node_compat/test/parallel/test-http-content-length.js | 111 |
2 files changed, 113 insertions, 0 deletions
diff --git a/cli/tests/node_compat/config.jsonc b/cli/tests/node_compat/config.jsonc index 576ff7305..c355682d9 100644 --- a/cli/tests/node_compat/config.jsonc +++ b/cli/tests/node_compat/config.jsonc @@ -72,6 +72,7 @@ "test-fs-rmdir-recursive.js", "test-fs-write-file.js", "test-fs-write.js", + "test-http-content-length.js", "test-net-better-error-messages-path.js", "test-net-connect-buffer.js", "test-net-connect-buffer2.js", @@ -363,6 +364,7 @@ // TODO(lev): ClientRequest.socket is not polyfilled so this test keeps // failing //"test-http-client-set-timeout.js", + "test-http-content-length.js", "test-http-localaddress.js", // TODO(bartlomieju): temporarily disabled while we iterate on the HTTP client // "test-http-outgoing-buffer.js", diff --git a/cli/tests/node_compat/test/parallel/test-http-content-length.js b/cli/tests/node_compat/test/parallel/test-http-content-length.js new file mode 100644 index 000000000..53a5896d3 --- /dev/null +++ b/cli/tests/node_compat/test/parallel/test-http-content-length.js @@ -0,0 +1,111 @@ +// deno-fmt-ignore-file +// deno-lint-ignore-file + +// Copyright Joyent and Node contributors. All rights reserved. MIT license. +// Taken from Node 18.12.1 +// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually. + +'use strict'; +require('../common'); +const assert = require('assert'); +const http = require('http'); +const Countdown = require('../common/countdown'); + +const expectedHeadersMultipleWrites = { + 'connection': 'close', + 'transfer-encoding': 'chunked', +}; + +const expectedHeadersEndWithData = { + 'connection': 'close', + 'content-length': String('hello world'.length) +}; + +const expectedHeadersEndNoData = { + 'connection': 'close', + 'content-length': '0', +}; + +let error; +const countdown = new Countdown(3, () => server.close()); + +const server = http.createServer(function(req, res) { + res.removeHeader('Date'); + + try { + switch (req.url.substr(1)) { + case 'multiple-writes': + // assert.deepStrictEqual(req.headers, expectedHeadersMultipleWrites); + assert.equal(req.headers['transfer-encoding'], expectedHeadersMultipleWrites['transfer-encoding']); + assert.equal(req.headers['content-length'], expectedHeadersMultipleWrites['content-length']); + res.write('hello'); + res.end('world'); + break; + case 'end-with-data': + // assert.deepStrictEqual(req.headers, expectedHeadersEndWithData); + assert.equal(req.headers['transfer-encoding'], expectedHeadersEndWithData['transfer-encoding']); + assert.equal(req.headers['content-length'], expectedHeadersEndWithData['content-length']); + res.end('hello world'); + break; + case 'empty': + // assert.deepStrictEqual(req.headers, expectedHeadersEndNoData); + assert.equal(req.headers['transfer-encoding'], expectedHeadersEndNoData['transfer-encoding']); + assert.equal(req.headers['content-length'], expectedHeadersEndNoData['content-length']); + res.end(); + break; + default: + throw new Error('Unreachable'); + } + countdown.dec(); + } + catch (e) { + error = e; + server.close(); + } +}); + +server.on('close', () => { + if (error) throw error +}) + +server.listen(0, function() { + let req; + + req = http.request({ + port: this.address().port, + method: 'POST', + path: '/multiple-writes' + }); + req.removeHeader('Date'); + req.removeHeader('Host'); + req.write('hello '); + req.end('world'); + req.on('response', function(res) { + // assert.deepStrictEqual(res.headers, expectedHeadersMultipleWrites); + }); + + req = http.request({ + port: this.address().port, + method: 'POST', + path: '/end-with-data' + }); + req.removeHeader('Date'); + req.removeHeader('Host'); + req.end('hello world'); + req.on('response', function(res) { + // assert.deepStrictEqual(res.headers, expectedHeadersEndWithData); + }); + + req = http.request({ + port: this.address().port, + method: 'POST', + path: '/empty' + }); + req.removeHeader('Date'); + req.removeHeader('Host'); + req.end(); + req.on('response', function(res) { + // assert.deepStrictEqual(res.headers, expectedHeadersEndNoData); + }); + +}); |