Skip to content

Commit 02eea77

Browse files
Trottaddaleax
authored andcommitted
test: revise test-http-response-multi-content-length
Isolate the two test cases here a bit more and refactor code. PR-URL: #32526 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent c71736e commit 02eea77

File tree

1 file changed

+30
-36
lines changed

1 file changed

+30
-36
lines changed

test/parallel/test-http-response-multi-content-length.js

+30-36
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,39 @@
33
const common = require('../common');
44
const http = require('http');
55
const assert = require('assert');
6-
const Countdown = require('../common/countdown');
76

8-
const MAX_COUNT = 2;
7+
// TODO(@jasnell) At some point this should be refactored as the API should not
8+
// be allowing users to set multiple content-length values in the first place.
99

10-
const server = http.createServer((req, res) => {
11-
const num = req.headers['x-num'];
12-
// TODO(@jasnell) At some point this should be refactored as the API
13-
// should not be allowing users to set multiple content-length values
14-
// in the first place.
15-
switch (num) {
16-
case '1':
17-
res.setHeader('content-length', [2, 1]);
18-
break;
19-
case '2':
20-
res.writeHead(200, { 'content-length': [1, 2] });
21-
break;
22-
default:
23-
assert.fail('should never get here');
24-
}
25-
res.end('ok');
26-
});
27-
28-
const countdown = new Countdown(MAX_COUNT, () => server.close());
29-
30-
server.listen(0, common.mustCall(() => {
31-
for (let n = 1; n <= MAX_COUNT; n++) {
32-
// This runs twice, the first time, the server will use
33-
// setHeader, the second time it uses writeHead. In either
34-
// case, the error handler must be called because the client
35-
// is not allowed to accept multiple content-length headers.
10+
function test(server) {
11+
server.listen(0, common.mustCall(() => {
3612
http.get(
37-
{ port: server.address().port, headers: { 'x-num': n } },
38-
(res) => {
39-
assert.fail('client allowed multiple content-length headers.');
40-
}
13+
{ port: server.address().port },
14+
() => { assert.fail('Client allowed multiple content-length headers.'); }
4115
).on('error', common.mustCall((err) => {
42-
assert(/^Parse Error/.test(err.message));
16+
assert.ok(err.message.startsWith('Parse Error'), err.message);
4317
assert.strictEqual(err.code, 'HPE_UNEXPECTED_CONTENT_LENGTH');
44-
countdown.dec();
18+
server.close();
4519
}));
46-
}
47-
}));
20+
}));
21+
}
22+
23+
// Test adding an extra content-length header using setHeader().
24+
{
25+
const server = http.createServer((req, res) => {
26+
res.setHeader('content-length', [2, 1]);
27+
res.end('ok');
28+
});
29+
30+
test(server);
31+
}
32+
33+
// Test adding an extra content-length header using writeHead().
34+
{
35+
const server = http.createServer((req, res) => {
36+
res.writeHead(200, { 'content-length': [1, 2] });
37+
res.end('ok');
38+
});
39+
40+
test(server);
41+
}

0 commit comments

Comments
 (0)