Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 81a2194

Browse filesBrowse files
tniessendanielleadams
authored andcommitted
test: simplify test-tls-set-secure-context
Instead of recursively scheduling makeRemainingRequests and ignoring its outcome, safely loop within the async function. Avoid unncessary async lambda functions passed to assert.rejects. Use events.once() to simplify control flow in makeRequest, instead of manually constructing a Promise. PR-URL: #43878 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent d7e9bd1 commit 81a2194
Copy full SHA for 81a2194

File tree

Expand file treeCollapse file tree

1 file changed

+28
-41
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+28
-41
lines changed
Open diff view settings
Collapse file

‎test/parallel/test-tls-set-secure-context.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-tls-set-secure-context.js
+28-41Lines changed: 28 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ if (!common.hasCrypto)
99
// secure context is changed.
1010

1111
const assert = require('assert');
12+
const events = require('events');
1213
const https = require('https');
14+
const timers = require('timers/promises');
1315
const fixtures = require('../common/fixtures');
1416
const credentialOptions = [
1517
{
@@ -43,10 +45,10 @@ server.listen(0, common.mustCall(() => {
4345
const { port } = server.address();
4446
const firstRequest = makeRequest(port, 1);
4547

46-
async function makeRemainingRequests() {
48+
(async function makeRemainingRequests() {
4749
// Wait until the first request is guaranteed to have been handled.
48-
if (!firstResponse) {
49-
return setImmediate(makeRemainingRequests);
50+
while (!firstResponse) {
51+
await timers.setImmediate();
5052
}
5153

5254
assert.strictEqual(await makeRequest(port, 2), 'success');
@@ -56,53 +58,38 @@ server.listen(0, common.mustCall(() => {
5658
const errorMessageRegex = common.hasOpenSSL3 ?
5759
/^Error: self-signed certificate$/ :
5860
/^Error: self signed certificate$/;
59-
await assert.rejects(async () => {
60-
await makeRequest(port, 3);
61-
}, errorMessageRegex);
61+
await assert.rejects(makeRequest(port, 3), errorMessageRegex);
6262

6363
server.setSecureContext(credentialOptions[0]);
6464
assert.strictEqual(await makeRequest(port, 4), 'success');
6565

6666
server.setSecureContext(credentialOptions[1]);
6767
firstResponse.end('fun!');
68-
await assert.rejects(async () => {
69-
await makeRequest(port, 5);
70-
}, errorMessageRegex);
68+
await assert.rejects(makeRequest(port, 5), errorMessageRegex);
7169

7270
assert.strictEqual(await firstRequest, 'multi-request-success-fun!');
7371
server.close();
74-
}
75-
76-
makeRemainingRequests();
72+
})().then(common.mustCall());
7773
}));
7874

79-
function makeRequest(port, id) {
80-
return new Promise((resolve, reject) => {
81-
const options = {
82-
rejectUnauthorized: true,
83-
ca: credentialOptions[0].ca,
84-
servername: 'agent1',
85-
headers: { id }
86-
};
87-
88-
let errored = false;
89-
https.get(`https://localhost:${port}`, options, (res) => {
90-
let response = '';
91-
92-
res.setEncoding('utf8');
93-
94-
res.on('data', (chunk) => {
95-
response += chunk;
96-
});
97-
98-
res.on('end', common.mustCall(() => {
99-
resolve(response);
100-
}));
101-
}).on('error', (err) => {
102-
errored = true;
103-
reject(err);
104-
}).on('finish', () => {
105-
assert.strictEqual(errored, false);
106-
});
107-
});
75+
async function makeRequest(port, id) {
76+
const options = {
77+
rejectUnauthorized: true,
78+
ca: credentialOptions[0].ca,
79+
servername: 'agent1',
80+
headers: { id },
81+
agent: new https.Agent()
82+
};
83+
84+
const req = https.get(`https://localhost:${port}`, options);
85+
86+
let errored = false;
87+
req.on('error', () => errored = true);
88+
req.on('finish', () => assert.strictEqual(errored, false));
89+
90+
const [res] = await events.once(req, 'response');
91+
res.setEncoding('utf8');
92+
let response = '';
93+
for await (const chunk of res) response += chunk;
94+
return response;
10895
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.