test: increase coverage for dns.promises.lookup()
Add coverage for uv_getaddrinfo() returning an error. PR-URL: https://github.com/nodejs/node/pull/27299 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
0fc27f6bc0
commit
7167eb2f12
@ -4,12 +4,14 @@ const common = require('../common');
|
|||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { internalBinding } = require('internal/test/binding');
|
const { internalBinding } = require('internal/test/binding');
|
||||||
const cares = internalBinding('cares_wrap');
|
const cares = internalBinding('cares_wrap');
|
||||||
|
|
||||||
|
// Stub `getaddrinfo` to *always* error. This has to be done before we load the
|
||||||
|
// `dns` module to guarantee that the `dns` module uses the stub.
|
||||||
|
cares.getaddrinfo = () => internalBinding('uv').UV_ENOMEM;
|
||||||
|
|
||||||
const dns = require('dns');
|
const dns = require('dns');
|
||||||
const dnsPromises = dns.promises;
|
const dnsPromises = dns.promises;
|
||||||
|
|
||||||
// Stub `getaddrinfo` to *always* error.
|
|
||||||
cares.getaddrinfo = () => internalBinding('uv').UV_ENOENT;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
const err = {
|
const err = {
|
||||||
code: 'ERR_INVALID_ARG_TYPE',
|
code: 'ERR_INVALID_ARG_TYPE',
|
||||||
@ -144,15 +146,19 @@ dns.lookup('127.0.0.1', {
|
|||||||
|
|
||||||
let tickValue = 0;
|
let tickValue = 0;
|
||||||
|
|
||||||
|
// Should fail due to stub.
|
||||||
dns.lookup('example.com', common.mustCall((error, result, addressType) => {
|
dns.lookup('example.com', common.mustCall((error, result, addressType) => {
|
||||||
assert(error);
|
assert(error);
|
||||||
assert.strictEqual(tickValue, 1);
|
assert.strictEqual(tickValue, 1);
|
||||||
assert.strictEqual(error.code, 'ENOENT');
|
assert.strictEqual(error.code, 'ENOMEM');
|
||||||
const descriptor = Object.getOwnPropertyDescriptor(error, 'message');
|
const descriptor = Object.getOwnPropertyDescriptor(error, 'message');
|
||||||
// The error message should be non-enumerable.
|
// The error message should be non-enumerable.
|
||||||
assert.strictEqual(descriptor.enumerable, false);
|
assert.strictEqual(descriptor.enumerable, false);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Make sure that the error callback is called
|
// Make sure that the error callback is called on next tick.
|
||||||
// on next tick.
|
|
||||||
tickValue = 1;
|
tickValue = 1;
|
||||||
|
|
||||||
|
// Should fail due to stub.
|
||||||
|
assert.rejects(dnsPromises.lookup('example.com'),
|
||||||
|
{ code: 'ENOMEM', hostname: 'example.com' });
|
||||||
|
Loading…
x
Reference in New Issue
Block a user