c-ares rewrote their DNS record parsing code and since c-ares 1.21 does not allow ANY records (https://github.com/c-ares/c-ares/pull/765). Node.js v18 since v18.20, Node.js v20 since v20.12 and Node.js v22 are all using newer version c-ares, which breaks this code. After this issue is resolved in c-ares and node.js has upgraded c-ares we can enable this test case again.
127 lines
3.3 KiB
JavaScript
127 lines
3.3 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('bsert');
|
|
const Network = require('../lib/protocol/network');
|
|
const FullNode = require('../lib/node/fullnode');
|
|
const SPVNode = require('../lib/node/spvnode');
|
|
const network = Network.get('regtest');
|
|
|
|
const {Resolver} = require('dns').promises;
|
|
|
|
const rootResolver = new Resolver({timeout: 1000});
|
|
const recursiveResolver = new Resolver({timeout: 1000});
|
|
rootResolver.setServers([`127.0.0.1:${network.nsPort}`]);
|
|
recursiveResolver.setServers([`127.0.0.1:${network.rsPort}`]);
|
|
|
|
// TODO: Enable once node.js supports ANY + SIG(0) queries (c-ares issue)
|
|
describe.skip('Server Configuration', function() {
|
|
describe('Full Node', function() {
|
|
let node;
|
|
|
|
afterEach(async () => {
|
|
await node.close();
|
|
});
|
|
|
|
it('should open full node with both DNS servers', async () => {
|
|
node = new FullNode({
|
|
memory: true,
|
|
network: network.type
|
|
});
|
|
|
|
await node.open();
|
|
const res1 = await rootResolver.resolveSoa('.');
|
|
assert(res1);
|
|
const res2 = await recursiveResolver.resolveSoa('.');
|
|
assert(res2);
|
|
});
|
|
|
|
it('should open full node with neither DNS server', async () => {
|
|
node = new FullNode({
|
|
memory: true,
|
|
network: network.type,
|
|
noDns: true
|
|
});
|
|
|
|
await node.open();
|
|
await assert.rejects(
|
|
rootResolver.resolveSoa('.'),
|
|
{message: 'querySoa ECONNREFUSED .'}
|
|
);
|
|
await assert.rejects(
|
|
recursiveResolver.resolveSoa('.'),
|
|
{message: 'querySoa ECONNREFUSED .'}
|
|
);
|
|
});
|
|
|
|
it('should open full node only with root name server', async () => {
|
|
node = new FullNode({
|
|
memory: true,
|
|
network: network.type,
|
|
noRs: true
|
|
});
|
|
|
|
await node.open();
|
|
const res1 = await rootResolver.resolveSoa('.');
|
|
assert(res1);
|
|
await assert.rejects(
|
|
recursiveResolver.resolveSoa('.'),
|
|
{message: 'querySoa ECONNREFUSED .'}
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('SPV Node', function() {
|
|
let node;
|
|
|
|
afterEach(async () => {
|
|
await node.close();
|
|
});
|
|
|
|
it('should open SPV node with both DNS servers', async () => {
|
|
node = new SPVNode({
|
|
memory: true,
|
|
network: network.type
|
|
});
|
|
|
|
await node.open();
|
|
const res1 = await rootResolver.resolveSoa('.');
|
|
assert(res1);
|
|
const res2 = await recursiveResolver.resolveSoa('.');
|
|
assert(res2);
|
|
});
|
|
|
|
it('should open SPV node with neither DNS server', async () => {
|
|
node = new SPVNode({
|
|
memory: true,
|
|
network: network.type,
|
|
noDns: true
|
|
});
|
|
|
|
await node.open();
|
|
await assert.rejects(
|
|
rootResolver.resolveSoa('.'),
|
|
{message: 'querySoa ECONNREFUSED .'}
|
|
);
|
|
await assert.rejects(
|
|
recursiveResolver.resolveSoa('.'),
|
|
{message: 'querySoa ECONNREFUSED .'}
|
|
);
|
|
});
|
|
|
|
it('should open SPV node only with root name server', async () => {
|
|
node = new SPVNode({
|
|
memory: true,
|
|
network: network.type,
|
|
noRs: true
|
|
});
|
|
|
|
await node.open();
|
|
const res1 = await rootResolver.resolveSoa('.');
|
|
assert(res1);
|
|
await assert.rejects(
|
|
recursiveResolver.resolveSoa('.'),
|
|
{message: 'querySoa ECONNREFUSED .'}
|
|
);
|
|
});
|
|
});
|
|
});
|