mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 23:34:47 -05:00
f5e46c9bf2
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.
78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
// 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;
|
|
}
|