Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / netwerk / test / unit / test_dns_override_for_localhost.js
blobecd708ee53531c2b8f1adb7dec7e3721a1b776ad
1 "use strict";
3 const override = Cc["@mozilla.org/network/native-dns-override;1"].getService(
4 Ci.nsINativeDNSResolverOverride
5 );
6 const defaultOriginAttributes = {};
7 const mainThread = Services.tm.currentThread;
9 class Listener {
10 constructor() {
11 this.promise = new Promise(resolve => {
12 this.resolve = resolve;
13 });
16 onLookupComplete(inRequest, inRecord, inStatus) {
17 this.resolve([inRequest, inRecord, inStatus]);
20 async addresses() {
21 let [, inRecord] = await this.promise;
22 let addresses = [];
23 if (!inRecord) {
24 return addresses; // returns []
26 inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
27 while (inRecord.hasMore()) {
28 addresses.push(inRecord.getNextAddrAsString());
30 return addresses;
33 then() {
34 return this.promise.then.apply(this.promise, arguments);
37 Listener.prototype.QueryInterface = ChromeUtils.generateQI(["nsIDNSListener"]);
39 const DOMAINS = [
40 "localhost",
41 "localhost.",
42 "vhost.localhost",
43 "vhost.localhost.",
45 DOMAINS.forEach(domain => {
46 add_task(async function test_() {
47 let listener1 = new Listener();
48 const overrides = ["1.2.3.4", "5.6.7.8"];
49 overrides.forEach(ip_address => {
50 override.addIPOverride(domain, ip_address);
51 });
53 // Verify that loopback host names are not overridden.
54 Services.dns.asyncResolve(
55 domain,
56 Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
58 null,
59 listener1,
60 mainThread,
61 defaultOriginAttributes
63 Assert.deepEqual(
64 await listener1.addresses(),
65 ["127.0.0.1", "::1"],
66 `${domain} is not overridden`
69 // Verify that if localhost hijacking is enabled, the overrides
70 // registered above are taken into account.
71 Services.prefs.setBoolPref("network.proxy.allow_hijacking_localhost", true);
72 let listener2 = new Listener();
73 Services.dns.asyncResolve(
74 domain,
75 Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
77 null,
78 listener2,
79 mainThread,
80 defaultOriginAttributes
82 Assert.deepEqual(
83 await listener2.addresses(),
84 overrides,
85 `${domain} is overridden`
87 Services.prefs.clearUserPref("network.proxy.allow_hijacking_localhost");
89 Services.dns.clearCache(false);
90 override.clearOverrides();
91 });
92 });