'use strict';
const common = require('../common');
if (!common.hasCrypto)
  common.skip('missing crypto');
const fixtures = require('../common/fixtures');
const assert = require('assert');
const https = require('https');

// Disable strict server certificate validation by the client
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

const options = {
  key: fixtures.readKey('agent1-key.pem'),
  cert: fixtures.readKey('agent1-cert.pem')
};

const server = https.Server(options, common.mustCall((req, res) => {
  res.writeHead(200);
  res.end('Hello, World!');
}));

server.listen(0, common.mustCall(() => {
  const agent = new https.Agent();
  const name = agent.getName({ port: server.address().port });
  https.globalAgent = agent;

  makeRequest();
  assert(agent.sockets.hasOwnProperty(name)); // agent has indeed been used
}));

function makeRequest() {
  const req = https.get({
    port: server.address().port
  });
  req.on('close', () =>
    server.close());
}
