var common = require('../common'); var assert = require('assert'); if (!common.hasCrypto) { console.log('1..0 # Skipped: missing crypto'); process.exit(); } var tls = require('tls'); var net = require('net'); var fs = require('fs'); var path = require('path'); var serverConnected = 0; var clientConnected = 0; var options = { key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')), cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem')) }; var server = tls.createServer(options, function(socket) { serverConnected++; socket.end('Hello'); }).listen(common.PORT, function() { var waiting = 2; function establish(socket) { var client = tls.connect({ rejectUnauthorized: false, socket: socket }, function() { clientConnected++; var data = ''; client.on('data', function(chunk) { data += chunk.toString(); }); client.on('end', function() { assert.equal(data, 'Hello'); if (--waiting === 0) server.close(); }); }); assert(client.readable); assert(client.writable); } // Already connected socket var connected = net.connect(common.PORT, function() { establish(connected); }); // Connecting socket var connecting = net.connect(common.PORT); establish(connecting); }); process.on('exit', function() { assert.equal(serverConnected, 2); assert.equal(clientConnected, 2); });