Bug 1857386 [wpt PR 42383] - Update wpt metadata, a=testonly
[gecko.git] / netwerk / test / unit / test_dns_by_type_resolve.js
blob26b087f301dacf42dd551adeee3f21ab507eeb2e
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 let h2Port;
9 const { TestUtils } = ChromeUtils.importESModule(
10   "resource://testing-common/TestUtils.sys.mjs"
13 add_setup(async function setup() {
14   h2Port = Services.env.get("MOZHTTP2_PORT");
15   Assert.notEqual(h2Port, null);
16   Assert.notEqual(h2Port, "");
18   trr_test_setup();
19   registerCleanupFunction(() => {
20     trr_clear_prefs();
21   });
23   if (mozinfo.socketprocess_networking) {
24     Services.dns; // Needed to trigger socket process.
25     await TestUtils.waitForCondition(() => Services.io.socketProcessLaunched);
26   }
28   Services.prefs.setIntPref("network.trr.mode", Ci.nsIDNSService.MODE_TRRFIRST);
29 });
31 let test_answer = "bXkgdm9pY2UgaXMgbXkgcGFzc3dvcmQ=";
32 let test_answer_addr = "127.0.0.1";
34 add_task(async function testTXTResolve() {
35   // use the h2 server as DOH provider
36   Services.prefs.setCharPref(
37     "network.trr.uri",
38     "https://foo.example.com:" + h2Port + "/doh"
39   );
41   let { inRecord } = await new TRRDNSListener("_esni.example.com", {
42     type: Ci.nsIDNSService.RESOLVE_TYPE_TXT,
43   });
45   let answer = inRecord
46     .QueryInterface(Ci.nsIDNSTXTRecord)
47     .getRecordsAsOneString();
48   Assert.equal(answer, test_answer, "got correct answer");
49 });
51 // verify TXT record pushed on a A record request
52 add_task(async function testTXTRecordPushPart1() {
53   Services.prefs.setCharPref(
54     "network.trr.uri",
55     "https://foo.example.com:" + h2Port + "/txt-dns-push"
56   );
57   let { inRecord } = await new TRRDNSListener("_esni_push.example.com", {
58     type: Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
59     expectedAnswer: "127.0.0.1",
60   });
62   inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
63   let answer = inRecord.getNextAddrAsString();
64   Assert.equal(answer, test_answer_addr, "got correct answer");
65 });
67 // verify the TXT pushed record
68 add_task(async function testTXTRecordPushPart2() {
69   // At this point the second host name should've been pushed and we can resolve it using
70   // cache only. Set back the URI to a path that fails.
71   Services.prefs.setCharPref(
72     "network.trr.uri",
73     "https://foo.example.com:" + h2Port + "/404"
74   );
75   let { inRecord } = await new TRRDNSListener("_esni_push.example.com", {
76     type: Ci.nsIDNSService.RESOLVE_TYPE_TXT,
77   });
79   let answer = inRecord
80     .QueryInterface(Ci.nsIDNSTXTRecord)
81     .getRecordsAsOneString();
82   Assert.equal(answer, test_answer, "got correct answer");
83 });