Blame SOURCES/0001-Disable-failing-tests.patch

503c61
From 3f07473293edf0fc1b8e786952a643d70f86b645 Mon Sep 17 00:00:00 2001
8dc1ea
From: Zuzana Svetlikova <zsvetlik@redhat.com>
503c61
Date: Thu, 7 Sep 2017 12:21:29 +0000
503c61
Subject: [PATCH 2/2] Disable failed tests
8dc1ea
8dc1ea
---
503c61
 test/disabled/test-env-var-no-warnings.js          |  41 ++++
503c61
 test/disabled/test-http-dns-error.js               |  43 ++++
503c61
 .../disabled/test-https-agent-create-connection.js | 144 ++++++++++++++
503c61
 .../test-https-agent-disable-session-reuse.js      |  55 +++++
503c61
 test/disabled/test-https-agent-session-eviction.js |  84 ++++++++
503c61
 test/disabled/test-https-agent-sni.js              |  49 +++++
503c61
 test/disabled/test-https-agent.js                  |  50 +++++
503c61
 test/disabled/test-https-client-reject.js          |  64 ++++++
503c61
 test/disabled/test-https-client-resume.js          |  62 ++++++
503c61
 test/disabled/test-https-host-headers.js           | 109 ++++++++++
503c61
 test/disabled/test-https-set-timeout-server.js     | 221 +++++++++++++++++++++
503c61
 test/disabled/test-https-simple.js                 |  93 +++++++++
503c61
 test/disabled/test-https-strict.js                 | 201 +++++++++++++++++++
503c61
 ...test-net-better-error-messages-port-hostname.js |  15 ++
503c61
 test/disabled/test-net-connect-immediate-finish.js |  17 ++
503c61
 test/disabled/test-npm-install.js                  |  59 ++++++
503c61
 test/parallel/test-env-var-no-warnings.js          |  41 ----
503c61
 test/parallel/test-http-dns-error.js               |  43 ----
503c61
 .../parallel/test-https-agent-create-connection.js | 144 --------------
503c61
 .../test-https-agent-disable-session-reuse.js      |  55 -----
503c61
 test/parallel/test-https-agent-session-eviction.js |  84 --------
503c61
 test/parallel/test-https-agent-sni.js              |  49 -----
503c61
 test/parallel/test-https-agent.js                  |  50 -----
503c61
 test/parallel/test-https-client-reject.js          |  64 ------
503c61
 test/parallel/test-https-client-resume.js          |  62 ------
503c61
 test/parallel/test-https-host-headers.js           | 109 ----------
503c61
 test/parallel/test-https-set-timeout-server.js     | 221 ---------------------
503c61
 test/parallel/test-https-simple.js                 |  93 ---------
503c61
 test/parallel/test-https-strict.js                 | 201 -------------------
503c61
 ...test-net-better-error-messages-port-hostname.js |  15 --
503c61
 test/parallel/test-net-connect-immediate-finish.js |  17 --
503c61
 test/parallel/test-npm-install.js                  |  59 ------
503c61
 32 files changed, 1307 insertions(+), 1307 deletions(-)
503c61
 create mode 100644 test/disabled/test-env-var-no-warnings.js
503c61
 create mode 100644 test/disabled/test-http-dns-error.js
503c61
 create mode 100644 test/disabled/test-https-agent-create-connection.js
503c61
 create mode 100644 test/disabled/test-https-agent-disable-session-reuse.js
503c61
 create mode 100644 test/disabled/test-https-agent-session-eviction.js
503c61
 create mode 100644 test/disabled/test-https-agent-sni.js
503c61
 create mode 100644 test/disabled/test-https-agent.js
503c61
 create mode 100644 test/disabled/test-https-client-reject.js
503c61
 create mode 100644 test/disabled/test-https-client-resume.js
503c61
 create mode 100644 test/disabled/test-https-host-headers.js
503c61
 create mode 100644 test/disabled/test-https-set-timeout-server.js
503c61
 create mode 100644 test/disabled/test-https-simple.js
503c61
 create mode 100644 test/disabled/test-https-strict.js
503c61
 create mode 100644 test/disabled/test-net-better-error-messages-port-hostname.js
503c61
 create mode 100644 test/disabled/test-net-connect-immediate-finish.js
503c61
 create mode 100644 test/disabled/test-npm-install.js
503c61
 delete mode 100644 test/parallel/test-env-var-no-warnings.js
503c61
 delete mode 100644 test/parallel/test-http-dns-error.js
503c61
 delete mode 100644 test/parallel/test-https-agent-create-connection.js
503c61
 delete mode 100644 test/parallel/test-https-agent-disable-session-reuse.js
503c61
 delete mode 100644 test/parallel/test-https-agent-session-eviction.js
503c61
 delete mode 100644 test/parallel/test-https-agent-sni.js
503c61
 delete mode 100644 test/parallel/test-https-agent.js
503c61
 delete mode 100644 test/parallel/test-https-client-reject.js
503c61
 delete mode 100644 test/parallel/test-https-client-resume.js
503c61
 delete mode 100644 test/parallel/test-https-host-headers.js
503c61
 delete mode 100644 test/parallel/test-https-set-timeout-server.js
503c61
 delete mode 100644 test/parallel/test-https-simple.js
503c61
 delete mode 100644 test/parallel/test-https-strict.js
503c61
 delete mode 100644 test/parallel/test-net-better-error-messages-port-hostname.js
503c61
 delete mode 100644 test/parallel/test-net-connect-immediate-finish.js
503c61
 delete mode 100644 test/parallel/test-npm-install.js
8dc1ea
503c61
diff --git a/test/disabled/test-env-var-no-warnings.js b/test/disabled/test-env-var-no-warnings.js
503c61
new file mode 100644
503c61
index 0000000..f829443
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-env-var-no-warnings.js
503c61
@@ -0,0 +1,41 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+const assert = require('assert');
503c61
+const cp = require('child_process');
503c61
+
503c61
+if (process.argv[2] === 'child') {
503c61
+  process.emitWarning('foo');
503c61
+} else {
503c61
+  function test(env) {
503c61
+    const cmd = `"${process.execPath}" "${__filename}" child`;
503c61
+
503c61
+    cp.exec(cmd, { env }, common.mustCall((err, stdout, stderr) => {
503c61
+      assert.strictEqual(err, null);
503c61
+      assert.strictEqual(stdout, '');
503c61
+
503c61
+      if (env.NODE_NO_WARNINGS === '1')
503c61
+        assert.strictEqual(stderr, '');
503c61
+      else
503c61
+        assert(/Warning: foo$/.test(stderr.trim()));
503c61
+    }));
503c61
+  }
503c61
+
503c61
+  test({});
503c61
+  test(process.env);
503c61
+  test({ NODE_NO_WARNINGS: undefined });
503c61
+  test({ NODE_NO_WARNINGS: null });
503c61
+  test({ NODE_NO_WARNINGS: 'foo' });
503c61
+  test({ NODE_NO_WARNINGS: true });
503c61
+  test({ NODE_NO_WARNINGS: false });
503c61
+  test({ NODE_NO_WARNINGS: {} });
503c61
+  test({ NODE_NO_WARNINGS: [] });
503c61
+  test({ NODE_NO_WARNINGS: () => {} });
503c61
+  test({ NODE_NO_WARNINGS: 0 });
503c61
+  test({ NODE_NO_WARNINGS: -1 });
503c61
+  test({ NODE_NO_WARNINGS: '0' });
503c61
+  test({ NODE_NO_WARNINGS: '01' });
503c61
+  test({ NODE_NO_WARNINGS: '2' });
503c61
+  // Don't test the number 1 because it will come through as a string in the
503c61
+  // the child process environment.
503c61
+  test({ NODE_NO_WARNINGS: '1' });
503c61
+}
503c61
diff --git a/test/disabled/test-http-dns-error.js b/test/disabled/test-http-dns-error.js
503c61
new file mode 100644
503c61
index 0000000..bb736c5
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-http-dns-error.js
503c61
@@ -0,0 +1,43 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+const assert = require('assert');
503c61
+
503c61
+const http = require('http');
503c61
+
503c61
+let https;
503c61
+if (common.hasCrypto) {
503c61
+  https = require('https');
503c61
+} else {
503c61
+  common.printSkipMessage('missing crypto');
503c61
+}
503c61
+
503c61
+const host = '*'.repeat(256);
503c61
+
503c61
+function do_not_call() {
503c61
+  throw new Error('This function should not have been called.');
503c61
+}
503c61
+
503c61
+function test(mod) {
503c61
+
503c61
+  // Bad host name should not throw an uncatchable exception.
503c61
+  // Ensure that there is time to attach an error listener.
503c61
+  const req1 = mod.get({host: host, port: 42}, do_not_call);
503c61
+  req1.on('error', common.mustCall(function(err) {
503c61
+    assert.strictEqual(err.code, 'ENOTFOUND');
503c61
+  }));
503c61
+  // http.get() called req1.end() for us
503c61
+
503c61
+  const req2 = mod.request({method: 'GET', host: host, port: 42}, do_not_call);
503c61
+  req2.on('error', common.mustCall(function(err) {
503c61
+    assert.strictEqual(err.code, 'ENOTFOUND');
503c61
+  }));
503c61
+  req2.end();
503c61
+}
503c61
+
503c61
+if (common.hasCrypto) {
503c61
+  test(https);
503c61
+} else {
503c61
+  common.printSkipMessage('missing crypto');
503c61
+}
503c61
+
503c61
+test(http);
503c61
diff --git a/test/disabled/test-https-agent-create-connection.js b/test/disabled/test-https-agent-create-connection.js
503c61
new file mode 100644
503c61
index 0000000..a7c329b
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-agent-create-connection.js
503c61
@@ -0,0 +1,144 @@
503c61
+'use strict';
503c61
+
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+
503c61
+const agent = new https.Agent();
503c61
+
503c61
+const fs = require('fs');
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`),
503c61
+};
503c61
+
503c61
+const expectedHeader = /^HTTP\/1.1 200 OK/;
503c61
+const expectedBody = /hello world\n/;
503c61
+const expectCertError = /^Error: unable to verify the first certificate$/;
503c61
+
503c61
+const checkRequest = (socket, server) => {
503c61
+  let result = '';
503c61
+  socket.on('connect', common.mustCall((data) => {
503c61
+    socket.write('GET / HTTP/1.1\r\n\r\n');
503c61
+    socket.end();
503c61
+  }));
503c61
+  socket.on('data', common.mustCall((chunk) => {
503c61
+    result += chunk;
503c61
+  }));
503c61
+  socket.on('end', common.mustCall(() => {
503c61
+    assert(expectedHeader.test(result));
503c61
+    assert(expectedBody.test(result));
503c61
+    server.close();
503c61
+  }));
503c61
+};
503c61
+
503c61
+function createServer() {
503c61
+  return https.createServer(options, (req, res) => {
503c61
+    res.end('hello world\n');
503c61
+  });
503c61
+}
503c61
+
503c61
+// use option connect
503c61
+{
503c61
+  const server = createServer();
503c61
+  server.listen(0, common.mustCall(() => {
503c61
+    const port = server.address().port;
503c61
+    const host = 'localhost';
503c61
+    const options = {
503c61
+      port: port,
503c61
+      host: host,
503c61
+      rejectUnauthorized: false,
503c61
+      _agentKey: agent.getName({
503c61
+        port: port,
503c61
+        host: host,
503c61
+      }),
503c61
+    };
503c61
+
503c61
+    const socket = agent.createConnection(options);
503c61
+    checkRequest(socket, server);
503c61
+  }));
503c61
+}
503c61
+
503c61
+// use port and option connect
503c61
+{
503c61
+  const server = createServer();
503c61
+  server.listen(0, common.mustCall(() => {
503c61
+    const port = server.address().port;
503c61
+    const host = 'localhost';
503c61
+    const options = {
503c61
+      rejectUnauthorized: false,
503c61
+      _agentKey: agent.getName({
503c61
+        port: port,
503c61
+        host: host,
503c61
+      }),
503c61
+    };
503c61
+    const socket = agent.createConnection(port, options);
503c61
+    checkRequest(socket, server);
503c61
+  }));
503c61
+}
503c61
+
503c61
+// use port and host and option connect
503c61
+{
503c61
+  const server = createServer();
503c61
+  server.listen(0, common.mustCall(() => {
503c61
+    const port = server.address().port;
503c61
+    const host = 'localhost';
503c61
+    const options = {
503c61
+      rejectUnauthorized: false,
503c61
+      _agentKey: agent.getName({
503c61
+        port: port,
503c61
+        host: host,
503c61
+      }),
503c61
+    };
503c61
+    const socket = agent.createConnection(port, host, options);
503c61
+    checkRequest(socket, server);
503c61
+  }));
503c61
+}
503c61
+
503c61
+// use port and host and option does not have agentKey
503c61
+{
503c61
+  const server = createServer();
503c61
+  server.listen(0, common.mustCall(() => {
503c61
+    const port = server.address().port;
503c61
+    const host = 'localhost';
503c61
+    const options = {
503c61
+      rejectUnauthorized: false,
503c61
+    };
503c61
+    const socket = agent.createConnection(port, host, options);
503c61
+    checkRequest(socket, server);
503c61
+  }));
503c61
+}
503c61
+
503c61
+// options is null
503c61
+{
503c61
+  const server = createServer();
503c61
+  server.listen(0, common.mustCall(() => {
503c61
+    const port = server.address().port;
503c61
+    const host = 'localhost';
503c61
+    const options = null;
503c61
+    const socket = agent.createConnection(port, host, options);
503c61
+    socket.on('error', common.mustCall((e) => {
503c61
+      assert(expectCertError.test(e.toString()));
503c61
+      server.close();
503c61
+    }));
503c61
+  }));
503c61
+}
503c61
+
503c61
+// options is undefined
503c61
+{
503c61
+  const server = createServer();
503c61
+  server.listen(0, common.mustCall(() => {
503c61
+    const port = server.address().port;
503c61
+    const host = 'localhost';
503c61
+    const options = undefined;
503c61
+    const socket = agent.createConnection(port, host, options);
503c61
+    socket.on('error', common.mustCall((e) => {
503c61
+      assert(expectCertError.test(e.toString()));
503c61
+      server.close();
503c61
+    }));
503c61
+  }));
503c61
+}
503c61
diff --git a/test/disabled/test-https-agent-disable-session-reuse.js b/test/disabled/test-https-agent-disable-session-reuse.js
503c61
new file mode 100644
503c61
index 0000000..4f92547
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-agent-disable-session-reuse.js
503c61
@@ -0,0 +1,55 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+
503c61
+const TOTAL_REQS = 2;
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
+};
503c61
+
503c61
+const clientSessions = [];
503c61
+let serverRequests = 0;
503c61
+
503c61
+const agent = new https.Agent({
503c61
+  maxCachedSessions: 0
503c61
+});
503c61
+
503c61
+const server = https.createServer(options, function(req, res) {
503c61
+  serverRequests++;
503c61
+  res.end('ok');
503c61
+}).listen(0, function() {
503c61
+  let waiting = TOTAL_REQS;
503c61
+  function request() {
503c61
+    const options = {
503c61
+      agent: agent,
503c61
+      port: server.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    };
503c61
+
503c61
+    https.request(options, function(res) {
503c61
+      clientSessions.push(res.socket.getSession());
503c61
+
503c61
+      res.resume();
503c61
+      res.on('end', function() {
503c61
+        if (--waiting !== 0)
503c61
+          return request();
503c61
+        server.close();
503c61
+      });
503c61
+    }).end();
503c61
+  }
503c61
+  request();
503c61
+});
503c61
+
503c61
+process.on('exit', function() {
503c61
+  assert.strictEqual(serverRequests, TOTAL_REQS);
503c61
+  assert.strictEqual(clientSessions.length, TOTAL_REQS);
503c61
+  assert.notStrictEqual(clientSessions[0].toString('hex'),
503c61
+                        clientSessions[1].toString('hex'));
503c61
+});
503c61
diff --git a/test/disabled/test-https-agent-session-eviction.js b/test/disabled/test-https-agent-session-eviction.js
503c61
new file mode 100644
503c61
index 0000000..567ed80
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-agent-session-eviction.js
503c61
@@ -0,0 +1,84 @@
503c61
+'use strict';
503c61
+
503c61
+const common = require('../common');
503c61
+
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+const SSL_OP_NO_TICKET = require('crypto').constants.SSL_OP_NO_TICKET;
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`),
503c61
+  secureOptions: SSL_OP_NO_TICKET
503c61
+};
503c61
+
503c61
+// Create TLS1.2 server
503c61
+https.createServer(options, function(req, res) {
503c61
+  res.end('ohai');
503c61
+}).listen(0, function() {
503c61
+  first(this);
503c61
+});
503c61
+
503c61
+// Do request and let agent cache the session
503c61
+function first(server) {
503c61
+  const port = server.address().port;
503c61
+  const req = https.request({
503c61
+    port: port,
503c61
+    rejectUnauthorized: false
503c61
+  }, function(res) {
503c61
+    res.resume();
503c61
+
503c61
+    server.close(function() {
503c61
+      faultyServer(port);
503c61
+    });
503c61
+  });
503c61
+  req.end();
503c61
+}
503c61
+
503c61
+// Create TLS1 server
503c61
+function faultyServer(port) {
503c61
+  options.secureProtocol = 'TLSv1_method';
503c61
+  https.createServer(options, function(req, res) {
503c61
+    res.end('hello faulty');
503c61
+  }).listen(port, function() {
503c61
+    second(this);
503c61
+  });
503c61
+}
503c61
+
503c61
+// Attempt to request using cached session
503c61
+function second(server, session) {
503c61
+  const req = https.request({
503c61
+    port: server.address().port,
503c61
+    rejectUnauthorized: false
503c61
+  }, function(res) {
503c61
+    res.resume();
503c61
+  });
503c61
+
503c61
+  // Let it fail
503c61
+  req.on('error', common.mustCall(function(err) {
503c61
+    assert(/wrong version number/.test(err.message));
503c61
+
503c61
+    req.on('close', function() {
503c61
+      third(server);
503c61
+    });
503c61
+  }));
503c61
+  req.end();
503c61
+}
503c61
+
503c61
+// Try one more time - session should be evicted!
503c61
+function third(server) {
503c61
+  const req = https.request({
503c61
+    port: server.address().port,
503c61
+    rejectUnauthorized: false
503c61
+  }, function(res) {
503c61
+    res.resume();
503c61
+    assert(!req.socket.isSessionReused());
503c61
+    server.close();
503c61
+  });
503c61
+  req.on('error', common.mustNotCall());
503c61
+  req.end();
503c61
+}
503c61
diff --git a/test/disabled/test-https-agent-sni.js b/test/disabled/test-https-agent-sni.js
503c61
new file mode 100644
503c61
index 0000000..a06ce43
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-agent-sni.js
503c61
@@ -0,0 +1,49 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
+};
503c61
+
503c61
+const TOTAL = 4;
503c61
+let waiting = TOTAL;
503c61
+
503c61
+const server = https.Server(options, function(req, res) {
503c61
+  if (--waiting === 0) server.close();
503c61
+
503c61
+  res.writeHead(200, {
503c61
+    'x-sni': req.socket.servername
503c61
+  });
503c61
+  res.end('hello world');
503c61
+});
503c61
+
503c61
+server.listen(0, function() {
503c61
+  function expectResponse(id) {
503c61
+    return common.mustCall(function(res) {
503c61
+      res.resume();
503c61
+      assert.strictEqual(res.headers['x-sni'], `sni.${id}`);
503c61
+    });
503c61
+  }
503c61
+
503c61
+  const agent = new https.Agent({
503c61
+    maxSockets: 1
503c61
+  });
503c61
+  for (let j = 0; j < TOTAL; j++) {
503c61
+    https.get({
503c61
+      agent: agent,
503c61
+
503c61
+      path: '/',
503c61
+      port: this.address().port,
503c61
+      host: '127.0.0.1',
503c61
+      servername: `sni.${j}`,
503c61
+      rejectUnauthorized: false
503c61
+    }, expectResponse(j));
503c61
+  }
503c61
+});
503c61
diff --git a/test/disabled/test-https-agent.js b/test/disabled/test-https-agent.js
503c61
new file mode 100644
503c61
index 0000000..24086d1
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-agent.js
503c61
@@ -0,0 +1,50 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
+};
503c61
+
503c61
+
503c61
+const server = https.Server(options, function(req, res) {
503c61
+  res.writeHead(200);
503c61
+  res.end('hello world\n');
503c61
+});
503c61
+
503c61
+
503c61
+let responses = 0;
503c61
+const N = 4;
503c61
+const M = 4;
503c61
+
503c61
+
503c61
+server.listen(0, function() {
503c61
+  for (let i = 0; i < N; i++) {
503c61
+    setTimeout(function() {
503c61
+      for (let j = 0; j < M; j++) {
503c61
+        https.get({
503c61
+          path: '/',
503c61
+          port: server.address().port,
503c61
+          rejectUnauthorized: false
503c61
+        }, function(res) {
503c61
+          res.resume();
503c61
+          assert.strictEqual(res.statusCode, 200);
503c61
+          if (++responses === N * M) server.close();
503c61
+        }).on('error', function(e) {
503c61
+          throw e;
503c61
+        });
503c61
+      }
503c61
+    }, i);
503c61
+  }
503c61
+});
503c61
+
503c61
+
503c61
+process.on('exit', function() {
503c61
+  assert.strictEqual(N * M, responses);
503c61
+});
503c61
diff --git a/test/disabled/test-https-client-reject.js b/test/disabled/test-https-client-reject.js
503c61
new file mode 100644
503c61
index 0000000..8369e9a
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-client-reject.js
503c61
@@ -0,0 +1,64 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+const path = require('path');
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')),
503c61
+  cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))
503c61
+};
503c61
+
503c61
+const server = https.createServer(options, common.mustCall(function(req, res) {
503c61
+  res.writeHead(200);
503c61
+  res.end();
503c61
+  req.resume();
503c61
+}, 2)).listen(0, function() {
503c61
+  unauthorized();
503c61
+});
503c61
+
503c61
+function unauthorized() {
503c61
+  const req = https.request({
503c61
+    port: server.address().port,
503c61
+    rejectUnauthorized: false
503c61
+  }, function(res) {
503c61
+    assert(!req.socket.authorized);
503c61
+    res.resume();
503c61
+    rejectUnauthorized();
503c61
+  });
503c61
+  req.on('error', function(err) {
503c61
+    throw err;
503c61
+  });
503c61
+  req.end();
503c61
+}
503c61
+
503c61
+function rejectUnauthorized() {
503c61
+  const options = {
503c61
+    port: server.address().port
503c61
+  };
503c61
+  options.agent = new https.Agent(options);
503c61
+  const req = https.request(options, common.mustNotCall());
503c61
+  req.on('error', function(err) {
503c61
+    authorized();
503c61
+  });
503c61
+  req.end();
503c61
+}
503c61
+
503c61
+function authorized() {
503c61
+  const options = {
503c61
+    port: server.address().port,
503c61
+    ca: [fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))]
503c61
+  };
503c61
+  options.agent = new https.Agent(options);
503c61
+  const req = https.request(options, function(res) {
503c61
+    res.resume();
503c61
+    assert(req.socket.authorized);
503c61
+    server.close();
503c61
+  });
503c61
+  req.on('error', common.mustNotCall());
503c61
+  req.end();
503c61
+}
503c61
diff --git a/test/disabled/test-https-client-resume.js b/test/disabled/test-https-client-resume.js
503c61
new file mode 100644
503c61
index 0000000..6ba40dc
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-client-resume.js
503c61
@@ -0,0 +1,62 @@
503c61
+'use strict';
503c61
+// Create an ssl server.  First connection, validate that not resume.
503c61
+// Cache session and close connection.  Use session on second connection.
503c61
+// ASSERT resumption.
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const tls = require('tls');
503c61
+const fs = require('fs');
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent2-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent2-cert.pem`)
503c61
+};
503c61
+
503c61
+// create server
503c61
+const server = https.createServer(options, common.mustCall(function(req, res) {
503c61
+  res.end('Goodbye');
503c61
+}, 2));
503c61
+
503c61
+// start listening
503c61
+server.listen(0, function() {
503c61
+
503c61
+  let session1 = null;
503c61
+  const client1 = tls.connect({
503c61
+    port: this.address().port,
503c61
+    rejectUnauthorized: false
503c61
+  }, function() {
503c61
+    console.log('connect1');
503c61
+    assert.ok(!client1.isSessionReused(), 'Session *should not* be reused.');
503c61
+    session1 = client1.getSession();
503c61
+    client1.write('GET / HTTP/1.0\r\n' +
503c61
+                  'Server: 127.0.0.1\r\n' +
503c61
+                  '\r\n');
503c61
+  });
503c61
+
503c61
+  client1.on('close', function() {
503c61
+    console.log('close1');
503c61
+
503c61
+    const opts = {
503c61
+      port: server.address().port,
503c61
+      rejectUnauthorized: false,
503c61
+      session: session1
503c61
+    };
503c61
+
503c61
+    const client2 = tls.connect(opts, function() {
503c61
+      console.log('connect2');
503c61
+      assert.ok(client2.isSessionReused(), 'Session *should* be reused.');
503c61
+      client2.write('GET / HTTP/1.0\r\n' +
503c61
+                    'Server: 127.0.0.1\r\n' +
503c61
+                    '\r\n');
503c61
+    });
503c61
+
503c61
+    client2.on('close', function() {
503c61
+      console.log('close2');
503c61
+      server.close();
503c61
+    });
503c61
+  });
503c61
+});
503c61
diff --git a/test/disabled/test-https-host-headers.js b/test/disabled/test-https-host-headers.js
503c61
new file mode 100644
503c61
index 0000000..c8afa61
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-host-headers.js
503c61
@@ -0,0 +1,109 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
+};
503c61
+const httpsServer = https.createServer(options, reqHandler);
503c61
+
503c61
+function reqHandler(req, res) {
503c61
+  console.log(`Got request: ${req.headers.host} ${req.url}`);
503c61
+  if (req.url === '/setHostFalse5') {
503c61
+    assert.strictEqual(req.headers.host, undefined);
503c61
+  } else {
503c61
+    assert.strictEqual(
503c61
+      req.headers.host, `localhost:${this.address().port}`,
503c61
+      `Wrong host header for req[${req.url}]: ${req.headers.host}`);
503c61
+  }
503c61
+  res.writeHead(200, {});
503c61
+  //process.nextTick(function() { res.end('ok'); });
503c61
+  res.end('ok');
503c61
+}
503c61
+
503c61
+function thrower(er) {
503c61
+  throw er;
503c61
+}
503c61
+
503c61
+testHttps();
503c61
+
503c61
+function testHttps() {
503c61
+
503c61
+  let counter = 0;
503c61
+
503c61
+  function cb(res) {
503c61
+    counter--;
503c61
+    console.log(`back from https request. counter = ${counter}`);
503c61
+    if (counter === 0) {
503c61
+      httpsServer.close();
503c61
+      console.log('ok');
503c61
+    }
503c61
+    res.resume();
503c61
+  }
503c61
+
503c61
+  httpsServer.listen(0, function(er) {
503c61
+    console.log(`test https server listening on port ${this.address().port}`);
503c61
+
503c61
+    if (er) throw er;
503c61
+
503c61
+    https.get({
503c61
+      method: 'GET',
503c61
+      path: `/${counter++}`,
503c61
+      host: 'localhost',
503c61
+      //agent: false,
503c61
+      port: this.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }, cb).on('error', thrower);
503c61
+
503c61
+    https.request({
503c61
+      method: 'GET',
503c61
+      path: `/${counter++}`,
503c61
+      host: 'localhost',
503c61
+      //agent: false,
503c61
+      port: this.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }, cb).on('error', thrower).end();
503c61
+
503c61
+    https.request({
503c61
+      method: 'POST',
503c61
+      path: `/${counter++}`,
503c61
+      host: 'localhost',
503c61
+      //agent: false,
503c61
+      port: this.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }, cb).on('error', thrower).end();
503c61
+
503c61
+    https.request({
503c61
+      method: 'PUT',
503c61
+      path: `/${counter++}`,
503c61
+      host: 'localhost',
503c61
+      //agent: false,
503c61
+      port: this.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }, cb).on('error', thrower).end();
503c61
+
503c61
+    https.request({
503c61
+      method: 'DELETE',
503c61
+      path: `/${counter++}`,
503c61
+      host: 'localhost',
503c61
+      //agent: false,
503c61
+      port: this.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }, cb).on('error', thrower).end();
503c61
+
503c61
+    https.get({
503c61
+      method: 'GET',
503c61
+      path: `/setHostFalse${counter++}`,
503c61
+      host: 'localhost',
503c61
+      setHost: false,
503c61
+      port: this.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }, cb).on('error', thrower).end();
503c61
+  });
503c61
+}
503c61
diff --git a/test/disabled/test-https-set-timeout-server.js b/test/disabled/test-https-set-timeout-server.js
503c61
new file mode 100644
503c61
index 0000000..b27471e
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-set-timeout-server.js
503c61
@@ -0,0 +1,221 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+const assert = require('assert');
503c61
+
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const https = require('https');
503c61
+const http = require('http');
503c61
+
503c61
+const tls = require('tls');
503c61
+const fs = require('fs');
503c61
+
503c61
+const tests = [];
503c61
+
503c61
+const serverOptions = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
+};
503c61
+
503c61
+function test(fn) {
503c61
+  if (!tests.length)
503c61
+    process.nextTick(run);
503c61
+  tests.push(common.mustCall(fn));
503c61
+}
503c61
+
503c61
+function run() {
503c61
+  const fn = tests.shift();
503c61
+  if (fn) {
503c61
+    fn(run);
503c61
+  }
503c61
+}
503c61
+
503c61
+test(function serverTimeout(cb) {
503c61
+  const server = https.createServer(serverOptions);
503c61
+  server.listen(common.mustCall(() => {
503c61
+    const s = server.setTimeout(50, common.mustCall((socket) => {
503c61
+      socket.destroy();
503c61
+      server.close();
503c61
+      cb();
503c61
+    }));
503c61
+    assert.ok(s instanceof https.Server);
503c61
+    https.get({
503c61
+      port: server.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }).on('error', () => {});
503c61
+  }));
503c61
+});
503c61
+
503c61
+test(function serverRequestTimeout(cb) {
503c61
+  const server = https.createServer(
503c61
+    serverOptions,
503c61
+    common.mustCall((req, res) => {
503c61
+      // just do nothing, we should get a timeout event.
503c61
+      const s = req.setTimeout(50, common.mustCall((socket) => {
503c61
+        socket.destroy();
503c61
+        server.close();
503c61
+        cb();
503c61
+      }));
503c61
+      assert.ok(s instanceof http.IncomingMessage);
503c61
+    }));
503c61
+  server.listen(common.mustCall(() => {
503c61
+    const req = https.request({
503c61
+      port: server.address().port,
503c61
+      method: 'POST',
503c61
+      rejectUnauthorized: false
503c61
+    });
503c61
+    req.on('error', () => {});
503c61
+    req.write('Hello');
503c61
+    // req is in progress
503c61
+  }));
503c61
+});
503c61
+
503c61
+test(function serverResponseTimeout(cb) {
503c61
+  const server = https.createServer(
503c61
+    serverOptions,
503c61
+    common.mustCall((req, res) => {
503c61
+      // just do nothing, we should get a timeout event.
503c61
+      const s = res.setTimeout(50, common.mustCall((socket) => {
503c61
+        socket.destroy();
503c61
+        server.close();
503c61
+        cb();
503c61
+      }));
503c61
+      assert.ok(s instanceof http.OutgoingMessage);
503c61
+    }));
503c61
+  server.listen(common.mustCall(() => {
503c61
+    https.get({
503c61
+      port: server.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }).on('error', common.mustCall());
503c61
+  }));
503c61
+});
503c61
+
503c61
+test(function serverRequestNotTimeoutAfterEnd(cb) {
503c61
+  const server = https.createServer(
503c61
+    serverOptions,
503c61
+    common.mustCall((req, res) => {
503c61
+      // just do nothing, we should get a timeout event.
503c61
+      const s = req.setTimeout(50, common.mustNotCall());
503c61
+      assert.ok(s instanceof http.IncomingMessage);
503c61
+      res.on('timeout', common.mustCall());
503c61
+    }));
503c61
+  server.on('timeout', common.mustCall((socket) => {
503c61
+    socket.destroy();
503c61
+    server.close();
503c61
+    cb();
503c61
+  }));
503c61
+  server.listen(common.mustCall(() => {
503c61
+    https.get({
503c61
+      port: server.address().port,
503c61
+      rejectUnauthorized: false
503c61
+    }).on('error', common.mustCall());
503c61
+  }));
503c61
+});
503c61
+
503c61
+test(function serverResponseTimeoutWithPipeline(cb) {
503c61
+  let caughtTimeout = '';
503c61
+  let secReceived = false;
503c61
+  process.on('exit', () => {
503c61
+    assert.strictEqual(caughtTimeout, '/2');
503c61
+  });
503c61
+  const server = https.createServer(serverOptions, (req, res) => {
503c61
+    if (req.url === '/2')
503c61
+      secReceived = true;
503c61
+    if (req.url === '/1') {
503c61
+      res.end();
503c61
+      return;
503c61
+    }
503c61
+    const s = res.setTimeout(50, () => {
503c61
+      caughtTimeout += req.url;
503c61
+    });
503c61
+    assert.ok(s instanceof http.OutgoingMessage);
503c61
+  });
503c61
+  server.on('timeout', common.mustCall((socket) => {
503c61
+    if (secReceived) {
503c61
+      socket.destroy();
503c61
+      server.close();
503c61
+      cb();
503c61
+    }
503c61
+  }));
503c61
+  server.listen(common.mustCall(() => {
503c61
+    const options = {
503c61
+      port: server.address().port,
503c61
+      allowHalfOpen: true,
503c61
+      rejectUnauthorized: false
503c61
+    };
503c61
+    const c = tls.connect(options, () => {
503c61
+      c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
+      c.write('GET /2 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
+      c.write('GET /3 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
+    });
503c61
+  }));
503c61
+});
503c61
+
503c61
+test(function idleTimeout(cb) {
503c61
+  // Test that the an idle connection invokes the timeout callback.
503c61
+  const server = https.createServer(serverOptions);
503c61
+  const s = server.setTimeout(50, common.mustCall((socket) => {
503c61
+    socket.destroy();
503c61
+    server.close();
503c61
+    cb();
503c61
+  }));
503c61
+  assert.ok(s instanceof https.Server);
503c61
+  server.listen(common.mustCall(() => {
503c61
+    const options = {
503c61
+      port: server.address().port,
503c61
+      allowHalfOpen: true,
503c61
+      rejectUnauthorized: false
503c61
+    };
503c61
+    const c = tls.connect(options, () => {
503c61
+      // ECONNRESET could happen on a heavily-loaded server.
503c61
+      c.on('error', (e) => {
503c61
+        if (e.message !== 'read ECONNRESET')
503c61
+          throw e;
503c61
+      });
503c61
+      c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
+      // Keep-Alive
503c61
+    });
503c61
+  }));
503c61
+});
503c61
+
503c61
+test(function fastTimeout(cb) {
503c61
+  // Test that the socket timeout fires but no timeout fires for the request.
503c61
+  let connectionHandlerInvoked = false;
503c61
+  let timeoutHandlerInvoked = false;
503c61
+  let connectionSocket;
503c61
+
503c61
+  function invokeCallbackIfDone() {
503c61
+    if (connectionHandlerInvoked && timeoutHandlerInvoked) {
503c61
+      connectionSocket.destroy();
503c61
+      server.close();
503c61
+      cb();
503c61
+    }
503c61
+  }
503c61
+
503c61
+  const server = https.createServer(serverOptions, common.mustCall(
503c61
+    (req, res) => {
503c61
+      req.on('timeout', common.mustNotCall());
503c61
+      res.end();
503c61
+      connectionHandlerInvoked = true;
503c61
+      invokeCallbackIfDone();
503c61
+    }
503c61
+  ));
503c61
+  const s = server.setTimeout(1, common.mustCall((socket) => {
503c61
+    connectionSocket = socket;
503c61
+    timeoutHandlerInvoked = true;
503c61
+    invokeCallbackIfDone();
503c61
+  }));
503c61
+  assert.ok(s instanceof https.Server);
503c61
+  server.listen(common.mustCall(() => {
503c61
+    const options = {
503c61
+      port: server.address().port,
503c61
+      allowHalfOpen: true,
503c61
+      rejectUnauthorized: false
503c61
+    };
503c61
+    const c = tls.connect(options, () => {
503c61
+      c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
+      // Keep-Alive
503c61
+    });
503c61
+  }));
503c61
+});
503c61
diff --git a/test/disabled/test-https-simple.js b/test/disabled/test-https-simple.js
503c61
new file mode 100644
503c61
index 0000000..9184430
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-simple.js
503c61
@@ -0,0 +1,93 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+
503c61
+const options = {
503c61
+  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
+  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
+};
503c61
+
503c61
+const tests = 2;
503c61
+let successful = 0;
503c61
+
503c61
+const testSucceeded = () => {
503c61
+  successful = successful + 1;
503c61
+  if (successful === tests) {
503c61
+    server.close();
503c61
+  }
503c61
+};
503c61
+
503c61
+const body = 'hello world\n';
503c61
+
503c61
+const serverCallback = common.mustCall(function(req, res) {
503c61
+  res.writeHead(200, { 'content-type': 'text/plain' });
503c61
+  res.end(body);
503c61
+});
503c61
+
503c61
+const server = https.createServer(options, serverCallback);
503c61
+
503c61
+server.listen(0, common.mustCall(() => {
503c61
+  // Do a request ignoring the unauthorized server certs
503c61
+  const port = server.address().port;
503c61
+
503c61
+  const noCertCheckOptions = {
503c61
+    hostname: '127.0.0.1',
503c61
+    port: port,
503c61
+    path: '/',
503c61
+    method: 'GET',
503c61
+    rejectUnauthorized: false
503c61
+  };
503c61
+
503c61
+  noCertCheckOptions.Agent = new https.Agent(noCertCheckOptions);
503c61
+
503c61
+  const req = https.request(noCertCheckOptions, common.mustCall((res) => {
503c61
+    let responseBody = '';
503c61
+    res.on('data', function(d) {
503c61
+      responseBody = responseBody + d;
503c61
+    });
503c61
+
503c61
+    res.on('end', common.mustCall(() => {
503c61
+      assert.strictEqual(responseBody, body);
503c61
+      testSucceeded();
503c61
+    }));
503c61
+  }));
503c61
+  req.end();
503c61
+
503c61
+  req.on('error', function(e) {
503c61
+    throw e;
503c61
+  });
503c61
+
503c61
+  // Do a request that throws error due to the invalid server certs
503c61
+  const checkCertOptions = {
503c61
+    hostname: '127.0.0.1',
503c61
+    port: port,
503c61
+    path: '/',
503c61
+    method: 'GET'
503c61
+  };
503c61
+
503c61
+  const checkCertReq = https.request(checkCertOptions, function(res) {
503c61
+    res.on('data', function() {
503c61
+      throw new Error('data should not be received');
503c61
+    });
503c61
+
503c61
+    res.on('end', function() {
503c61
+      throw new Error('connection should not be established');
503c61
+    });
503c61
+  });
503c61
+  checkCertReq.end();
503c61
+
503c61
+  checkCertReq.on('error', common.mustCall((e) => {
503c61
+    assert.strictEqual(e.code, 'UNABLE_TO_VERIFY_LEAF_SIGNATURE');
503c61
+    testSucceeded();
503c61
+  }));
503c61
+}));
503c61
+
503c61
+process.on('exit', function() {
503c61
+  assert.strictEqual(successful, tests);
503c61
+});
503c61
diff --git a/test/disabled/test-https-strict.js b/test/disabled/test-https-strict.js
503c61
new file mode 100644
503c61
index 0000000..1cb49fc
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-https-strict.js
503c61
@@ -0,0 +1,201 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+if (!common.hasCrypto)
503c61
+  common.skip('missing crypto');
503c61
+
503c61
+// disable strict server certificate validation by the client
503c61
+process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
503c61
+
503c61
+const assert = require('assert');
503c61
+const https = require('https');
503c61
+const fs = require('fs');
503c61
+const path = require('path');
503c61
+
503c61
+function file(fname) {
503c61
+  return path.resolve(common.fixturesDir, 'keys', fname);
503c61
+}
503c61
+
503c61
+function read(fname) {
503c61
+  return fs.readFileSync(file(fname));
503c61
+}
503c61
+
503c61
+// key1 is signed by ca1.
503c61
+const key1 = read('agent1-key.pem');
503c61
+const cert1 = read('agent1-cert.pem');
503c61
+
503c61
+// key2 has a self signed cert
503c61
+const key2 = read('agent2-key.pem');
503c61
+const cert2 = read('agent2-cert.pem');
503c61
+
503c61
+// key3 is signed by ca2.
503c61
+const key3 = read('agent3-key.pem');
503c61
+const cert3 = read('agent3-cert.pem');
503c61
+
503c61
+const ca1 = read('ca1-cert.pem');
503c61
+const ca2 = read('ca2-cert.pem');
503c61
+
503c61
+// different agents to use different CA lists.
503c61
+// this api is beyond bad.
503c61
+const agent0 = new https.Agent();
503c61
+const agent1 = new https.Agent({ ca: [ca1] });
503c61
+const agent2 = new https.Agent({ ca: [ca2] });
503c61
+const agent3 = new https.Agent({ ca: [ca1, ca2] });
503c61
+
503c61
+const options1 = {
503c61
+  key: key1,
503c61
+  cert: cert1
503c61
+};
503c61
+
503c61
+const options2 = {
503c61
+  key: key2,
503c61
+  cert: cert2
503c61
+};
503c61
+
503c61
+const options3 = {
503c61
+  key: key3,
503c61
+  cert: cert3
503c61
+};
503c61
+
503c61
+const server1 = server(options1);
503c61
+const server2 = server(options2);
503c61
+const server3 = server(options3);
503c61
+
503c61
+let listenWait = 0;
503c61
+
503c61
+server1.listen(0, listening());
503c61
+server2.listen(0, listening());
503c61
+server3.listen(0, listening());
503c61
+
503c61
+const responseErrors = {};
503c61
+let expectResponseCount = 0;
503c61
+let responseCount = 0;
503c61
+let pending = 0;
503c61
+
503c61
+
503c61
+function server(options, port) {
503c61
+  const s = https.createServer(options, handler);
503c61
+  s.requests = [];
503c61
+  s.expectCount = 0;
503c61
+  return s;
503c61
+}
503c61
+
503c61
+function handler(req, res) {
503c61
+  this.requests.push(req.url);
503c61
+  res.statusCode = 200;
503c61
+  res.setHeader('foo', 'bar');
503c61
+  res.end('hello, world\n');
503c61
+}
503c61
+
503c61
+function listening() {
503c61
+  listenWait++;
503c61
+  return function() {
503c61
+    listenWait--;
503c61
+    if (listenWait === 0) {
503c61
+      allListening();
503c61
+    }
503c61
+  };
503c61
+}
503c61
+
503c61
+function makeReq(path, port, error, host, ca) {
503c61
+  pending++;
503c61
+  const options = {
503c61
+    port: port,
503c61
+    path: path,
503c61
+    ca: ca
503c61
+  };
503c61
+
503c61
+  if (!ca) {
503c61
+    options.agent = agent0;
503c61
+  } else {
503c61
+    if (!Array.isArray(ca)) ca = [ca];
503c61
+    if (ca.includes(ca1) && ca.includes(ca2)) {
503c61
+      options.agent = agent3;
503c61
+    } else if (ca.includes(ca1)) {
503c61
+      options.agent = agent1;
503c61
+    } else if (ca.includes(ca2)) {
503c61
+      options.agent = agent2;
503c61
+    } else {
503c61
+      options.agent = agent0;
503c61
+    }
503c61
+  }
503c61
+
503c61
+  if (host) {
503c61
+    options.headers = { host: host };
503c61
+  }
503c61
+  const req = https.get(options);
503c61
+  expectResponseCount++;
503c61
+  const server = port === server1.address().port ? server1
503c61
+    : port === server2.address().port ? server2
503c61
+      : port === server3.address().port ? server3
503c61
+        : null;
503c61
+
503c61
+  if (!server) throw new Error(`invalid port: ${port}`);
503c61
+  server.expectCount++;
503c61
+
503c61
+  req.on('response', function(res) {
503c61
+    responseCount++;
503c61
+    assert.strictEqual(res.connection.authorizationError, error);
503c61
+    responseErrors[path] = res.connection.authorizationError;
503c61
+    pending--;
503c61
+    if (pending === 0) {
503c61
+      server1.close();
503c61
+      server2.close();
503c61
+      server3.close();
503c61
+    }
503c61
+    res.resume();
503c61
+  });
503c61
+}
503c61
+
503c61
+function allListening() {
503c61
+  // ok, ready to start the tests!
503c61
+  const port1 = server1.address().port;
503c61
+  const port2 = server2.address().port;
503c61
+  const port3 = server3.address().port;
503c61
+
503c61
+  // server1: host 'agent1', signed by ca1
503c61
+  makeReq('/inv1', port1, 'UNABLE_TO_VERIFY_LEAF_SIGNATURE');
503c61
+  makeReq('/inv1-ca1', port1,
503c61
+          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
+              '"Host: localhost. is not cert\'s CN: agent1"',
503c61
+          null, ca1);
503c61
+  makeReq('/inv1-ca1ca2', port1,
503c61
+          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
+              '"Host: localhost. is not cert\'s CN: agent1"',
503c61
+          null, [ca1, ca2]);
503c61
+  makeReq('/val1-ca1', port1, null, 'agent1', ca1);
503c61
+  makeReq('/val1-ca1ca2', port1, null, 'agent1', [ca1, ca2]);
503c61
+  makeReq('/inv1-ca2', port1,
503c61
+          'UNABLE_TO_VERIFY_LEAF_SIGNATURE', 'agent1', ca2);
503c61
+
503c61
+  // server2: self-signed, host = 'agent2'
503c61
+  // doesn't matter that thename matches, all of these will error.
503c61
+  makeReq('/inv2', port2, 'DEPTH_ZERO_SELF_SIGNED_CERT');
503c61
+  makeReq('/inv2-ca1', port2, 'DEPTH_ZERO_SELF_SIGNED_CERT',
503c61
+          'agent2', ca1);
503c61
+  makeReq('/inv2-ca1ca2', port2, 'DEPTH_ZERO_SELF_SIGNED_CERT',
503c61
+          'agent2', [ca1, ca2]);
503c61
+
503c61
+  // server3: host 'agent3', signed by ca2
503c61
+  makeReq('/inv3', port3, 'UNABLE_TO_VERIFY_LEAF_SIGNATURE');
503c61
+  makeReq('/inv3-ca2', port3,
503c61
+          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
+              '"Host: localhost. is not cert\'s CN: agent3"',
503c61
+          null, ca2);
503c61
+  makeReq('/inv3-ca1ca2', port3,
503c61
+          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
+              '"Host: localhost. is not cert\'s CN: agent3"',
503c61
+          null, [ca1, ca2]);
503c61
+  makeReq('/val3-ca2', port3, null, 'agent3', ca2);
503c61
+  makeReq('/val3-ca1ca2', port3, null, 'agent3', [ca1, ca2]);
503c61
+  makeReq('/inv3-ca1', port3,
503c61
+          'UNABLE_TO_VERIFY_LEAF_SIGNATURE', 'agent1', ca1);
503c61
+
503c61
+}
503c61
+
503c61
+process.on('exit', function() {
503c61
+  console.error(responseErrors);
503c61
+  assert.strictEqual(server1.requests.length, server1.expectCount);
503c61
+  assert.strictEqual(server2.requests.length, server2.expectCount);
503c61
+  assert.strictEqual(server3.requests.length, server3.expectCount);
503c61
+  assert.strictEqual(responseCount, expectResponseCount);
503c61
+});
503c61
diff --git a/test/disabled/test-net-better-error-messages-port-hostname.js b/test/disabled/test-net-better-error-messages-port-hostname.js
503c61
new file mode 100644
503c61
index 0000000..0497490
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-net-better-error-messages-port-hostname.js
503c61
@@ -0,0 +1,15 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+const net = require('net');
503c61
+const assert = require('assert');
503c61
+
503c61
+// Using port 0 as hostname used is already invalid.
503c61
+const c = net.createConnection(0, '***');
503c61
+
503c61
+c.on('connect', common.mustNotCall());
503c61
+
503c61
+c.on('error', common.mustCall(function(e) {
503c61
+  assert.strictEqual(e.code, 'ENOTFOUND');
503c61
+  assert.strictEqual(e.port, 0);
503c61
+  assert.strictEqual(e.hostname, '***');
503c61
+}));
503c61
diff --git a/test/disabled/test-net-connect-immediate-finish.js b/test/disabled/test-net-connect-immediate-finish.js
503c61
new file mode 100644
503c61
index 0000000..2c0f45f
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-net-connect-immediate-finish.js
503c61
@@ -0,0 +1,17 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+const assert = require('assert');
503c61
+const net = require('net');
503c61
+
503c61
+const client = net.connect({host: '***', port: common.PORT});
503c61
+
503c61
+client.once('error', common.mustCall((err) => {
503c61
+  assert(err);
503c61
+  assert.strictEqual(err.code, err.errno);
503c61
+  assert.strictEqual(err.code, 'ENOTFOUND');
503c61
+  assert.strictEqual(err.host, err.hostname);
503c61
+  assert.strictEqual(err.host, '***');
503c61
+  assert.strictEqual(err.syscall, 'getaddrinfo');
503c61
+}));
503c61
+
503c61
+client.end();
503c61
diff --git a/test/disabled/test-npm-install.js b/test/disabled/test-npm-install.js
503c61
new file mode 100644
503c61
index 0000000..315f788
503c61
--- /dev/null
503c61
+++ b/test/disabled/test-npm-install.js
503c61
@@ -0,0 +1,59 @@
503c61
+'use strict';
503c61
+const common = require('../common');
503c61
+
503c61
+const path = require('path');
503c61
+const spawn = require('child_process').spawn;
503c61
+const assert = require('assert');
503c61
+const fs = require('fs');
503c61
+
503c61
+common.refreshTmpDir();
503c61
+const npmSandbox = path.join(common.tmpDir, 'npm-sandbox');
503c61
+fs.mkdirSync(npmSandbox);
503c61
+const installDir = path.join(common.tmpDir, 'install-dir');
503c61
+fs.mkdirSync(installDir);
503c61
+
503c61
+const npmPath = path.join(
503c61
+  __dirname,
503c61
+  '..',
503c61
+  '..',
503c61
+  'deps',
503c61
+  'npm',
503c61
+  'bin',
503c61
+  'npm-cli.js'
503c61
+);
503c61
+
503c61
+const args = [
503c61
+  npmPath,
503c61
+  'install'
503c61
+];
503c61
+
503c61
+const pkgContent = JSON.stringify({
503c61
+  dependencies: {
503c61
+    'package-name': `${common.fixturesDir}/packages/main`
503c61
+  }
503c61
+});
503c61
+
503c61
+const pkgPath = path.join(installDir, 'package.json');
503c61
+
503c61
+fs.writeFileSync(pkgPath, pkgContent);
503c61
+
503c61
+const env = Object.create(process.env);
503c61
+env['PATH'] = path.dirname(process.execPath);
503c61
+env['NPM_CONFIG_PREFIX'] = path.join(npmSandbox, 'npm-prefix');
503c61
+env['NPM_CONFIG_TMP'] = path.join(npmSandbox, 'npm-tmp');
503c61
+env['HOME'] = path.join(npmSandbox, 'home');
503c61
+
503c61
+const proc = spawn(process.execPath, args, {
503c61
+  cwd: installDir,
503c61
+  env: env
503c61
+});
503c61
+
503c61
+function handleExit(code, signalCode) {
503c61
+  assert.strictEqual(code, 0, `npm install got error code ${code}`);
503c61
+  assert.strictEqual(signalCode, null, `unexpected signal: ${signalCode}`);
503c61
+  assert.doesNotThrow(function() {
503c61
+    fs.accessSync(`${installDir}/node_modules/package-name`);
503c61
+  });
503c61
+}
503c61
+
503c61
+proc.on('exit', common.mustCall(handleExit));
503c61
diff --git a/test/parallel/test-env-var-no-warnings.js b/test/parallel/test-env-var-no-warnings.js
503c61
deleted file mode 100644
503c61
index f829443..0000000
503c61
--- a/test/parallel/test-env-var-no-warnings.js
503c61
+++ /dev/null
503c61
@@ -1,41 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-const assert = require('assert');
503c61
-const cp = require('child_process');
503c61
-
503c61
-if (process.argv[2] === 'child') {
503c61
-  process.emitWarning('foo');
503c61
-} else {
503c61
-  function test(env) {
503c61
-    const cmd = `"${process.execPath}" "${__filename}" child`;
503c61
-
503c61
-    cp.exec(cmd, { env }, common.mustCall((err, stdout, stderr) => {
503c61
-      assert.strictEqual(err, null);
503c61
-      assert.strictEqual(stdout, '');
503c61
-
503c61
-      if (env.NODE_NO_WARNINGS === '1')
503c61
-        assert.strictEqual(stderr, '');
503c61
-      else
503c61
-        assert(/Warning: foo$/.test(stderr.trim()));
503c61
-    }));
503c61
-  }
503c61
-
503c61
-  test({});
503c61
-  test(process.env);
503c61
-  test({ NODE_NO_WARNINGS: undefined });
503c61
-  test({ NODE_NO_WARNINGS: null });
503c61
-  test({ NODE_NO_WARNINGS: 'foo' });
503c61
-  test({ NODE_NO_WARNINGS: true });
503c61
-  test({ NODE_NO_WARNINGS: false });
503c61
-  test({ NODE_NO_WARNINGS: {} });
503c61
-  test({ NODE_NO_WARNINGS: [] });
503c61
-  test({ NODE_NO_WARNINGS: () => {} });
503c61
-  test({ NODE_NO_WARNINGS: 0 });
503c61
-  test({ NODE_NO_WARNINGS: -1 });
503c61
-  test({ NODE_NO_WARNINGS: '0' });
503c61
-  test({ NODE_NO_WARNINGS: '01' });
503c61
-  test({ NODE_NO_WARNINGS: '2' });
503c61
-  // Don't test the number 1 because it will come through as a string in the
503c61
-  // the child process environment.
503c61
-  test({ NODE_NO_WARNINGS: '1' });
503c61
-}
503c61
diff --git a/test/parallel/test-http-dns-error.js b/test/parallel/test-http-dns-error.js
503c61
deleted file mode 100644
503c61
index bb736c5..0000000
503c61
--- a/test/parallel/test-http-dns-error.js
503c61
+++ /dev/null
503c61
@@ -1,43 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-const assert = require('assert');
503c61
-
503c61
-const http = require('http');
503c61
-
503c61
-let https;
503c61
-if (common.hasCrypto) {
503c61
-  https = require('https');
503c61
-} else {
503c61
-  common.printSkipMessage('missing crypto');
503c61
-}
503c61
-
503c61
-const host = '*'.repeat(256);
503c61
-
503c61
-function do_not_call() {
503c61
-  throw new Error('This function should not have been called.');
503c61
-}
503c61
-
503c61
-function test(mod) {
503c61
-
503c61
-  // Bad host name should not throw an uncatchable exception.
503c61
-  // Ensure that there is time to attach an error listener.
503c61
-  const req1 = mod.get({host: host, port: 42}, do_not_call);
503c61
-  req1.on('error', common.mustCall(function(err) {
503c61
-    assert.strictEqual(err.code, 'ENOTFOUND');
503c61
-  }));
503c61
-  // http.get() called req1.end() for us
503c61
-
503c61
-  const req2 = mod.request({method: 'GET', host: host, port: 42}, do_not_call);
503c61
-  req2.on('error', common.mustCall(function(err) {
503c61
-    assert.strictEqual(err.code, 'ENOTFOUND');
503c61
-  }));
503c61
-  req2.end();
503c61
-}
503c61
-
503c61
-if (common.hasCrypto) {
503c61
-  test(https);
503c61
-} else {
503c61
-  common.printSkipMessage('missing crypto');
503c61
-}
503c61
-
503c61
-test(http);
503c61
diff --git a/test/parallel/test-https-agent-create-connection.js b/test/parallel/test-https-agent-create-connection.js
503c61
deleted file mode 100644
503c61
index a7c329b..0000000
503c61
--- a/test/parallel/test-https-agent-create-connection.js
503c61
+++ /dev/null
503c61
@@ -1,144 +0,0 @@
503c61
-'use strict';
503c61
-
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-
503c61
-const agent = new https.Agent();
503c61
-
503c61
-const fs = require('fs');
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`),
503c61
-};
503c61
-
503c61
-const expectedHeader = /^HTTP\/1.1 200 OK/;
503c61
-const expectedBody = /hello world\n/;
503c61
-const expectCertError = /^Error: unable to verify the first certificate$/;
503c61
-
503c61
-const checkRequest = (socket, server) => {
503c61
-  let result = '';
503c61
-  socket.on('connect', common.mustCall((data) => {
503c61
-    socket.write('GET / HTTP/1.1\r\n\r\n');
503c61
-    socket.end();
503c61
-  }));
503c61
-  socket.on('data', common.mustCall((chunk) => {
503c61
-    result += chunk;
503c61
-  }));
503c61
-  socket.on('end', common.mustCall(() => {
503c61
-    assert(expectedHeader.test(result));
503c61
-    assert(expectedBody.test(result));
503c61
-    server.close();
503c61
-  }));
503c61
-};
503c61
-
503c61
-function createServer() {
503c61
-  return https.createServer(options, (req, res) => {
503c61
-    res.end('hello world\n');
503c61
-  });
503c61
-}
503c61
-
503c61
-// use option connect
503c61
-{
503c61
-  const server = createServer();
503c61
-  server.listen(0, common.mustCall(() => {
503c61
-    const port = server.address().port;
503c61
-    const host = 'localhost';
503c61
-    const options = {
503c61
-      port: port,
503c61
-      host: host,
503c61
-      rejectUnauthorized: false,
503c61
-      _agentKey: agent.getName({
503c61
-        port: port,
503c61
-        host: host,
503c61
-      }),
503c61
-    };
503c61
-
503c61
-    const socket = agent.createConnection(options);
503c61
-    checkRequest(socket, server);
503c61
-  }));
503c61
-}
503c61
-
503c61
-// use port and option connect
503c61
-{
503c61
-  const server = createServer();
503c61
-  server.listen(0, common.mustCall(() => {
503c61
-    const port = server.address().port;
503c61
-    const host = 'localhost';
503c61
-    const options = {
503c61
-      rejectUnauthorized: false,
503c61
-      _agentKey: agent.getName({
503c61
-        port: port,
503c61
-        host: host,
503c61
-      }),
503c61
-    };
503c61
-    const socket = agent.createConnection(port, options);
503c61
-    checkRequest(socket, server);
503c61
-  }));
503c61
-}
503c61
-
503c61
-// use port and host and option connect
503c61
-{
503c61
-  const server = createServer();
503c61
-  server.listen(0, common.mustCall(() => {
503c61
-    const port = server.address().port;
503c61
-    const host = 'localhost';
503c61
-    const options = {
503c61
-      rejectUnauthorized: false,
503c61
-      _agentKey: agent.getName({
503c61
-        port: port,
503c61
-        host: host,
503c61
-      }),
503c61
-    };
503c61
-    const socket = agent.createConnection(port, host, options);
503c61
-    checkRequest(socket, server);
503c61
-  }));
503c61
-}
503c61
-
503c61
-// use port and host and option does not have agentKey
503c61
-{
503c61
-  const server = createServer();
503c61
-  server.listen(0, common.mustCall(() => {
503c61
-    const port = server.address().port;
503c61
-    const host = 'localhost';
503c61
-    const options = {
503c61
-      rejectUnauthorized: false,
503c61
-    };
503c61
-    const socket = agent.createConnection(port, host, options);
503c61
-    checkRequest(socket, server);
503c61
-  }));
503c61
-}
503c61
-
503c61
-// options is null
503c61
-{
503c61
-  const server = createServer();
503c61
-  server.listen(0, common.mustCall(() => {
503c61
-    const port = server.address().port;
503c61
-    const host = 'localhost';
503c61
-    const options = null;
503c61
-    const socket = agent.createConnection(port, host, options);
503c61
-    socket.on('error', common.mustCall((e) => {
503c61
-      assert(expectCertError.test(e.toString()));
503c61
-      server.close();
503c61
-    }));
503c61
-  }));
503c61
-}
503c61
-
503c61
-// options is undefined
503c61
-{
503c61
-  const server = createServer();
503c61
-  server.listen(0, common.mustCall(() => {
503c61
-    const port = server.address().port;
503c61
-    const host = 'localhost';
503c61
-    const options = undefined;
503c61
-    const socket = agent.createConnection(port, host, options);
503c61
-    socket.on('error', common.mustCall((e) => {
503c61
-      assert(expectCertError.test(e.toString()));
503c61
-      server.close();
503c61
-    }));
503c61
-  }));
503c61
-}
503c61
diff --git a/test/parallel/test-https-agent-disable-session-reuse.js b/test/parallel/test-https-agent-disable-session-reuse.js
503c61
deleted file mode 100644
503c61
index 4f92547..0000000
503c61
--- a/test/parallel/test-https-agent-disable-session-reuse.js
503c61
+++ /dev/null
503c61
@@ -1,55 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-
503c61
-const TOTAL_REQS = 2;
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
-};
503c61
-
503c61
-const clientSessions = [];
503c61
-let serverRequests = 0;
503c61
-
503c61
-const agent = new https.Agent({
503c61
-  maxCachedSessions: 0
503c61
-});
503c61
-
503c61
-const server = https.createServer(options, function(req, res) {
503c61
-  serverRequests++;
503c61
-  res.end('ok');
503c61
-}).listen(0, function() {
503c61
-  let waiting = TOTAL_REQS;
503c61
-  function request() {
503c61
-    const options = {
503c61
-      agent: agent,
503c61
-      port: server.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    };
503c61
-
503c61
-    https.request(options, function(res) {
503c61
-      clientSessions.push(res.socket.getSession());
503c61
-
503c61
-      res.resume();
503c61
-      res.on('end', function() {
503c61
-        if (--waiting !== 0)
503c61
-          return request();
503c61
-        server.close();
503c61
-      });
503c61
-    }).end();
503c61
-  }
503c61
-  request();
503c61
-});
503c61
-
503c61
-process.on('exit', function() {
503c61
-  assert.strictEqual(serverRequests, TOTAL_REQS);
503c61
-  assert.strictEqual(clientSessions.length, TOTAL_REQS);
503c61
-  assert.notStrictEqual(clientSessions[0].toString('hex'),
503c61
-                        clientSessions[1].toString('hex'));
503c61
-});
503c61
diff --git a/test/parallel/test-https-agent-session-eviction.js b/test/parallel/test-https-agent-session-eviction.js
503c61
deleted file mode 100644
503c61
index 567ed80..0000000
503c61
--- a/test/parallel/test-https-agent-session-eviction.js
503c61
+++ /dev/null
503c61
@@ -1,84 +0,0 @@
503c61
-'use strict';
503c61
-
503c61
-const common = require('../common');
503c61
-
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-const SSL_OP_NO_TICKET = require('crypto').constants.SSL_OP_NO_TICKET;
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`),
503c61
-  secureOptions: SSL_OP_NO_TICKET
503c61
-};
503c61
-
503c61
-// Create TLS1.2 server
503c61
-https.createServer(options, function(req, res) {
503c61
-  res.end('ohai');
503c61
-}).listen(0, function() {
503c61
-  first(this);
503c61
-});
503c61
-
503c61
-// Do request and let agent cache the session
503c61
-function first(server) {
503c61
-  const port = server.address().port;
503c61
-  const req = https.request({
503c61
-    port: port,
503c61
-    rejectUnauthorized: false
503c61
-  }, function(res) {
503c61
-    res.resume();
503c61
-
503c61
-    server.close(function() {
503c61
-      faultyServer(port);
503c61
-    });
503c61
-  });
503c61
-  req.end();
503c61
-}
503c61
-
503c61
-// Create TLS1 server
503c61
-function faultyServer(port) {
503c61
-  options.secureProtocol = 'TLSv1_method';
503c61
-  https.createServer(options, function(req, res) {
503c61
-    res.end('hello faulty');
503c61
-  }).listen(port, function() {
503c61
-    second(this);
503c61
-  });
503c61
-}
503c61
-
503c61
-// Attempt to request using cached session
503c61
-function second(server, session) {
503c61
-  const req = https.request({
503c61
-    port: server.address().port,
503c61
-    rejectUnauthorized: false
503c61
-  }, function(res) {
503c61
-    res.resume();
503c61
-  });
503c61
-
503c61
-  // Let it fail
503c61
-  req.on('error', common.mustCall(function(err) {
503c61
-    assert(/wrong version number/.test(err.message));
503c61
-
503c61
-    req.on('close', function() {
503c61
-      third(server);
503c61
-    });
503c61
-  }));
503c61
-  req.end();
503c61
-}
503c61
-
503c61
-// Try one more time - session should be evicted!
503c61
-function third(server) {
503c61
-  const req = https.request({
503c61
-    port: server.address().port,
503c61
-    rejectUnauthorized: false
503c61
-  }, function(res) {
503c61
-    res.resume();
503c61
-    assert(!req.socket.isSessionReused());
503c61
-    server.close();
503c61
-  });
503c61
-  req.on('error', common.mustNotCall());
503c61
-  req.end();
503c61
-}
503c61
diff --git a/test/parallel/test-https-agent-sni.js b/test/parallel/test-https-agent-sni.js
503c61
deleted file mode 100644
503c61
index a06ce43..0000000
503c61
--- a/test/parallel/test-https-agent-sni.js
503c61
+++ /dev/null
503c61
@@ -1,49 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
-};
503c61
-
503c61
-const TOTAL = 4;
503c61
-let waiting = TOTAL;
503c61
-
503c61
-const server = https.Server(options, function(req, res) {
503c61
-  if (--waiting === 0) server.close();
503c61
-
503c61
-  res.writeHead(200, {
503c61
-    'x-sni': req.socket.servername
503c61
-  });
503c61
-  res.end('hello world');
503c61
-});
503c61
-
503c61
-server.listen(0, function() {
503c61
-  function expectResponse(id) {
503c61
-    return common.mustCall(function(res) {
503c61
-      res.resume();
503c61
-      assert.strictEqual(res.headers['x-sni'], `sni.${id}`);
503c61
-    });
503c61
-  }
503c61
-
503c61
-  const agent = new https.Agent({
503c61
-    maxSockets: 1
503c61
-  });
503c61
-  for (let j = 0; j < TOTAL; j++) {
503c61
-    https.get({
503c61
-      agent: agent,
503c61
-
503c61
-      path: '/',
503c61
-      port: this.address().port,
503c61
-      host: '127.0.0.1',
503c61
-      servername: `sni.${j}`,
503c61
-      rejectUnauthorized: false
503c61
-    }, expectResponse(j));
503c61
-  }
503c61
-});
503c61
diff --git a/test/parallel/test-https-agent.js b/test/parallel/test-https-agent.js
503c61
deleted file mode 100644
503c61
index 24086d1..0000000
503c61
--- a/test/parallel/test-https-agent.js
503c61
+++ /dev/null
503c61
@@ -1,50 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
-};
503c61
-
503c61
-
503c61
-const server = https.Server(options, function(req, res) {
503c61
-  res.writeHead(200);
503c61
-  res.end('hello world\n');
503c61
-});
503c61
-
503c61
-
503c61
-let responses = 0;
503c61
-const N = 4;
503c61
-const M = 4;
503c61
-
503c61
-
503c61
-server.listen(0, function() {
503c61
-  for (let i = 0; i < N; i++) {
503c61
-    setTimeout(function() {
503c61
-      for (let j = 0; j < M; j++) {
503c61
-        https.get({
503c61
-          path: '/',
503c61
-          port: server.address().port,
503c61
-          rejectUnauthorized: false
503c61
-        }, function(res) {
503c61
-          res.resume();
503c61
-          assert.strictEqual(res.statusCode, 200);
503c61
-          if (++responses === N * M) server.close();
503c61
-        }).on('error', function(e) {
503c61
-          throw e;
503c61
-        });
503c61
-      }
503c61
-    }, i);
503c61
-  }
503c61
-});
503c61
-
503c61
-
503c61
-process.on('exit', function() {
503c61
-  assert.strictEqual(N * M, responses);
503c61
-});
503c61
diff --git a/test/parallel/test-https-client-reject.js b/test/parallel/test-https-client-reject.js
503c61
deleted file mode 100644
503c61
index 8369e9a..0000000
503c61
--- a/test/parallel/test-https-client-reject.js
503c61
+++ /dev/null
503c61
@@ -1,64 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-const path = require('path');
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')),
503c61
-  cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))
503c61
-};
503c61
-
503c61
-const server = https.createServer(options, common.mustCall(function(req, res) {
503c61
-  res.writeHead(200);
503c61
-  res.end();
503c61
-  req.resume();
503c61
-}, 2)).listen(0, function() {
503c61
-  unauthorized();
503c61
-});
503c61
-
503c61
-function unauthorized() {
503c61
-  const req = https.request({
503c61
-    port: server.address().port,
503c61
-    rejectUnauthorized: false
503c61
-  }, function(res) {
503c61
-    assert(!req.socket.authorized);
503c61
-    res.resume();
503c61
-    rejectUnauthorized();
503c61
-  });
503c61
-  req.on('error', function(err) {
503c61
-    throw err;
503c61
-  });
503c61
-  req.end();
503c61
-}
503c61
-
503c61
-function rejectUnauthorized() {
503c61
-  const options = {
503c61
-    port: server.address().port
503c61
-  };
503c61
-  options.agent = new https.Agent(options);
503c61
-  const req = https.request(options, common.mustNotCall());
503c61
-  req.on('error', function(err) {
503c61
-    authorized();
503c61
-  });
503c61
-  req.end();
503c61
-}
503c61
-
503c61
-function authorized() {
503c61
-  const options = {
503c61
-    port: server.address().port,
503c61
-    ca: [fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem'))]
503c61
-  };
503c61
-  options.agent = new https.Agent(options);
503c61
-  const req = https.request(options, function(res) {
503c61
-    res.resume();
503c61
-    assert(req.socket.authorized);
503c61
-    server.close();
503c61
-  });
503c61
-  req.on('error', common.mustNotCall());
503c61
-  req.end();
503c61
-}
503c61
diff --git a/test/parallel/test-https-client-resume.js b/test/parallel/test-https-client-resume.js
503c61
deleted file mode 100644
503c61
index 6ba40dc..0000000
503c61
--- a/test/parallel/test-https-client-resume.js
503c61
+++ /dev/null
503c61
@@ -1,62 +0,0 @@
503c61
-'use strict';
503c61
-// Create an ssl server.  First connection, validate that not resume.
503c61
-// Cache session and close connection.  Use session on second connection.
503c61
-// ASSERT resumption.
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const tls = require('tls');
503c61
-const fs = require('fs');
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent2-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent2-cert.pem`)
503c61
-};
503c61
-
503c61
-// create server
503c61
-const server = https.createServer(options, common.mustCall(function(req, res) {
503c61
-  res.end('Goodbye');
503c61
-}, 2));
503c61
-
503c61
-// start listening
503c61
-server.listen(0, function() {
503c61
-
503c61
-  let session1 = null;
503c61
-  const client1 = tls.connect({
503c61
-    port: this.address().port,
503c61
-    rejectUnauthorized: false
503c61
-  }, function() {
503c61
-    console.log('connect1');
503c61
-    assert.ok(!client1.isSessionReused(), 'Session *should not* be reused.');
503c61
-    session1 = client1.getSession();
503c61
-    client1.write('GET / HTTP/1.0\r\n' +
503c61
-                  'Server: 127.0.0.1\r\n' +
503c61
-                  '\r\n');
503c61
-  });
503c61
-
503c61
-  client1.on('close', function() {
503c61
-    console.log('close1');
503c61
-
503c61
-    const opts = {
503c61
-      port: server.address().port,
503c61
-      rejectUnauthorized: false,
503c61
-      session: session1
503c61
-    };
503c61
-
503c61
-    const client2 = tls.connect(opts, function() {
503c61
-      console.log('connect2');
503c61
-      assert.ok(client2.isSessionReused(), 'Session *should* be reused.');
503c61
-      client2.write('GET / HTTP/1.0\r\n' +
503c61
-                    'Server: 127.0.0.1\r\n' +
503c61
-                    '\r\n');
503c61
-    });
503c61
-
503c61
-    client2.on('close', function() {
503c61
-      console.log('close2');
503c61
-      server.close();
503c61
-    });
503c61
-  });
503c61
-});
503c61
diff --git a/test/parallel/test-https-host-headers.js b/test/parallel/test-https-host-headers.js
503c61
deleted file mode 100644
503c61
index c8afa61..0000000
503c61
--- a/test/parallel/test-https-host-headers.js
503c61
+++ /dev/null
503c61
@@ -1,109 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
-};
503c61
-const httpsServer = https.createServer(options, reqHandler);
503c61
-
503c61
-function reqHandler(req, res) {
503c61
-  console.log(`Got request: ${req.headers.host} ${req.url}`);
503c61
-  if (req.url === '/setHostFalse5') {
503c61
-    assert.strictEqual(req.headers.host, undefined);
503c61
-  } else {
503c61
-    assert.strictEqual(
503c61
-      req.headers.host, `localhost:${this.address().port}`,
503c61
-      `Wrong host header for req[${req.url}]: ${req.headers.host}`);
503c61
-  }
503c61
-  res.writeHead(200, {});
503c61
-  //process.nextTick(function() { res.end('ok'); });
503c61
-  res.end('ok');
503c61
-}
503c61
-
503c61
-function thrower(er) {
503c61
-  throw er;
503c61
-}
503c61
-
503c61
-testHttps();
503c61
-
503c61
-function testHttps() {
503c61
-
503c61
-  let counter = 0;
503c61
-
503c61
-  function cb(res) {
503c61
-    counter--;
503c61
-    console.log(`back from https request. counter = ${counter}`);
503c61
-    if (counter === 0) {
503c61
-      httpsServer.close();
503c61
-      console.log('ok');
503c61
-    }
503c61
-    res.resume();
503c61
-  }
503c61
-
503c61
-  httpsServer.listen(0, function(er) {
503c61
-    console.log(`test https server listening on port ${this.address().port}`);
503c61
-
503c61
-    if (er) throw er;
503c61
-
503c61
-    https.get({
503c61
-      method: 'GET',
503c61
-      path: `/${counter++}`,
503c61
-      host: 'localhost',
503c61
-      //agent: false,
503c61
-      port: this.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }, cb).on('error', thrower);
503c61
-
503c61
-    https.request({
503c61
-      method: 'GET',
503c61
-      path: `/${counter++}`,
503c61
-      host: 'localhost',
503c61
-      //agent: false,
503c61
-      port: this.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }, cb).on('error', thrower).end();
503c61
-
503c61
-    https.request({
503c61
-      method: 'POST',
503c61
-      path: `/${counter++}`,
503c61
-      host: 'localhost',
503c61
-      //agent: false,
503c61
-      port: this.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }, cb).on('error', thrower).end();
503c61
-
503c61
-    https.request({
503c61
-      method: 'PUT',
503c61
-      path: `/${counter++}`,
503c61
-      host: 'localhost',
503c61
-      //agent: false,
503c61
-      port: this.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }, cb).on('error', thrower).end();
503c61
-
503c61
-    https.request({
503c61
-      method: 'DELETE',
503c61
-      path: `/${counter++}`,
503c61
-      host: 'localhost',
503c61
-      //agent: false,
503c61
-      port: this.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }, cb).on('error', thrower).end();
503c61
-
503c61
-    https.get({
503c61
-      method: 'GET',
503c61
-      path: `/setHostFalse${counter++}`,
503c61
-      host: 'localhost',
503c61
-      setHost: false,
503c61
-      port: this.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }, cb).on('error', thrower).end();
503c61
-  });
503c61
-}
503c61
diff --git a/test/parallel/test-https-set-timeout-server.js b/test/parallel/test-https-set-timeout-server.js
503c61
deleted file mode 100644
503c61
index b27471e..0000000
503c61
--- a/test/parallel/test-https-set-timeout-server.js
503c61
+++ /dev/null
503c61
@@ -1,221 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-const assert = require('assert');
503c61
-
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const https = require('https');
503c61
-const http = require('http');
503c61
-
503c61
-const tls = require('tls');
503c61
-const fs = require('fs');
503c61
-
503c61
-const tests = [];
503c61
-
503c61
-const serverOptions = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
-};
503c61
-
503c61
-function test(fn) {
503c61
-  if (!tests.length)
503c61
-    process.nextTick(run);
503c61
-  tests.push(common.mustCall(fn));
503c61
-}
503c61
-
503c61
-function run() {
503c61
-  const fn = tests.shift();
503c61
-  if (fn) {
503c61
-    fn(run);
503c61
-  }
503c61
-}
503c61
-
503c61
-test(function serverTimeout(cb) {
503c61
-  const server = https.createServer(serverOptions);
503c61
-  server.listen(common.mustCall(() => {
503c61
-    const s = server.setTimeout(50, common.mustCall((socket) => {
503c61
-      socket.destroy();
503c61
-      server.close();
503c61
-      cb();
503c61
-    }));
503c61
-    assert.ok(s instanceof https.Server);
503c61
-    https.get({
503c61
-      port: server.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }).on('error', () => {});
503c61
-  }));
503c61
-});
503c61
-
503c61
-test(function serverRequestTimeout(cb) {
503c61
-  const server = https.createServer(
503c61
-    serverOptions,
503c61
-    common.mustCall((req, res) => {
503c61
-      // just do nothing, we should get a timeout event.
503c61
-      const s = req.setTimeout(50, common.mustCall((socket) => {
503c61
-        socket.destroy();
503c61
-        server.close();
503c61
-        cb();
503c61
-      }));
503c61
-      assert.ok(s instanceof http.IncomingMessage);
503c61
-    }));
503c61
-  server.listen(common.mustCall(() => {
503c61
-    const req = https.request({
503c61
-      port: server.address().port,
503c61
-      method: 'POST',
503c61
-      rejectUnauthorized: false
503c61
-    });
503c61
-    req.on('error', () => {});
503c61
-    req.write('Hello');
503c61
-    // req is in progress
503c61
-  }));
503c61
-});
503c61
-
503c61
-test(function serverResponseTimeout(cb) {
503c61
-  const server = https.createServer(
503c61
-    serverOptions,
503c61
-    common.mustCall((req, res) => {
503c61
-      // just do nothing, we should get a timeout event.
503c61
-      const s = res.setTimeout(50, common.mustCall((socket) => {
503c61
-        socket.destroy();
503c61
-        server.close();
503c61
-        cb();
503c61
-      }));
503c61
-      assert.ok(s instanceof http.OutgoingMessage);
503c61
-    }));
503c61
-  server.listen(common.mustCall(() => {
503c61
-    https.get({
503c61
-      port: server.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }).on('error', common.mustCall());
503c61
-  }));
503c61
-});
503c61
-
503c61
-test(function serverRequestNotTimeoutAfterEnd(cb) {
503c61
-  const server = https.createServer(
503c61
-    serverOptions,
503c61
-    common.mustCall((req, res) => {
503c61
-      // just do nothing, we should get a timeout event.
503c61
-      const s = req.setTimeout(50, common.mustNotCall());
503c61
-      assert.ok(s instanceof http.IncomingMessage);
503c61
-      res.on('timeout', common.mustCall());
503c61
-    }));
503c61
-  server.on('timeout', common.mustCall((socket) => {
503c61
-    socket.destroy();
503c61
-    server.close();
503c61
-    cb();
503c61
-  }));
503c61
-  server.listen(common.mustCall(() => {
503c61
-    https.get({
503c61
-      port: server.address().port,
503c61
-      rejectUnauthorized: false
503c61
-    }).on('error', common.mustCall());
503c61
-  }));
503c61
-});
503c61
-
503c61
-test(function serverResponseTimeoutWithPipeline(cb) {
503c61
-  let caughtTimeout = '';
503c61
-  let secReceived = false;
503c61
-  process.on('exit', () => {
503c61
-    assert.strictEqual(caughtTimeout, '/2');
503c61
-  });
503c61
-  const server = https.createServer(serverOptions, (req, res) => {
503c61
-    if (req.url === '/2')
503c61
-      secReceived = true;
503c61
-    if (req.url === '/1') {
503c61
-      res.end();
503c61
-      return;
503c61
-    }
503c61
-    const s = res.setTimeout(50, () => {
503c61
-      caughtTimeout += req.url;
503c61
-    });
503c61
-    assert.ok(s instanceof http.OutgoingMessage);
503c61
-  });
503c61
-  server.on('timeout', common.mustCall((socket) => {
503c61
-    if (secReceived) {
503c61
-      socket.destroy();
503c61
-      server.close();
503c61
-      cb();
503c61
-    }
503c61
-  }));
503c61
-  server.listen(common.mustCall(() => {
503c61
-    const options = {
503c61
-      port: server.address().port,
503c61
-      allowHalfOpen: true,
503c61
-      rejectUnauthorized: false
503c61
-    };
503c61
-    const c = tls.connect(options, () => {
503c61
-      c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
-      c.write('GET /2 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
-      c.write('GET /3 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
-    });
503c61
-  }));
503c61
-});
503c61
-
503c61
-test(function idleTimeout(cb) {
503c61
-  // Test that the an idle connection invokes the timeout callback.
503c61
-  const server = https.createServer(serverOptions);
503c61
-  const s = server.setTimeout(50, common.mustCall((socket) => {
503c61
-    socket.destroy();
503c61
-    server.close();
503c61
-    cb();
503c61
-  }));
503c61
-  assert.ok(s instanceof https.Server);
503c61
-  server.listen(common.mustCall(() => {
503c61
-    const options = {
503c61
-      port: server.address().port,
503c61
-      allowHalfOpen: true,
503c61
-      rejectUnauthorized: false
503c61
-    };
503c61
-    const c = tls.connect(options, () => {
503c61
-      // ECONNRESET could happen on a heavily-loaded server.
503c61
-      c.on('error', (e) => {
503c61
-        if (e.message !== 'read ECONNRESET')
503c61
-          throw e;
503c61
-      });
503c61
-      c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
-      // Keep-Alive
503c61
-    });
503c61
-  }));
503c61
-});
503c61
-
503c61
-test(function fastTimeout(cb) {
503c61
-  // Test that the socket timeout fires but no timeout fires for the request.
503c61
-  let connectionHandlerInvoked = false;
503c61
-  let timeoutHandlerInvoked = false;
503c61
-  let connectionSocket;
503c61
-
503c61
-  function invokeCallbackIfDone() {
503c61
-    if (connectionHandlerInvoked && timeoutHandlerInvoked) {
503c61
-      connectionSocket.destroy();
503c61
-      server.close();
503c61
-      cb();
503c61
-    }
503c61
-  }
503c61
-
503c61
-  const server = https.createServer(serverOptions, common.mustCall(
503c61
-    (req, res) => {
503c61
-      req.on('timeout', common.mustNotCall());
503c61
-      res.end();
503c61
-      connectionHandlerInvoked = true;
503c61
-      invokeCallbackIfDone();
503c61
-    }
503c61
-  ));
503c61
-  const s = server.setTimeout(1, common.mustCall((socket) => {
503c61
-    connectionSocket = socket;
503c61
-    timeoutHandlerInvoked = true;
503c61
-    invokeCallbackIfDone();
503c61
-  }));
503c61
-  assert.ok(s instanceof https.Server);
503c61
-  server.listen(common.mustCall(() => {
503c61
-    const options = {
503c61
-      port: server.address().port,
503c61
-      allowHalfOpen: true,
503c61
-      rejectUnauthorized: false
503c61
-    };
503c61
-    const c = tls.connect(options, () => {
503c61
-      c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');
503c61
-      // Keep-Alive
503c61
-    });
503c61
-  }));
503c61
-});
503c61
diff --git a/test/parallel/test-https-simple.js b/test/parallel/test-https-simple.js
503c61
deleted file mode 100644
503c61
index 9184430..0000000
503c61
--- a/test/parallel/test-https-simple.js
503c61
+++ /dev/null
503c61
@@ -1,93 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-
503c61
-const options = {
503c61
-  key: fs.readFileSync(`${common.fixturesDir}/keys/agent1-key.pem`),
503c61
-  cert: fs.readFileSync(`${common.fixturesDir}/keys/agent1-cert.pem`)
503c61
-};
503c61
-
503c61
-const tests = 2;
503c61
-let successful = 0;
503c61
-
503c61
-const testSucceeded = () => {
503c61
-  successful = successful + 1;
503c61
-  if (successful === tests) {
503c61
-    server.close();
503c61
-  }
503c61
-};
503c61
-
503c61
-const body = 'hello world\n';
503c61
-
503c61
-const serverCallback = common.mustCall(function(req, res) {
503c61
-  res.writeHead(200, { 'content-type': 'text/plain' });
503c61
-  res.end(body);
503c61
-});
503c61
-
503c61
-const server = https.createServer(options, serverCallback);
503c61
-
503c61
-server.listen(0, common.mustCall(() => {
503c61
-  // Do a request ignoring the unauthorized server certs
503c61
-  const port = server.address().port;
503c61
-
503c61
-  const noCertCheckOptions = {
503c61
-    hostname: '127.0.0.1',
503c61
-    port: port,
503c61
-    path: '/',
503c61
-    method: 'GET',
503c61
-    rejectUnauthorized: false
503c61
-  };
503c61
-
503c61
-  noCertCheckOptions.Agent = new https.Agent(noCertCheckOptions);
503c61
-
503c61
-  const req = https.request(noCertCheckOptions, common.mustCall((res) => {
503c61
-    let responseBody = '';
503c61
-    res.on('data', function(d) {
503c61
-      responseBody = responseBody + d;
503c61
-    });
503c61
-
503c61
-    res.on('end', common.mustCall(() => {
503c61
-      assert.strictEqual(responseBody, body);
503c61
-      testSucceeded();
503c61
-    }));
503c61
-  }));
503c61
-  req.end();
503c61
-
503c61
-  req.on('error', function(e) {
503c61
-    throw e;
503c61
-  });
503c61
-
503c61
-  // Do a request that throws error due to the invalid server certs
503c61
-  const checkCertOptions = {
503c61
-    hostname: '127.0.0.1',
503c61
-    port: port,
503c61
-    path: '/',
503c61
-    method: 'GET'
503c61
-  };
503c61
-
503c61
-  const checkCertReq = https.request(checkCertOptions, function(res) {
503c61
-    res.on('data', function() {
503c61
-      throw new Error('data should not be received');
503c61
-    });
503c61
-
503c61
-    res.on('end', function() {
503c61
-      throw new Error('connection should not be established');
503c61
-    });
503c61
-  });
503c61
-  checkCertReq.end();
503c61
-
503c61
-  checkCertReq.on('error', common.mustCall((e) => {
503c61
-    assert.strictEqual(e.code, 'UNABLE_TO_VERIFY_LEAF_SIGNATURE');
503c61
-    testSucceeded();
503c61
-  }));
503c61
-}));
503c61
-
503c61
-process.on('exit', function() {
503c61
-  assert.strictEqual(successful, tests);
503c61
-});
503c61
diff --git a/test/parallel/test-https-strict.js b/test/parallel/test-https-strict.js
503c61
deleted file mode 100644
503c61
index 1cb49fc..0000000
503c61
--- a/test/parallel/test-https-strict.js
503c61
+++ /dev/null
503c61
@@ -1,201 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-if (!common.hasCrypto)
503c61
-  common.skip('missing crypto');
503c61
-
503c61
-// disable strict server certificate validation by the client
503c61
-process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
503c61
-
503c61
-const assert = require('assert');
503c61
-const https = require('https');
503c61
-const fs = require('fs');
503c61
-const path = require('path');
503c61
-
503c61
-function file(fname) {
503c61
-  return path.resolve(common.fixturesDir, 'keys', fname);
503c61
-}
503c61
-
503c61
-function read(fname) {
503c61
-  return fs.readFileSync(file(fname));
503c61
-}
503c61
-
503c61
-// key1 is signed by ca1.
503c61
-const key1 = read('agent1-key.pem');
503c61
-const cert1 = read('agent1-cert.pem');
503c61
-
503c61
-// key2 has a self signed cert
503c61
-const key2 = read('agent2-key.pem');
503c61
-const cert2 = read('agent2-cert.pem');
503c61
-
503c61
-// key3 is signed by ca2.
503c61
-const key3 = read('agent3-key.pem');
503c61
-const cert3 = read('agent3-cert.pem');
503c61
-
503c61
-const ca1 = read('ca1-cert.pem');
503c61
-const ca2 = read('ca2-cert.pem');
503c61
-
503c61
-// different agents to use different CA lists.
503c61
-// this api is beyond bad.
503c61
-const agent0 = new https.Agent();
503c61
-const agent1 = new https.Agent({ ca: [ca1] });
503c61
-const agent2 = new https.Agent({ ca: [ca2] });
503c61
-const agent3 = new https.Agent({ ca: [ca1, ca2] });
503c61
-
503c61
-const options1 = {
503c61
-  key: key1,
503c61
-  cert: cert1
503c61
-};
503c61
-
503c61
-const options2 = {
503c61
-  key: key2,
503c61
-  cert: cert2
503c61
-};
503c61
-
503c61
-const options3 = {
503c61
-  key: key3,
503c61
-  cert: cert3
503c61
-};
503c61
-
503c61
-const server1 = server(options1);
503c61
-const server2 = server(options2);
503c61
-const server3 = server(options3);
503c61
-
503c61
-let listenWait = 0;
503c61
-
503c61
-server1.listen(0, listening());
503c61
-server2.listen(0, listening());
503c61
-server3.listen(0, listening());
503c61
-
503c61
-const responseErrors = {};
503c61
-let expectResponseCount = 0;
503c61
-let responseCount = 0;
503c61
-let pending = 0;
503c61
-
503c61
-
503c61
-function server(options, port) {
503c61
-  const s = https.createServer(options, handler);
503c61
-  s.requests = [];
503c61
-  s.expectCount = 0;
503c61
-  return s;
503c61
-}
503c61
-
503c61
-function handler(req, res) {
503c61
-  this.requests.push(req.url);
503c61
-  res.statusCode = 200;
503c61
-  res.setHeader('foo', 'bar');
503c61
-  res.end('hello, world\n');
503c61
-}
503c61
-
503c61
-function listening() {
503c61
-  listenWait++;
503c61
-  return function() {
503c61
-    listenWait--;
503c61
-    if (listenWait === 0) {
503c61
-      allListening();
503c61
-    }
503c61
-  };
503c61
-}
503c61
-
503c61
-function makeReq(path, port, error, host, ca) {
503c61
-  pending++;
503c61
-  const options = {
503c61
-    port: port,
503c61
-    path: path,
503c61
-    ca: ca
503c61
-  };
503c61
-
503c61
-  if (!ca) {
503c61
-    options.agent = agent0;
503c61
-  } else {
503c61
-    if (!Array.isArray(ca)) ca = [ca];
503c61
-    if (ca.includes(ca1) && ca.includes(ca2)) {
503c61
-      options.agent = agent3;
503c61
-    } else if (ca.includes(ca1)) {
503c61
-      options.agent = agent1;
503c61
-    } else if (ca.includes(ca2)) {
503c61
-      options.agent = agent2;
503c61
-    } else {
503c61
-      options.agent = agent0;
503c61
-    }
503c61
-  }
503c61
-
503c61
-  if (host) {
503c61
-    options.headers = { host: host };
503c61
-  }
503c61
-  const req = https.get(options);
503c61
-  expectResponseCount++;
503c61
-  const server = port === server1.address().port ? server1
503c61
-    : port === server2.address().port ? server2
503c61
-      : port === server3.address().port ? server3
503c61
-        : null;
503c61
-
503c61
-  if (!server) throw new Error(`invalid port: ${port}`);
503c61
-  server.expectCount++;
503c61
-
503c61
-  req.on('response', function(res) {
503c61
-    responseCount++;
503c61
-    assert.strictEqual(res.connection.authorizationError, error);
503c61
-    responseErrors[path] = res.connection.authorizationError;
503c61
-    pending--;
503c61
-    if (pending === 0) {
503c61
-      server1.close();
503c61
-      server2.close();
503c61
-      server3.close();
503c61
-    }
503c61
-    res.resume();
503c61
-  });
503c61
-}
503c61
-
503c61
-function allListening() {
503c61
-  // ok, ready to start the tests!
503c61
-  const port1 = server1.address().port;
503c61
-  const port2 = server2.address().port;
503c61
-  const port3 = server3.address().port;
503c61
-
503c61
-  // server1: host 'agent1', signed by ca1
503c61
-  makeReq('/inv1', port1, 'UNABLE_TO_VERIFY_LEAF_SIGNATURE');
503c61
-  makeReq('/inv1-ca1', port1,
503c61
-          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
-              '"Host: localhost. is not cert\'s CN: agent1"',
503c61
-          null, ca1);
503c61
-  makeReq('/inv1-ca1ca2', port1,
503c61
-          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
-              '"Host: localhost. is not cert\'s CN: agent1"',
503c61
-          null, [ca1, ca2]);
503c61
-  makeReq('/val1-ca1', port1, null, 'agent1', ca1);
503c61
-  makeReq('/val1-ca1ca2', port1, null, 'agent1', [ca1, ca2]);
503c61
-  makeReq('/inv1-ca2', port1,
503c61
-          'UNABLE_TO_VERIFY_LEAF_SIGNATURE', 'agent1', ca2);
503c61
-
503c61
-  // server2: self-signed, host = 'agent2'
503c61
-  // doesn't matter that thename matches, all of these will error.
503c61
-  makeReq('/inv2', port2, 'DEPTH_ZERO_SELF_SIGNED_CERT');
503c61
-  makeReq('/inv2-ca1', port2, 'DEPTH_ZERO_SELF_SIGNED_CERT',
503c61
-          'agent2', ca1);
503c61
-  makeReq('/inv2-ca1ca2', port2, 'DEPTH_ZERO_SELF_SIGNED_CERT',
503c61
-          'agent2', [ca1, ca2]);
503c61
-
503c61
-  // server3: host 'agent3', signed by ca2
503c61
-  makeReq('/inv3', port3, 'UNABLE_TO_VERIFY_LEAF_SIGNATURE');
503c61
-  makeReq('/inv3-ca2', port3,
503c61
-          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
-              '"Host: localhost. is not cert\'s CN: agent3"',
503c61
-          null, ca2);
503c61
-  makeReq('/inv3-ca1ca2', port3,
503c61
-          'Hostname/IP doesn\'t match certificate\'s altnames: ' +
503c61
-              '"Host: localhost. is not cert\'s CN: agent3"',
503c61
-          null, [ca1, ca2]);
503c61
-  makeReq('/val3-ca2', port3, null, 'agent3', ca2);
503c61
-  makeReq('/val3-ca1ca2', port3, null, 'agent3', [ca1, ca2]);
503c61
-  makeReq('/inv3-ca1', port3,
503c61
-          'UNABLE_TO_VERIFY_LEAF_SIGNATURE', 'agent1', ca1);
503c61
-
503c61
-}
503c61
-
503c61
-process.on('exit', function() {
503c61
-  console.error(responseErrors);
503c61
-  assert.strictEqual(server1.requests.length, server1.expectCount);
503c61
-  assert.strictEqual(server2.requests.length, server2.expectCount);
503c61
-  assert.strictEqual(server3.requests.length, server3.expectCount);
503c61
-  assert.strictEqual(responseCount, expectResponseCount);
503c61
-});
503c61
diff --git a/test/parallel/test-net-better-error-messages-port-hostname.js b/test/parallel/test-net-better-error-messages-port-hostname.js
503c61
deleted file mode 100644
503c61
index 0497490..0000000
503c61
--- a/test/parallel/test-net-better-error-messages-port-hostname.js
503c61
+++ /dev/null
503c61
@@ -1,15 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-const net = require('net');
503c61
-const assert = require('assert');
503c61
-
503c61
-// Using port 0 as hostname used is already invalid.
503c61
-const c = net.createConnection(0, '***');
503c61
-
503c61
-c.on('connect', common.mustNotCall());
503c61
-
503c61
-c.on('error', common.mustCall(function(e) {
503c61
-  assert.strictEqual(e.code, 'ENOTFOUND');
503c61
-  assert.strictEqual(e.port, 0);
503c61
-  assert.strictEqual(e.hostname, '***');
503c61
-}));
503c61
diff --git a/test/parallel/test-net-connect-immediate-finish.js b/test/parallel/test-net-connect-immediate-finish.js
503c61
deleted file mode 100644
503c61
index 2c0f45f..0000000
503c61
--- a/test/parallel/test-net-connect-immediate-finish.js
503c61
+++ /dev/null
503c61
@@ -1,17 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-const assert = require('assert');
503c61
-const net = require('net');
503c61
-
503c61
-const client = net.connect({host: '***', port: common.PORT});
503c61
-
503c61
-client.once('error', common.mustCall((err) => {
503c61
-  assert(err);
503c61
-  assert.strictEqual(err.code, err.errno);
503c61
-  assert.strictEqual(err.code, 'ENOTFOUND');
503c61
-  assert.strictEqual(err.host, err.hostname);
503c61
-  assert.strictEqual(err.host, '***');
503c61
-  assert.strictEqual(err.syscall, 'getaddrinfo');
503c61
-}));
503c61
-
503c61
-client.end();
503c61
diff --git a/test/parallel/test-npm-install.js b/test/parallel/test-npm-install.js
503c61
deleted file mode 100644
503c61
index 315f788..0000000
503c61
--- a/test/parallel/test-npm-install.js
503c61
+++ /dev/null
503c61
@@ -1,59 +0,0 @@
503c61
-'use strict';
503c61
-const common = require('../common');
503c61
-
503c61
-const path = require('path');
503c61
-const spawn = require('child_process').spawn;
503c61
-const assert = require('assert');
503c61
-const fs = require('fs');
503c61
-
503c61
-common.refreshTmpDir();
503c61
-const npmSandbox = path.join(common.tmpDir, 'npm-sandbox');
503c61
-fs.mkdirSync(npmSandbox);
503c61
-const installDir = path.join(common.tmpDir, 'install-dir');
503c61
-fs.mkdirSync(installDir);
503c61
-
503c61
-const npmPath = path.join(
503c61
-  __dirname,
503c61
-  '..',
503c61
-  '..',
503c61
-  'deps',
503c61
-  'npm',
503c61
-  'bin',
503c61
-  'npm-cli.js'
503c61
-);
503c61
-
503c61
-const args = [
503c61
-  npmPath,
503c61
-  'install'
503c61
-];
503c61
-
503c61
-const pkgContent = JSON.stringify({
503c61
-  dependencies: {
503c61
-    'package-name': `${common.fixturesDir}/packages/main`
503c61
-  }
503c61
-});
503c61
-
503c61
-const pkgPath = path.join(installDir, 'package.json');
503c61
-
503c61
-fs.writeFileSync(pkgPath, pkgContent);
503c61
-
503c61
-const env = Object.create(process.env);
503c61
-env['PATH'] = path.dirname(process.execPath);
503c61
-env['NPM_CONFIG_PREFIX'] = path.join(npmSandbox, 'npm-prefix');
503c61
-env['NPM_CONFIG_TMP'] = path.join(npmSandbox, 'npm-tmp');
503c61
-env['HOME'] = path.join(npmSandbox, 'home');
503c61
-
503c61
-const proc = spawn(process.execPath, args, {
503c61
-  cwd: installDir,
503c61
-  env: env
503c61
-});
503c61
-
503c61
-function handleExit(code, signalCode) {
503c61
-  assert.strictEqual(code, 0, `npm install got error code ${code}`);
503c61
-  assert.strictEqual(signalCode, null, `unexpected signal: ${signalCode}`);
503c61
-  assert.doesNotThrow(function() {
503c61
-    fs.accessSync(`${installDir}/node_modules/package-name`);
503c61
-  });
503c61
-}
503c61
-
503c61
-proc.on('exit', common.mustCall(handleExit));
8dc1ea
-- 
503c61
1.8.3.1
8dc1ea