summaryrefslogtreecommitdiff
path: root/test/parallel/test-tls-error-servername.js
blob: c42ff2fe73f46666daea8dab0cc1fe57285b523d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
'use strict';

// This tests the errors thrown from TLSSocket.prototype.setServername

const common = require('../common');
const fixtures = require('../common/fixtures');

if (!common.hasCrypto)
  common.skip('missing crypto');

const { connect, TLSSocket } = require('tls');
const makeDuplexPair = require('../common/duplexpair');
const { clientSide, serverSide } = makeDuplexPair();

const key = fixtures.readKey('agent1-key.pem');
const cert = fixtures.readKey('agent1-cert.pem');
const ca = fixtures.readKey('ca1-cert.pem');

const client = connect({
  socket: clientSide,
  ca,
  host: 'agent1'  // Hostname from certificate
});

[undefined, null, 1, true, {}].forEach((value) => {
  common.expectsError(() => {
    client.setServername(value);
  }, {
    code: 'ERR_INVALID_ARG_TYPE',
    message: 'The "name" argument must be of type string. ' +
             `Received type ${typeof value}`
  });
});

const server = new TLSSocket(serverSide, {
  isServer: true,
  key,
  cert,
  ca
});

common.expectsError(() => {
  server.setServername('localhost');
}, {
  code: 'ERR_TLS_SNI_FROM_SERVER',
  message: 'Cannot issue SNI from a TLS server-side socket'
});