summaryrefslogtreecommitdiff
path: root/test/parallel/test-socketaddress.js
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2021-03-25 12:19:30 -0700
committerJames M Snell <jasnell@gmail.com>2021-04-02 06:16:40 -0700
commit0b90d352948393e5f92ceb2ef749c643b1002a68 (patch)
treeaf799b4214eb4d855b6582fadc0f17d2e724ac84 /test/parallel/test-socketaddress.js
parentfb9257f6597f0581592826d236cfc7196afebaca (diff)
downloadnode-new-0b90d352948393e5f92ceb2ef749c643b1002a68.tar.gz
net: add SocketAddress class
Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/37917 Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test/parallel/test-socketaddress.js')
-rw-r--r--test/parallel/test-socketaddress.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/test/parallel/test-socketaddress.js b/test/parallel/test-socketaddress.js
new file mode 100644
index 0000000000..4caf46dd3e
--- /dev/null
+++ b/test/parallel/test-socketaddress.js
@@ -0,0 +1,110 @@
+'use strict';
+
+const common = require('../common');
+const {
+ ok,
+ strictEqual,
+ throws,
+} = require('assert');
+const {
+ SocketAddress,
+} = require('net');
+
+{
+ const sa = new SocketAddress();
+ strictEqual(sa.address, '127.0.0.1');
+ strictEqual(sa.port, 0);
+ strictEqual(sa.family, 'ipv4');
+ strictEqual(sa.flowlabel, 0);
+
+ const mc = new MessageChannel();
+ mc.port1.onmessage = common.mustCall(({ data }) => {
+ ok(SocketAddress.isSocketAddress(data));
+
+ strictEqual(data.address, '127.0.0.1');
+ strictEqual(data.port, 0);
+ strictEqual(data.family, 'ipv4');
+ strictEqual(data.flowlabel, 0);
+
+ mc.port1.close();
+ });
+ mc.port2.postMessage(sa);
+}
+
+{
+ const sa = new SocketAddress({});
+ strictEqual(sa.address, '127.0.0.1');
+ strictEqual(sa.port, 0);
+ strictEqual(sa.family, 'ipv4');
+ strictEqual(sa.flowlabel, 0);
+}
+
+{
+ const sa = new SocketAddress({
+ address: '123.123.123.123',
+ });
+ strictEqual(sa.address, '123.123.123.123');
+ strictEqual(sa.port, 0);
+ strictEqual(sa.family, 'ipv4');
+ strictEqual(sa.flowlabel, 0);
+}
+
+{
+ const sa = new SocketAddress({
+ address: '123.123.123.123',
+ port: 80
+ });
+ strictEqual(sa.address, '123.123.123.123');
+ strictEqual(sa.port, 80);
+ strictEqual(sa.family, 'ipv4');
+ strictEqual(sa.flowlabel, 0);
+}
+
+{
+ const sa = new SocketAddress({
+ family: 'ipv6'
+ });
+ strictEqual(sa.address, '::');
+ strictEqual(sa.port, 0);
+ strictEqual(sa.family, 'ipv6');
+ strictEqual(sa.flowlabel, 0);
+}
+
+{
+ const sa = new SocketAddress({
+ family: 'ipv6',
+ flowlabel: 1,
+ });
+ strictEqual(sa.address, '::');
+ strictEqual(sa.port, 0);
+ strictEqual(sa.family, 'ipv6');
+ strictEqual(sa.flowlabel, 1);
+}
+
+[1, false, 'hello'].forEach((i) => {
+ throws(() => new SocketAddress(i), {
+ code: 'ERR_INVALID_ARG_TYPE'
+ });
+});
+
+[1, false, {}, [], 'test'].forEach((family) => {
+ throws(() => new SocketAddress({ family }), {
+ code: 'ERR_INVALID_ARG_VALUE'
+ });
+});
+
+[1, false, {}, []].forEach((address) => {
+ throws(() => new SocketAddress({ address }), {
+ code: 'ERR_INVALID_ARG_TYPE'
+ });
+});
+
+[-1, false, {}, []].forEach((port) => {
+ throws(() => new SocketAddress({ port }), {
+ code: 'ERR_SOCKET_BAD_PORT'
+ });
+});
+
+throws(() => new SocketAddress({ flowlabel: -1 }), {
+ code: 'ERR_OUT_OF_RANGE'
+});