summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/node_compat/config.jsonc2
-rw-r--r--cli/tests/node_compat/test/parallel/test-http-content-length.js111
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);
+ });
+
+});