8000
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 141aec9 commit 83ddd3eCopy full SHA for 83ddd3e
test/parallel/test-tls-set-secure-context.js
@@ -4,6 +4,10 @@ const common = require('../common');
4
if (!common.hasCrypto)
5
common.skip('missing crypto');
6
7
+// This test verifies the behavior of the tls setSecureContext() method.
8
+// It also verifies that existing connections are not disrupted when the
9
+// secure context is changed.
10
+
11
const assert = require('assert');
12
const https = require('https');
13
const fixtures = require('../common/fixtures');
@@ -19,54 +23,63 @@ const credentialOptions = [
19
23
ca: fixtures.readKey('ca2-cert.pem')
20
24
}
21
25
];
22
-let requestsCount = 0;
26
let firstResponse;
27
28
const server = https.createServer(credentialOptions[0], (req, res) => {
- requestsCount++;
29
+ const id = +req.headers.id;
30
- if (requestsCount === 1) {
31
+ if (id === 1) {
32
firstResponse = res;
33
firstResponse.write('multi-');
34
return;
- } else if (requestsCount === 3) {
35
+ } else if (id === 4) {
36
firstResponse.write('success-');
37
38
39
res.end('success');
40
});
41
-server.listen(0, common.mustCall(async () => {
42
+server.listen(0, common.mustCall(() => {
43
const { port } = server.address();
- const firstRequest = makeRequest(port);
44
+ const firstRequest = makeRequest(port, 1);
45
46
+ async function makeRemainingRequests() {
47
+ // Wait until the first request is guaranteed to have been handled.
48
+ if (!firstResponse) {
49
+ return setImmediate(makeRemainingRequests);
50
+ }
51
- assert.strictEqual(await makeRequest(port), 'success');
52
+ assert.strictEqual(await makeRequest(port, 2), 'success');
53
- server.setSecureContext(credentialOptions[1]);
- firstResponse.write('request-');
- await assert.rejects(async () => {
- await makeRequest(port);
- }, /^Error: self signed certificate$/);
54
+ server.setSecureContext(credentialOptions[1]);
55
+ firstResponse.write('request-');
56
+ await assert.rejects(async () => {
57
+ await makeRequest(port, 3);
58
+ }, /^Error: self signed certificate$/);
59
- server.setSecureContext(credentialOptions[0]);
60
+ server.setSecureContext(credentialOptions[0]);
61
+ assert.strictEqual(await makeRequest(port, 4), 'success');
62
- firstResponse.end('fun!');
63
64
+ firstResponse.end('fun!');
65
66
+ await makeRequest(port, 5);
67
68
69
+ assert.strictEqual(await firstRequest, 'multi-request-success-fun!');
70
+ server.close();
71
72
- assert.strictEqual(await firstRequest, 'multi-request-success-fun!');
- server.close();
73
+ makeRemainingRequests();
74
}));
75
-function makeRequest(port) {
76
+function makeRequest(port, id) {
77
return new Promise((resolve, reject) => {
78
const options = {
79
rejectUnauthorized: true,
80
ca: credentialOptions[0].ca,
- servername: 'agent1'
81
+ servername: 'agent1',
82
+ headers: { id }
83
};
84
85
https.get(`https://localhost:${port}`, options, (res) => {