Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / netwerk / test / unit / test_trr_domain.js
blobb8b6c460eb24ba6f6e639550dfed5db36ac93e23
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 "use strict";
7 // This test simmulates intermittent native DNS functionality.
8 // We verify that we don't use the negative DNS record for the DoH server.
9 // The first resolve of foo.example.com fails, so we expect TRR not to work.
10 // Immediately after the native DNS starts working, it should connect to the
11 // TRR server and start working.
13 const override = Cc["@mozilla.org/network/native-dns-override;1"].getService(
14 Ci.nsINativeDNSResolverOverride
17 function setup() {
18 trr_test_setup();
19 Services.prefs.clearUserPref("network.trr.bootstrapAddr");
20 Services.prefs.clearUserPref("network.dns.native-is-localhost");
22 setup();
24 registerCleanupFunction(async () => {
25 trr_clear_prefs();
26 override.clearOverrides();
27 });
29 add_task(async function intermittent_dns_mode3() {
30 override.addIPOverride("foo.example.com", "N/A");
31 let trrServer = new TRRServer();
32 registerCleanupFunction(async () => {
33 await trrServer.stop();
34 });
35 await trrServer.start();
36 info(`port = ${trrServer.port()}\n`);
37 Services.dns.clearCache(true);
38 Services.prefs.setCharPref(
39 "network.trr.uri",
40 `https://foo.example.com:${trrServer.port()}/dns-query`
42 Services.prefs.setIntPref("network.trr.mode", Ci.nsIDNSService.MODE_TRRONLY);
43 await trrServer.registerDoHAnswers("example.com", "A", {
44 answers: [
46 name: "example.com",
47 ttl: 55,
48 type: "A",
49 flush: false,
50 data: "1.2.3.4",
53 });
54 let { inStatus } = await new TRRDNSListener("example.com", {
55 expectedSuccess: false,
56 });
57 equal(inStatus, Cr.NS_ERROR_UNKNOWN_HOST);
58 await trrServer.registerDoHAnswers("example.org", "A", {
59 answers: [
61 name: "example.org",
62 ttl: 55,
63 type: "A",
64 flush: false,
65 data: "1.2.3.4",
68 });
69 override.addIPOverride("foo.example.com", "127.0.0.1");
70 await new TRRDNSListener("example.org", { expectedAnswer: "1.2.3.4" });
71 await trrServer.stop();
72 });
74 add_task(async function intermittent_dns_mode2() {
75 override.addIPOverride("foo.example.com", "N/A");
76 let trrServer = new TRRServer();
77 registerCleanupFunction(async () => {
78 await trrServer.stop();
79 });
80 await trrServer.start();
81 info(`port = ${trrServer.port()}\n`);
83 Services.dns.clearCache(true);
84 Services.prefs.setIntPref(
85 "network.trr.mode",
86 Ci.nsIDNSService.MODE_NATIVEONLY
88 Services.prefs.setCharPref(
89 "network.trr.uri",
90 `https://foo.example.com:${trrServer.port()}/dns-query`
92 Services.prefs.setIntPref("network.trr.mode", Ci.nsIDNSService.MODE_TRRFIRST);
93 await trrServer.registerDoHAnswers("example.com", "A", {
94 answers: [
96 name: "example.com",
97 ttl: 55,
98 type: "A",
99 flush: false,
100 data: "1.1.1.1",
104 override.addIPOverride("example.com", "2.2.2.2");
105 await new TRRDNSListener("example.com", {
106 expectedAnswer: "2.2.2.2",
108 await trrServer.registerDoHAnswers("example.org", "A", {
109 answers: [
111 name: "example.org",
112 ttl: 55,
113 type: "A",
114 flush: false,
115 data: "1.2.3.4",
119 override.addIPOverride("example.org", "3.3.3.3");
120 override.addIPOverride("foo.example.com", "127.0.0.1");
121 await new TRRDNSListener("example.org", { expectedAnswer: "1.2.3.4" });
122 await trrServer.stop();