• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const dgram = require('dgram');
5const dns = require('dns');
6
7for (const ctor of [dns.Resolver, dns.promises.Resolver]) {
8  for (const timeout of [null, true, false, '', '2']) {
9    assert.throws(() => new ctor({ timeout }), {
10      code: 'ERR_INVALID_ARG_TYPE',
11      name: 'TypeError',
12    });
13  }
14
15  for (const timeout of [-2, 4.2, 2 ** 31]) {
16    assert.throws(() => new ctor({ timeout }), {
17      code: 'ERR_OUT_OF_RANGE',
18      name: 'RangeError',
19    });
20  }
21
22  for (const timeout of [-1, 0, 1]) new ctor({ timeout });  // OK
23}
24
25for (const timeout of [0, 1, 2]) {
26  const server = dgram.createSocket('udp4');
27  server.bind(0, '127.0.0.1', common.mustCall(() => {
28    const resolver = new dns.Resolver({ timeout });
29    resolver.setServers([`127.0.0.1:${server.address().port}`]);
30    resolver.resolve4('nodejs.org', common.mustCall((err) => {
31      assert.throws(() => { throw err; }, {
32        code: 'ETIMEOUT',
33        name: 'Error',
34      });
35      server.close();
36    }));
37  }));
38}
39
40for (const timeout of [0, 1, 2]) {
41  const server = dgram.createSocket('udp4');
42  server.bind(0, '127.0.0.1', common.mustCall(() => {
43    const resolver = new dns.promises.Resolver({ timeout });
44    resolver.setServers([`127.0.0.1:${server.address().port}`]);
45    resolver.resolve4('nodejs.org').catch(common.mustCall((err) => {
46      assert.throws(() => { throw err; }, {
47        code: 'ETIMEOUT',
48        name: 'Error',
49      });
50      server.close();
51    }));
52  }));
53}
54