From 05ce5b38c6f7eb53c3ccd2e0f522f1a838c35194 Mon Sep 17 00:00:00 2001 From: SandObserver <260779319+SandObserver@users.noreply.github.com> Date: Sun, 18 Oct 2026 16:35:45 -0400 Subject: [PATCH] Fake c-ares lookups in the ping rewrite test The test faked dns.lookup only. Host names now resolve through dns.promises.Resolver and dns.promises.lookup, so the test queried the real DNS server and failed when it answered slowly. --- api/test/proxy-ping-rewrite.test.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/api/test/proxy-ping-rewrite.test.js b/api/test/proxy-ping-rewrite.test.js index cc7bcec5..f4bc97f1 100644 --- a/api/test/proxy-ping-rewrite.test.js +++ b/api/test/proxy-ping-rewrite.test.js @@ -45,12 +45,17 @@ async function targetOf(fn) { const MAPPED = 'http://127.0.0.1:8096/'; const MS = 4000; -const realLookup = dns.lookup; -dns.lookup = (host, opts, cb) => { - const done = typeof opts === 'function' ? opts : cb; - if (host !== 'stackyard-test-nx-host') return realLookup(host, opts, cb); - process.nextTick(() => done(Object.assign(new Error(`getaddrinfo ENOTFOUND ${host}`), { code: 'ENOTFOUND' }))); -}; +const NX = 'stackyard-test-nx-host'; +const notFound = code => Object.assign(new Error(`${code} ${NX}`), { code, hostname: NX }); +for (const name of ['resolve4', 'resolve6']) { + const real = dns.promises.Resolver.prototype[name]; + dns.promises.Resolver.prototype[name] = function (host, ...rest) { + return host === NX ? Promise.reject(notFound(dns.NOTFOUND)) : real.call(this, host, ...rest); + }; +} +const realLookup = dns.promises.lookup; +dns.promises.lookup = (host, ...rest) => + host === NX ? Promise.reject(notFound('ENOTFOUND')) : realLookup(host, ...rest); let closedPort; before(async () => {