summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_dns_disable_ipv4.js
blob: 48a97f2399a1d1a5b8905eb839dad4902e6de470 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//
// Tests that calling asyncResolve with the RESOLVE_DISABLE_IPV4 flag doesn't
// return any IPv4 addresses.
//

"use strict";

const gOverride = Cc["@mozilla.org/network/native-dns-override;1"].getService(
  Ci.nsINativeDNSResolverOverride
);

const defaultOriginAttributes = {};

add_task(async function test_none() {
  let [, inRecord] = await new Promise(resolve => {
    let listener = {
      onLookupComplete(inRequest, inRecord, inStatus) {
        resolve([inRequest, inRecord, inStatus]);
      },
      QueryInterface: ChromeUtils.generateQI(["nsIDNSListener"]),
    };

    Services.dns.asyncResolve(
      "example.org",
      Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
      Ci.nsIDNSService.RESOLVE_DISABLE_IPV4,
      null, // resolverInfo
      listener,
      null,
      defaultOriginAttributes
    );
  });

  if (inRecord && inRecord.QueryInterface(Ci.nsIDNSAddrRecord)) {
    while (inRecord.hasMore()) {
      let nextIP = inRecord.getNextAddrAsString();
      ok(nextIP.includes(":"), `${nextIP} should be IPv6`);
    }
  }
});

add_task(async function test_some() {
  Services.dns.clearCache(true);
  gOverride.addIPOverride("example.com", "1.1.1.1");
  gOverride.addIPOverride("example.org", "::1:2:3");
  let [, inRecord] = await new Promise(resolve => {
    let listener = {
      onLookupComplete(inRequest, inRecord, inStatus) {
        resolve([inRequest, inRecord, inStatus]);
      },
      QueryInterface: ChromeUtils.generateQI(["nsIDNSListener"]),
    };

    Services.dns.asyncResolve(
      "example.org",
      Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
      Ci.nsIDNSService.RESOLVE_DISABLE_IPV4,
      null, // resolverInfo
      listener,
      null,
      defaultOriginAttributes
    );
  });

  ok(inRecord.QueryInterface(Ci.nsIDNSAddrRecord));
  equal(inRecord.getNextAddrAsString(), "::1:2:3");
  equal(inRecord.hasMore(), false);
});