• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2// Flags: --expose-internals
3const common = require('../common');
4const assert = require('assert');
5const net = require('net');
6const { normalizedArgsSymbol } = require('internal/net');
7
8function validateNormalizedArgs(input, output) {
9  const args = net._normalizeArgs(input);
10
11  assert.deepStrictEqual(args, output);
12  assert.strictEqual(args[normalizedArgsSymbol], true);
13}
14
15// Test creation of normalized arguments.
16const res = [{}, null];
17res[normalizedArgsSymbol] = true;
18validateNormalizedArgs([], res);
19res[0].port = 1234;
20validateNormalizedArgs([{ port: 1234 }], res);
21res[1] = assert.fail;
22validateNormalizedArgs([{ port: 1234 }, assert.fail], res);
23
24// Connecting to the server should fail with a standard array.
25{
26  const server = net.createServer(common.mustNotCall('should not connect'));
27
28  server.listen(common.mustCall(() => {
29    const possibleErrors = ['ECONNREFUSED', 'EADDRNOTAVAIL'];
30    const port = server.address().port;
31    const socket = new net.Socket();
32
33    socket.on('error', common.mustCall((err) => {
34      assert(possibleErrors.includes(err.code));
35      assert(possibleErrors.includes(err.errno));
36      assert.strictEqual(err.syscall, 'connect');
37      server.close();
38    }));
39
40    socket.connect([{ port }, assert.fail]);
41  }));
42}
43
44// Connecting to the server should succeed with a normalized array.
45{
46  const server = net.createServer(common.mustCall((connection) => {
47    connection.end();
48    server.close();
49  }));
50
51  server.listen(common.mustCall(() => {
52    const port = server.address().port;
53    const socket = new net.Socket();
54    const args = net._normalizeArgs([{ port }, common.mustCall()]);
55
56    socket.connect(args);
57  }));
58}
59