itns-sidechain/test/dns-test.js
Nodari Chkuaselidze 45c26845e0
test: disable dns-test until c-ares fix.
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.
2024-05-27 13:56:09 +04:00

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 .'}
);
});
});
});