OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "googleurl/src/gurl.h" | |
6 #include "net/base/registry_controlled_domain.h" | |
7 #include "testing/gtest/include/gtest/gtest.h" | |
8 | |
9 #include "effective_tld_names_unittest1.cc" | |
10 #undef TOTAL_KEYWORDS | |
11 #undef MIN_WORD_LENGTH | |
12 #undef MAX_WORD_LENGTH | |
13 #undef MIN_HASH_VALUE | |
14 #undef MAX_HASH_VALUE | |
15 #include "effective_tld_names_unittest2.cc" | |
16 | |
17 namespace net { | |
18 namespace { | |
19 | |
20 std::string GetDomainFromURL(const std::string& url) { | |
21 return RegistryControlledDomainService::GetDomainAndRegistry(GURL(url)); | |
22 } | |
23 | |
24 std::string GetDomainFromHost(const std::string& host) { | |
25 return RegistryControlledDomainService::GetDomainAndRegistry(host); | |
26 } | |
27 | |
28 size_t GetRegistryLengthFromURL(const std::string& url, | |
29 bool allow_unknown_registries) { | |
30 return RegistryControlledDomainService::GetRegistryLength(GURL(url), | |
31 allow_unknown_registries); | |
32 } | |
33 | |
34 size_t GetRegistryLengthFromHost(const std::string& host, | |
35 bool allow_unknown_registries) { | |
36 return RegistryControlledDomainService::GetRegistryLength(host, | |
37 allow_unknown_registries); | |
38 } | |
39 | |
40 bool CompareDomains(const std::string& url1, const std::string& url2) { | |
41 GURL g1 = GURL(url1); | |
42 GURL g2 = GURL(url2); | |
43 return RegistryControlledDomainService::SameDomainOrHost(g1, g2); | |
44 } | |
45 | |
46 } // namespace | |
47 | |
48 class RegistryControlledDomainTest : public testing::Test { | |
49 protected: | |
50 typedef RegistryControlledDomainService::FindDomainPtr FindDomainPtr; | |
51 void UseDomainData(FindDomainPtr function) { | |
52 RegistryControlledDomainService::UseFindDomainFunction(function); | |
53 } | |
54 | |
55 virtual void TearDown() { | |
56 RegistryControlledDomainService::UseFindDomainFunction(NULL); | |
57 } | |
58 }; | |
59 | |
60 TEST_F(RegistryControlledDomainTest, TestGetDomainAndRegistry) { | |
61 UseDomainData(Perfect_Hash_Test1::FindDomain); | |
62 | |
63 // Test GURL version of GetDomainAndRegistry(). | |
64 EXPECT_EQ("baz.jp", GetDomainFromURL("http://a.baz.jp/file.html")); // 1 | |
65 EXPECT_EQ("baz.jp.", GetDomainFromURL("http://a.baz.jp./file.html")); // 1 | |
66 EXPECT_EQ("", GetDomainFromURL("http://ac.jp")); // 2 | |
67 EXPECT_EQ("", GetDomainFromURL("http://a.bar.jp")); // 3 | |
68 EXPECT_EQ("", GetDomainFromURL("http://bar.jp")); // 3 | |
69 EXPECT_EQ("", GetDomainFromURL("http://baz.bar.jp")); // 3 4 | |
70 EXPECT_EQ("a.b.baz.bar.jp", GetDomainFromURL("http://a.b.baz.bar.jp")); | |
71 // 4 | |
72 EXPECT_EQ("pref.bar.jp", GetDomainFromURL("http://baz.pref.bar.jp")); // 5 | |
73 EXPECT_EQ("b.bar.baz.com.", GetDomainFromURL("http://a.b.bar.baz.com.")); | |
74 // 6 | |
75 EXPECT_EQ("a.d.c", GetDomainFromURL("http://a.d.c")); // 7 | |
76 EXPECT_EQ("a.d.c", GetDomainFromURL("http://.a.d.c")); // 7 | |
77 EXPECT_EQ("a.d.c", GetDomainFromURL("http://..a.d.c")); // 7 | |
78 EXPECT_EQ("b.c", GetDomainFromURL("http://a.b.c")); // 7 8 | |
79 EXPECT_EQ("baz.com", GetDomainFromURL("http://baz.com")); // none | |
80 EXPECT_EQ("baz.com.", GetDomainFromURL("http://baz.com.")); // none | |
81 | |
82 EXPECT_EQ("", GetDomainFromURL("")); | |
83 EXPECT_EQ("", GetDomainFromURL("http://")); | |
84 EXPECT_EQ("", GetDomainFromURL("file:///C:/file.html")); | |
85 EXPECT_EQ("", GetDomainFromURL("http://foo.com..")); | |
86 EXPECT_EQ("", GetDomainFromURL("http://...")); | |
87 EXPECT_EQ("", GetDomainFromURL("http://192.168.0.1")); | |
88 EXPECT_EQ("", GetDomainFromURL("http://localhost")); | |
89 EXPECT_EQ("", GetDomainFromURL("http://localhost.")); | |
90 EXPECT_EQ("", GetDomainFromURL("http:////Comment")); | |
91 | |
92 // Test std::string version of GetDomainAndRegistry(). Uses the same | |
93 // underpinnings as the GURL version, so this is really more of a check of | |
94 // CanonicalizeHost(). | |
95 EXPECT_EQ("baz.jp", GetDomainFromHost("a.baz.jp")); // 1 | |
96 EXPECT_EQ("baz.jp.", GetDomainFromHost("a.baz.jp.")); // 1 | |
97 EXPECT_EQ("", GetDomainFromHost("ac.jp")); // 2 | |
98 EXPECT_EQ("", GetDomainFromHost("a.bar.jp")); // 3 | |
99 EXPECT_EQ("", GetDomainFromHost("bar.jp")); // 3 | |
100 EXPECT_EQ("", GetDomainFromHost("baz.bar.jp")); // 3 4 | |
101 EXPECT_EQ("a.b.baz.bar.jp", GetDomainFromHost("a.b.baz.bar.jp")); // 3 4 | |
102 EXPECT_EQ("pref.bar.jp", GetDomainFromHost("baz.pref.bar.jp")); // 5 | |
103 EXPECT_EQ("b.bar.baz.com.", GetDomainFromHost("a.b.bar.baz.com.")); // 6 | |
104 EXPECT_EQ("a.d.c", GetDomainFromHost("a.d.c")); // 7 | |
105 EXPECT_EQ("a.d.c", GetDomainFromHost(".a.d.c")); // 7 | |
106 EXPECT_EQ("a.d.c", GetDomainFromHost("..a.d.c")); // 7 | |
107 EXPECT_EQ("b.c", GetDomainFromHost("a.b.c")); // 7 8 | |
108 EXPECT_EQ("baz.com", GetDomainFromHost("baz.com")); // none | |
109 EXPECT_EQ("baz.com.", GetDomainFromHost("baz.com.")); // none | |
110 | |
111 EXPECT_EQ("", GetDomainFromHost("")); | |
112 EXPECT_EQ("", GetDomainFromHost("foo.com..")); | |
113 EXPECT_EQ("", GetDomainFromHost("...")); | |
114 EXPECT_EQ("", GetDomainFromHost("192.168.0.1")); | |
115 EXPECT_EQ("", GetDomainFromHost("localhost.")); | |
116 EXPECT_EQ("", GetDomainFromHost(".localhost.")); | |
117 } | |
118 | |
119 TEST_F(RegistryControlledDomainTest, TestGetRegistryLength) { | |
120 UseDomainData(Perfect_Hash_Test1::FindDomain); | |
121 | |
122 // Test GURL version of GetRegistryLength(). | |
123 EXPECT_EQ(2U, GetRegistryLengthFromURL("http://a.baz.jp/file.html", false)); | |
124 // 1 | |
125 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.baz.jp./file.html", false)); | |
126 // 1 | |
127 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://ac.jp", false)); // 2 | |
128 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://a.bar.jp", false)); // 3 | |
129 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://bar.jp", false)); // 3 | |
130 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.bar.jp", false)); // 3 4 | |
131 EXPECT_EQ(12U, GetRegistryLengthFromURL("http://a.b.baz.bar.jp", false)); | |
132 // 4 | |
133 EXPECT_EQ(6U, GetRegistryLengthFromURL("http://baz.pref.bar.jp", false)); | |
134 // 5 | |
135 EXPECT_EQ(11U, GetRegistryLengthFromURL("http://a.b.bar.baz.com", false)); | |
136 // 6 | |
137 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.d.c", false)); // 7 | |
138 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://.a.d.c", false)); // 7 | |
139 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://..a.d.c", false)); // 7 | |
140 EXPECT_EQ(1U, GetRegistryLengthFromURL("http://a.b.c", false)); // 7 8 | |
141 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com", false)); // none | |
142 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com.", false)); // none | |
143 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://baz.com", true)); // none | |
144 EXPECT_EQ(4U, GetRegistryLengthFromURL("http://baz.com.", true)); // none | |
145 | |
146 EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL("", false)); | |
147 EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL("http://", false)); | |
148 EXPECT_EQ(std::string::npos, | |
149 GetRegistryLengthFromURL("file:///C:/file.html", false)); | |
150 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://foo.com..", false)); | |
151 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://...", false)); | |
152 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://192.168.0.1", false)); | |
153 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", false)); | |
154 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", true)); | |
155 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", false)); | |
156 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", true)); | |
157 EXPECT_EQ(0U, GetRegistryLengthFromURL("http:////Comment", false)); | |
158 | |
159 // Test std::string version of GetRegistryLength(). Uses the same | |
160 // underpinnings as the GURL version, so this is really more of a check of | |
161 // CanonicalizeHost(). | |
162 EXPECT_EQ(2U, GetRegistryLengthFromHost("a.baz.jp", false)); // 1 | |
163 EXPECT_EQ(3U, GetRegistryLengthFromHost("a.baz.jp.", false)); // 1 | |
164 EXPECT_EQ(0U, GetRegistryLengthFromHost("ac.jp", false)); // 2 | |
165 EXPECT_EQ(0U, GetRegistryLengthFromHost("a.bar.jp", false)); // 3 | |
166 EXPECT_EQ(0U, GetRegistryLengthFromHost("bar.jp", false)); // 3 | |
167 EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.bar.jp", false)); // 3 4 | |
168 EXPECT_EQ(12U, GetRegistryLengthFromHost("a.b.baz.bar.jp", false)); // 4 | |
169 EXPECT_EQ(6U, GetRegistryLengthFromHost("baz.pref.bar.jp", false)); // 5 | |
170 EXPECT_EQ(11U, GetRegistryLengthFromHost("a.b.bar.baz.com", false)); // 6 | |
171 EXPECT_EQ(3U, GetRegistryLengthFromHost("a.d.c", false)); // 7 | |
172 EXPECT_EQ(3U, GetRegistryLengthFromHost(".a.d.c", false)); // 7 | |
173 EXPECT_EQ(3U, GetRegistryLengthFromHost("..a.d.c", false)); // 7 | |
174 EXPECT_EQ(1U, GetRegistryLengthFromHost("a.b.c", false)); // 7 8 | |
175 EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com", false)); // none | |
176 EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com.", false)); // none | |
177 EXPECT_EQ(3U, GetRegistryLengthFromHost("baz.com", true)); // none | |
178 EXPECT_EQ(4U, GetRegistryLengthFromHost("baz.com.", true)); // none | |
179 | |
180 EXPECT_EQ(std::string::npos, GetRegistryLengthFromHost("", false)); | |
181 EXPECT_EQ(0U, GetRegistryLengthFromHost("foo.com..", false)); | |
182 EXPECT_EQ(0U, GetRegistryLengthFromHost("..", false)); | |
183 EXPECT_EQ(0U, GetRegistryLengthFromHost("192.168.0.1", false)); | |
184 EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost", false)); | |
185 EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost", true)); | |
186 EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.", false)); | |
187 EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.", true)); | |
188 } | |
189 | |
190 TEST_F(RegistryControlledDomainTest, TestSameDomainOrHost) { | |
191 UseDomainData(Perfect_Hash_Test2::FindDomain); | |
192 | |
193 EXPECT_TRUE(CompareDomains("http://a.b.bar.jp/file.html", | |
194 "http://a.b.bar.jp/file.html")); // b.bar.jp | |
195 EXPECT_TRUE(CompareDomains("http://a.b.bar.jp/file.html", | |
196 "http://b.b.bar.jp/file.html")); // b.bar.jp | |
197 EXPECT_FALSE(CompareDomains("http://a.foo.jp/file.html", // foo.jp | |
198 "http://a.not.jp/file.html")); // not.jp | |
199 EXPECT_FALSE(CompareDomains("http://a.foo.jp/file.html", // foo.jp | |
200 "http://a.foo.jp./file.html")); // foo.jp. | |
201 EXPECT_FALSE(CompareDomains("http://a.com/file.html", // a.com | |
202 "http://b.com/file.html")); // b.com | |
203 EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", | |
204 "http://b.x.com/file.html")); // x.com | |
205 EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", | |
206 "http://.x.com/file.html")); // x.com | |
207 EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", | |
208 "http://..b.x.com/file.html")); // x.com | |
209 EXPECT_TRUE(CompareDomains("http://intranet/file.html", | |
210 "http://intranet/file.html")); // intranet | |
211 EXPECT_TRUE(CompareDomains("http://127.0.0.1/file.html", | |
212 "http://127.0.0.1/file.html")); // 127.0.0.1 | |
213 EXPECT_FALSE(CompareDomains("http://192.168.0.1/file.html", // 192.168.0.1 | |
214 "http://127.0.0.1/file.html")); // 127.0.0.1 | |
215 EXPECT_FALSE(CompareDomains("file:///C:/file.html", | |
216 "file:///C:/file.html")); // no host | |
217 } | |
218 | |
219 TEST_F(RegistryControlledDomainTest, TestDefaultData) { | |
220 // Note that no data is set: we're using the default rules. | |
221 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://google.com", false)); | |
222 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://stanford.edu", false)); | |
223 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ustreas.gov", false)); | |
224 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://icann.net", false)); | |
225 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ferretcentral.org", false)); | |
226 EXPECT_EQ(0U, GetRegistryLengthFromURL("http://nowhere.foo", false)); | |
227 EXPECT_EQ(3U, GetRegistryLengthFromURL("http://nowhere.foo", true)); | |
228 } | |
229 | |
230 } // namespace net | |
OLD | NEW |