summaryrefslogtreecommitdiff
path: root/tests/node_compat/test/parallel/test-dns-resolveany.js
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-10 13:22:13 -0700
committerGitHub <noreply@github.com>2024-02-10 20:22:13 +0000
commitf5e46c9bf2f50d66a953fa133161fc829cecff06 (patch)
tree8faf2f5831c1c7b11d842cd9908d141082c869a5 /tests/node_compat/test/parallel/test-dns-resolveany.js
parentd2477f780630a812bfd65e3987b70c0d309385bb (diff)
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests -> tests, and updates of relative paths for files. This is the first step towards aggregate all of the integration test files under tests/, which will lead to a set of integration tests that can run without the CLI binary being built. While we could leave these tests under `cli`, it would require us to keep a more complex directory structure for the various test runners. In addition, we have a lot of complexity to ignore various test files in the `cli` project itself (cargo publish exclusion rules, autotests = false, etc). And finally, the `tests/` folder will eventually house the `test_ffi`, `test_napi` and other testing code, reducing the size of the root repo directory. For easier review, the extremely large and noisy "move" is in the first commit (with no changes -- just a move), while the remainder of the changes to actual files is in the second commit.
Diffstat (limited to 'tests/node_compat/test/parallel/test-dns-resolveany.js')
-rw-r--r--tests/node_compat/test/parallel/test-dns-resolveany.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/node_compat/test/parallel/test-dns-resolveany.js b/tests/node_compat/test/parallel/test-dns-resolveany.js
new file mode 100644
index 000000000..56d533ad9
--- /dev/null
+++ b/tests/node_compat/test/parallel/test-dns-resolveany.js
@@ -0,0 +1,78 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 16.13.0
+// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
+
+// TODO: enable remaining tests once functionality is implemented.
+
+'use strict';
+const common = require('../common');
+const dnstools = require('../common/dns');
+const dns = require('dns');
+const assert = require('assert');
+const dgram = require('dgram');
+const dnsPromises = dns.promises;
+
+const answers = [
+ { type: 'A', address: '1.2.3.4', /*ttl: 123*/ },
+ { type: 'AAAA', address: '::42', /*ttl: 123*/ },
+ {
+ type: 'CAA',
+ critical: 128,
+ issue: 'platynum.ch'
+ },
+ { type: 'MX', priority: 42, exchange: 'foobar.com', ttl: 124 },
+ { type: 'NS', value: 'foobar.org', ttl: 457 },
+ { type: 'PTR', value: 'baz.org', ttl: 987 },
+ {
+ type: 'SOA',
+ nsname: 'ns1.example.com',
+ hostmaster: 'admin.example.com',
+ serial: 156696742,
+ refresh: 900,
+ retry: 900,
+ expire: 1800,
+ minttl: 60
+ },
+ { type: 'TXT', entries: [ 'v=spf1 ~all', 'xyz\x00foo' ] },
+];
+
+const server = dgram.createSocket('udp4');
+
+server.on('message', common.mustCall((msg, { address, port }) => {
+ const parsed = dnstools.parseDNSPacket(msg);
+ const domain = parsed.questions[0].domain;
+ assert.strictEqual(domain, 'example.org');
+
+ server.send(dnstools.writeDNSPacket({
+ id: parsed.id,
+ questions: parsed.questions,
+ answers: answers.map((answer) => Object.assign({ domain }, answer)),
+ }), port, address);
+}, /*2*/ 30));
+
+server.bind(0, common.mustCall(async () => {
+ const address = server.address();
+ dns.setServers([`127.0.0.1:${address.port}`]);
+
+ validateResults(await dnsPromises.resolveAny('example.org'));
+
+ dns.resolveAny('example.org', common.mustSucceed((res) => {
+ validateResults(res);
+ server.close();
+ }));
+}));
+
+function validateResults(res) {
+ // TTL values are only provided for A and AAAA entries.
+ assert.deepStrictEqual(res.map(maybeRedactTTL), answers.map(maybeRedactTTL));
+}
+
+function maybeRedactTTL(r) {
+ const ret = { ...r };
+ if (!['A', 'AAAA'].includes(r.type))
+ delete ret.ttl;
+ return ret;
+}