Wed, 31 Dec 2014 13:27:57 +0100
Ignore runtime configuration files generated during quality assurance.
1 function run_test() {
2 var tld =
3 Cc["@mozilla.org/network/effective-tld-service;1"].
4 getService(Ci.nsIEffectiveTLDService);
6 var etld;
8 do_check_eq(tld.getPublicSuffixFromHost("localhost"), "localhost");
9 do_check_eq(tld.getPublicSuffixFromHost("localhost."), "localhost.");
10 do_check_eq(tld.getPublicSuffixFromHost("domain.com"), "com");
11 do_check_eq(tld.getPublicSuffixFromHost("domain.com."), "com.");
12 do_check_eq(tld.getPublicSuffixFromHost("domain.co.uk"), "co.uk");
13 do_check_eq(tld.getPublicSuffixFromHost("domain.co.uk."), "co.uk.");
14 do_check_eq(tld.getPublicSuffixFromHost("co.uk"), "co.uk");
15 do_check_eq(tld.getBaseDomainFromHost("domain.co.uk"), "domain.co.uk");
16 do_check_eq(tld.getBaseDomainFromHost("domain.co.uk."), "domain.co.uk.");
18 try {
19 etld = tld.getPublicSuffixFromHost("");
20 do_throw("this should fail");
21 } catch(e) {
22 do_check_eq(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
23 }
25 try {
26 etld = tld.getBaseDomainFromHost("domain.co.uk", 1);
27 do_throw("this should fail");
28 } catch(e) {
29 do_check_eq(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
30 }
32 try {
33 etld = tld.getBaseDomainFromHost("co.uk");
34 do_throw("this should fail");
35 } catch(e) {
36 do_check_eq(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
37 }
39 try {
40 etld = tld.getBaseDomainFromHost("");
41 do_throw("this should fail");
42 } catch(e) {
43 do_check_eq(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
44 }
46 try {
47 etld = tld.getPublicSuffixFromHost("1.2.3.4");
48 do_throw("this should fail");
49 } catch(e) {
50 do_check_eq(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
51 }
53 try {
54 etld = tld.getPublicSuffixFromHost("2010:836B:4179::836B:4179");
55 do_throw("this should fail");
56 } catch(e) {
57 do_check_eq(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
58 }
60 try {
61 etld = tld.getPublicSuffixFromHost("3232235878");
62 do_throw("this should fail");
63 } catch(e) {
64 do_check_eq(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
65 }
67 try {
68 etld = tld.getPublicSuffixFromHost("::ffff:192.9.5.5");
69 do_throw("this should fail");
70 } catch(e) {
71 do_check_eq(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
72 }
74 try {
75 etld = tld.getPublicSuffixFromHost("::1");
76 do_throw("this should fail");
77 } catch(e) {
78 do_check_eq(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
79 }
81 // Check IP addresses with trailing dot as well, Necko sometimes accepts
82 // those (depending on operating system, see bug 380543)
83 try {
84 etld = tld.getPublicSuffixFromHost("127.0.0.1.");
85 do_throw("this should fail");
86 } catch(e) {
87 do_check_eq(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
88 }
90 try {
91 etld = tld.getPublicSuffixFromHost("::ffff:127.0.0.1.");
92 do_throw("this should fail");
93 } catch(e) {
94 do_check_eq(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
95 }
97 // check normalization: output should be consistent with
98 // nsIURI::GetAsciiHost(), i.e. lowercased and ASCII/ACE encoded
99 var ioService = Components.classes["@mozilla.org/network/io-service;1"]
100 .getService(Components.interfaces.nsIIOService);
102 var uri = ioService.newURI("http://b\u00FCcher.co.uk", null, null);
103 do_check_eq(tld.getBaseDomain(uri), "xn--bcher-kva.co.uk");
104 do_check_eq(tld.getBaseDomainFromHost("b\u00FCcher.co.uk"), "xn--bcher-kva.co.uk");
105 do_check_eq(tld.getPublicSuffix(uri), "co.uk");
106 do_check_eq(tld.getPublicSuffixFromHost("b\u00FCcher.co.uk"), "co.uk");
108 // check that malformed hosts are rejected as invalid args
109 try {
110 etld = tld.getBaseDomainFromHost("domain.co.uk..");
111 do_throw("this should fail");
112 } catch(e) {
113 do_check_eq(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
114 }
116 try {
117 etld = tld.getBaseDomainFromHost("domain.co..uk");
118 do_throw("this should fail");
119 } catch(e) {
120 do_check_eq(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
121 }
123 try {
124 etld = tld.getBaseDomainFromHost(".domain.co.uk");
125 do_throw("this should fail");
126 } catch(e) {
127 do_check_eq(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
128 }
130 try {
131 etld = tld.getBaseDomainFromHost(".domain.co.uk");
132 do_throw("this should fail");
133 } catch(e) {
134 do_check_eq(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
135 }
137 try {
138 etld = tld.getBaseDomainFromHost(".");
139 do_throw("this should fail");
140 } catch(e) {
141 do_check_eq(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
142 }
144 try {
145 etld = tld.getBaseDomainFromHost("..");
146 do_throw("this should fail");
147 } catch(e) {
148 do_check_eq(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
149 }
150 }