|
1 function run_test() { |
|
2 var tld = |
|
3 Cc["@mozilla.org/network/effective-tld-service;1"]. |
|
4 getService(Ci.nsIEffectiveTLDService); |
|
5 |
|
6 var etld; |
|
7 |
|
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."); |
|
17 |
|
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 } |
|
24 |
|
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 } |
|
31 |
|
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 } |
|
38 |
|
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 } |
|
45 |
|
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 } |
|
52 |
|
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 } |
|
59 |
|
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 } |
|
66 |
|
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 } |
|
73 |
|
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 } |
|
80 |
|
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 } |
|
89 |
|
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 } |
|
96 |
|
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); |
|
101 |
|
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"); |
|
107 |
|
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 } |
|
115 |
|
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 } |
|
122 |
|
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 } |
|
129 |
|
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 } |
|
136 |
|
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 } |
|
143 |
|
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 } |