• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright Joyent, Inc. and other Node contributors.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and associated documentation files (the
5// "Software"), to deal in the Software without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Software, and to permit
8// persons to whom the Software is furnished to do so, subject to the
9// following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Software.
13//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20// USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22'use strict';
23const common = require('../common');
24
25if (!common.hasCrypto)
26  common.skip('missing crypto');
27
28const fixtures = require('../common/fixtures');
29
30const assert = require('assert');
31const tls = require('tls');
32
33// https://github.com/joyent/node/issues/1218
34// uncatchable exception on TLS connection error
35{
36  const cert = fixtures.readKey('rsa_cert.crt');
37  const key = fixtures.readKey('rsa_private.pem');
38
39  const options = { cert: cert, key: key, port: common.PORT };
40  const conn = tls.connect(options, common.mustNotCall());
41
42  conn.on(
43    'error',
44    common.mustCall((e) => { assert.strictEqual(e.code, 'ECONNREFUSED'); })
45  );
46}
47
48// SSL_accept/SSL_connect error handling
49{
50  const cert = fixtures.readKey('rsa_cert.crt');
51  const key = fixtures.readKey('rsa_private.pem');
52
53  assert.throws(() => {
54    tls.connect({
55      cert: cert,
56      key: key,
57      port: common.PORT,
58      ciphers: 'rick-128-roll'
59    }, common.mustNotCall());
60  }, /no cipher match/i);
61}
62