Bug 1845311 - [Part 2] Use ChromeUtils.defineLazyGetter in more places r=arai,webcomp...
[gecko.git] / netwerk / test / unit / test_bug412457.js
blob30fd2ed3fc8db470a9fb961919808f8f3a96b2d2
1 "use strict";
3 function run_test() {
4   // check if hostname is unescaped before applying IDNA
5   var newURI = Services.io.newURI("http://\u5341%2ecom/");
6   Assert.equal(newURI.asciiHost, "xn--kkr.com");
8   // escaped UTF8
9   newURI = newURI.mutate().setSpec("http://%e5%8d%81.com").finalize();
10   Assert.equal(newURI.asciiHost, "xn--kkr.com");
12   // There should be only allowed characters in hostname after
13   // unescaping and attempting to apply IDNA. "\x80" is illegal in
14   // UTF-8, so IDNA fails, and 0x80 is illegal in DNS too.
15   Assert.throws(
16     () => {
17       newURI = newURI.mutate().setSpec("http://%80.com").finalize();
18     },
19     /NS_ERROR_MALFORMED_URI/,
20     "illegal UTF character"
21   );
23   // test parsing URL with all possible host terminators
24   newURI = newURI.mutate().setSpec("http://example.com?foo").finalize();
25   Assert.equal(newURI.asciiHost, "example.com");
27   newURI = newURI.mutate().setSpec("http://example.com#foo").finalize();
28   Assert.equal(newURI.asciiHost, "example.com");
30   newURI = newURI.mutate().setSpec("http://example.com:80").finalize();
31   Assert.equal(newURI.asciiHost, "example.com");
33   newURI = newURI.mutate().setSpec("http://example.com/foo").finalize();
34   Assert.equal(newURI.asciiHost, "example.com");
36   // Characters that are invalid in the host
37   Assert.throws(
38     () => {
39       newURI = newURI.mutate().setSpec("http://example.com%3ffoo").finalize();
40     },
41     /NS_ERROR_MALFORMED_URI/,
42     "bad escaped character"
43   );
44   Assert.throws(
45     () => {
46       newURI = newURI.mutate().setSpec("http://example.com%23foo").finalize();
47     },
48     /NS_ERROR_MALFORMED_URI/,
49     "bad escaped character"
50   );
51   Assert.throws(
52     () => {
53       newURI = newURI.mutate().setSpec("http://example.com%3bfoo").finalize();
54     },
55     /NS_ERROR_MALFORMED_URI/,
56     "bad escaped character"
57   );
58   Assert.throws(
59     () => {
60       newURI = newURI.mutate().setSpec("http://example.com%3a80").finalize();
61     },
62     /NS_ERROR_MALFORMED_URI/,
63     "bad escaped character"
64   );
65   Assert.throws(
66     () => {
67       newURI = newURI.mutate().setSpec("http://example.com%2ffoo").finalize();
68     },
69     /NS_ERROR_MALFORMED_URI/,
70     "bad escaped character"
71   );
72   Assert.throws(
73     () => {
74       newURI = newURI.mutate().setSpec("http://example.com%00").finalize();
75     },
76     /NS_ERROR_MALFORMED_URI/,
77     "bad escaped character"
78   );