aboutsummaryrefslogtreecommitdiff
path: root/test/parallel
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel')
-rw-r--r--test/parallel/test-https-client-resume.js27
-rw-r--r--test/parallel/test-tls-async-cb-after-socket-end.js10
-rw-r--r--test/parallel/test-tls-client-resume.js42
-rw-r--r--test/parallel/test-tls-ticket-cluster.js3
-rw-r--r--test/parallel/test-tls-ticket.js10
5 files changed, 58 insertions, 34 deletions
diff --git a/test/parallel/test-https-client-resume.js b/test/parallel/test-https-client-resume.js
index 04a89364fe..cf1bbdf262 100644
--- a/test/parallel/test-https-client-resume.js
+++ b/test/parallel/test-https-client-resume.js
@@ -43,37 +43,34 @@ const server = https.createServer(options, common.mustCall((req, res) => {
}, 2));
// start listening
-server.listen(0, function() {
-
- let session1 = null;
+server.listen(0, common.mustCall(function() {
const client1 = tls.connect({
port: this.address().port,
rejectUnauthorized: false
- }, () => {
+ }, common.mustCall(() => {
console.log('connect1');
- assert.ok(!client1.isSessionReused(), 'Session *should not* be reused.');
- session1 = client1.getSession();
+ assert.strictEqual(client1.isSessionReused(), false);
client1.write('GET / HTTP/1.0\r\n' +
'Server: 127.0.0.1\r\n' +
'\r\n');
- });
+ }));
- client1.on('close', () => {
- console.log('close1');
+ client1.on('session', common.mustCall((session) => {
+ console.log('session');
const opts = {
port: server.address().port,
rejectUnauthorized: false,
- session: session1
+ session,
};
- const client2 = tls.connect(opts, () => {
+ const client2 = tls.connect(opts, common.mustCall(() => {
console.log('connect2');
- assert.ok(client2.isSessionReused(), 'Session *should* be reused.');
+ assert.strictEqual(client2.isSessionReused(), true);
client2.write('GET / HTTP/1.0\r\n' +
'Server: 127.0.0.1\r\n' +
'\r\n');
- });
+ }));
client2.on('close', () => {
console.log('close2');
@@ -81,7 +78,7 @@ server.listen(0, function() {
});
client2.resume();
- });
+ }));
client1.resume();
-});
+}));
diff --git a/test/parallel/test-tls-async-cb-after-socket-end.js b/test/parallel/test-tls-async-cb-after-socket-end.js
index 6ca38461fd..5c812c8f04 100644
--- a/test/parallel/test-tls-async-cb-after-socket-end.js
+++ b/test/parallel/test-tls-async-cb-after-socket-end.js
@@ -6,9 +6,15 @@ const fixtures = require('../common/fixtures');
const SSL_OP_NO_TICKET = require('crypto').constants.SSL_OP_NO_TICKET;
const tls = require('tls');
-// Check tls async callback after socket ends
+// Check that TLS1.2 session resumption callbacks don't explode when made after
+// the tls socket is destroyed. Disable TLS ticket support to force the legacy
+// session resumption mechanism to be used.
+
+// TLS1.2 is the last protocol version to support TLS sessions, after that the
+// new and resume session events will never be emitted on the server.
const options = {
+ maxVersion: 'TLSv1.2',
secureOptions: SSL_OP_NO_TICKET,
key: fixtures.readSync('test_key.pem'),
cert: fixtures.readSync('test_cert.pem')
@@ -25,6 +31,8 @@ server.on('newSession', common.mustCall((key, session, done) => {
server.on('resumeSession', common.mustCall((id, cb) => {
sessionCb = cb;
+ // Destroy the client and then call the session cb, to check that the cb
+ // doesn't explode when called after the handle has been destroyed.
next();
}));
diff --git a/test/parallel/test-tls-client-resume.js b/test/parallel/test-tls-client-resume.js
index db4c898d74..9f868fdcdc 100644
--- a/test/parallel/test-tls-client-resume.js
+++ b/test/parallel/test-tls-client-resume.js
@@ -20,9 +20,9 @@
// USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict';
-// Create an ssl server. First connection, validate that not resume.
-// Cache session and close connection. Use session on second connection.
-// ASSERT resumption.
+
+// Check that the ticket from the first connection causes session resumption
+// when used to make a second connection.
const common = require('../common');
if (!common.hasCrypto)
@@ -43,20 +43,28 @@ const server = tls.Server(options, common.mustCall((socket) => {
}, 2));
// start listening
-server.listen(0, function() {
+server.listen(0, common.mustCall(function() {
+ let sessionx = null;
let session1 = null;
const client1 = tls.connect({
port: this.address().port,
rejectUnauthorized: false
- }, () => {
+ }, common.mustCall(() => {
console.log('connect1');
- assert.ok(!client1.isSessionReused(), 'Session *should not* be reused.');
- session1 = client1.getSession();
- });
+ assert.strictEqual(client1.isSessionReused(), false);
+ sessionx = client1.getSession();
+ }));
+
+ client1.once('session', common.mustCall((session) => {
+ console.log('session1');
+ session1 = session;
+ }));
- client1.on('close', () => {
- console.log('close1');
+ client1.on('close', common.mustCall(() => {
+ assert(sessionx);
+ assert(session1);
+ assert.strictEqual(sessionx.compare(session1), 0);
const opts = {
port: server.address().port,
@@ -64,18 +72,18 @@ server.listen(0, function() {
session: session1
};
- const client2 = tls.connect(opts, () => {
+ const client2 = tls.connect(opts, common.mustCall(() => {
console.log('connect2');
- assert.ok(client2.isSessionReused(), 'Session *should* be reused.');
- });
+ assert.strictEqual(client2.isSessionReused(), true);
+ }));
- client2.on('close', () => {
+ client2.on('close', common.mustCall(() => {
console.log('close2');
server.close();
- });
+ }));
client2.resume();
- });
+ }));
client1.resume();
-});
+}));
diff --git a/test/parallel/test-tls-ticket-cluster.js b/test/parallel/test-tls-ticket-cluster.js
index 32a5c671d8..98fe533b69 100644
--- a/test/parallel/test-tls-ticket-cluster.js
+++ b/test/parallel/test-tls-ticket-cluster.js
@@ -45,7 +45,6 @@ if (cluster.isMaster) {
session: lastSession,
rejectUnauthorized: false
}, () => {
- lastSession = c.getSession();
c.end();
if (++reqCount === expectedReqCount) {
@@ -55,6 +54,8 @@ if (cluster.isMaster) {
} else {
shoot();
}
+ }).once('session', (session) => {
+ lastSession = session;
});
}
diff --git a/test/parallel/test-tls-ticket.js b/test/parallel/test-tls-ticket.js
index 187dd22cee..d11535dd3a 100644
--- a/test/parallel/test-tls-ticket.js
+++ b/test/parallel/test-tls-ticket.js
@@ -81,6 +81,15 @@ const shared = net.createServer(function(c) {
});
});
+// 'session' events only occur for new sessions. The first connection is new.
+// After, for each set of 3 connections, the middle connection is made when the
+// server has random keys set, so the client's ticket is silently ignored, and a
+// new ticket is sent.
+const onNewSession = common.mustCall((s, session) => {
+ assert(session);
+ assert.strictEqual(session.compare(s.getSession()), 0);
+}, 4);
+
function start(callback) {
let sess = null;
let left = servers.length;
@@ -99,6 +108,7 @@ function start(callback) {
else
connect();
});
+ s.once('session', (session) => onNewSession(s, session));
}
connect();