Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: chrome/common/content_settings_pattern_unittest.cc

Issue 440423003: Clean content_settings_pattern_parser.* from unnecessary dependencies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix CrOS tests Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/content_settings_pattern.h" 5 #include "chrome/common/content_settings_pattern.h"
6 6
7 #include "chrome/common/content_settings_component.h"
7 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
8 #include "url/gurl.h" 9 #include "url/gurl.h"
9 10
10 namespace { 11 namespace {
11 12
12 ContentSettingsPattern Pattern(const std::string& str) { 13 ContentSettingsPattern Pattern(const std::string& str) {
13 return ContentSettingsPattern::FromString(str); 14 return ContentSettingsPattern::FromString(str);
14 } 15 }
15 16
16 } // namespace 17 } // namespace
17 18
18 TEST(ContentSettingsPatternTest, RealWorldPatterns) { 19 class ContentSettingsPatternTest : public testing::Test {
20 protected:
21 ContentSettingsPatternTest() {
22 InitContentSettingsComponent();
23 }
24
25 private:
26 DISALLOW_COPY_AND_ASSIGN(ContentSettingsPatternTest);
27 };
28
29 TEST_F(ContentSettingsPatternTest, RealWorldPatterns) {
19 // This is the place for real world patterns that unveiled bugs. 30 // This is the place for real world patterns that unveiled bugs.
20 EXPECT_STREQ("[*.]ikea.com", 31 EXPECT_STREQ("[*.]ikea.com",
21 Pattern("[*.]ikea.com").ToString().c_str()); 32 Pattern("[*.]ikea.com").ToString().c_str());
22 } 33 }
23 34
24 TEST(ContentSettingsPatternTest, GURL) { 35 TEST_F(ContentSettingsPatternTest, GURL) {
25 // Document and verify GURL behavior. 36 // Document and verify GURL behavior.
26 GURL url("http://mail.google.com:80"); 37 GURL url("http://mail.google.com:80");
27 EXPECT_EQ(-1, url.IntPort()); 38 EXPECT_EQ(-1, url.IntPort());
28 EXPECT_EQ("", url.port()); 39 EXPECT_EQ("", url.port());
29 40
30 url = GURL("http://mail.google.com"); 41 url = GURL("http://mail.google.com");
31 EXPECT_EQ(-1, url.IntPort()); 42 EXPECT_EQ(-1, url.IntPort());
32 EXPECT_EQ("", url.port()); 43 EXPECT_EQ("", url.port());
33 44
34 url = GURL("https://mail.google.com:443"); 45 url = GURL("https://mail.google.com:443");
35 EXPECT_EQ(-1, url.IntPort()); 46 EXPECT_EQ(-1, url.IntPort());
36 EXPECT_EQ("", url.port()); 47 EXPECT_EQ("", url.port());
37 48
38 url = GURL("https://mail.google.com"); 49 url = GURL("https://mail.google.com");
39 EXPECT_EQ(-1, url.IntPort()); 50 EXPECT_EQ(-1, url.IntPort());
40 EXPECT_EQ("", url.port()); 51 EXPECT_EQ("", url.port());
41 52
42 url = GURL("http://mail.google.com"); 53 url = GURL("http://mail.google.com");
43 EXPECT_EQ(-1, url.IntPort()); 54 EXPECT_EQ(-1, url.IntPort());
44 EXPECT_EQ("", url.port()); 55 EXPECT_EQ("", url.port());
45 } 56 }
46 57
47 TEST(ContentSettingsPatternTest, FromURL) { 58 TEST_F(ContentSettingsPatternTest, FromURL) {
48 // NOTICE: When content settings pattern are created from a GURL the following 59 // NOTICE: When content settings pattern are created from a GURL the following
49 // happens: 60 // happens:
50 // - If the GURL scheme is "http" the scheme wildcard is used. Otherwise the 61 // - If the GURL scheme is "http" the scheme wildcard is used. Otherwise the
51 // GURL scheme is used. 62 // GURL scheme is used.
52 // - A domain wildcard is added to the GURL host. 63 // - A domain wildcard is added to the GURL host.
53 // - A port wildcard is used instead of the schemes default port. 64 // - A port wildcard is used instead of the schemes default port.
54 // In case of non-default ports the specific GURL port is used. 65 // In case of non-default ports the specific GURL port is used.
55 ContentSettingsPattern pattern = ContentSettingsPattern::FromURL( 66 ContentSettingsPattern pattern = ContentSettingsPattern::FromURL(
56 GURL("http://www.youtube.com")); 67 GURL("http://www.youtube.com"));
57 EXPECT_TRUE(pattern.IsValid()); 68 EXPECT_TRUE(pattern.IsValid());
(...skipping 25 matching lines...) Expand all
83 EXPECT_STREQ("https://127.0.0.1:443", pattern.ToString().c_str()); 94 EXPECT_STREQ("https://127.0.0.1:443", pattern.ToString().c_str());
84 95
85 pattern = ContentSettingsPattern::FromURL(GURL("http://[::1]")); 96 pattern = ContentSettingsPattern::FromURL(GURL("http://[::1]"));
86 EXPECT_TRUE(pattern.IsValid()); 97 EXPECT_TRUE(pattern.IsValid());
87 98
88 pattern = ContentSettingsPattern::FromURL(GURL("file:///foo/bar.html")); 99 pattern = ContentSettingsPattern::FromURL(GURL("file:///foo/bar.html"));
89 EXPECT_TRUE(pattern.IsValid()); 100 EXPECT_TRUE(pattern.IsValid());
90 EXPECT_EQ("file:///foo/bar.html", pattern.ToString()); 101 EXPECT_EQ("file:///foo/bar.html", pattern.ToString());
91 } 102 }
92 103
93 TEST(ContentSettingsPatternTest, FilesystemUrls) { 104 TEST_F(ContentSettingsPatternTest, FilesystemUrls) {
94 ContentSettingsPattern pattern = 105 ContentSettingsPattern pattern =
95 ContentSettingsPattern::FromURL(GURL("http://www.google.com")); 106 ContentSettingsPattern::FromURL(GURL("http://www.google.com"));
96 EXPECT_TRUE(pattern.Matches( 107 EXPECT_TRUE(pattern.Matches(
97 GURL("filesystem:http://www.google.com/temporary/"))); 108 GURL("filesystem:http://www.google.com/temporary/")));
98 EXPECT_TRUE(pattern.Matches( 109 EXPECT_TRUE(pattern.Matches(
99 GURL("filesystem:http://foo.www.google.com/temporary/"))); 110 GURL("filesystem:http://foo.www.google.com/temporary/")));
100 EXPECT_TRUE(pattern.Matches( 111 EXPECT_TRUE(pattern.Matches(
101 GURL("filesystem:http://www.google.com:80/temporary/"))); 112 GURL("filesystem:http://www.google.com:80/temporary/")));
102 EXPECT_TRUE(pattern.Matches( 113 EXPECT_TRUE(pattern.Matches(
103 GURL("filesystem:http://www.google.com:81/temporary/"))); 114 GURL("filesystem:http://www.google.com:81/temporary/")));
(...skipping 22 matching lines...) Expand all
126 EXPECT_TRUE(pattern.Matches(GURL("filesystem:file:///temporary/"))); 137 EXPECT_TRUE(pattern.Matches(GURL("filesystem:file:///temporary/")));
127 EXPECT_TRUE(pattern.Matches(GURL("filesystem:file:///temporary/test.txt"))); 138 EXPECT_TRUE(pattern.Matches(GURL("filesystem:file:///temporary/test.txt")));
128 EXPECT_TRUE(pattern.Matches(GURL("file:///temporary"))); 139 EXPECT_TRUE(pattern.Matches(GURL("file:///temporary")));
129 EXPECT_FALSE(pattern.Matches(GURL("file://foo/bar"))); 140 EXPECT_FALSE(pattern.Matches(GURL("file://foo/bar")));
130 pattern2 = 141 pattern2 =
131 ContentSettingsPattern::FromURL( 142 ContentSettingsPattern::FromURL(
132 GURL("filesystem:file:///persistent/foo2/bar2")); 143 GURL("filesystem:file:///persistent/foo2/bar2"));
133 EXPECT_EQ(ContentSettingsPattern::IDENTITY, pattern.Compare(pattern2)); 144 EXPECT_EQ(ContentSettingsPattern::IDENTITY, pattern.Compare(pattern2));
134 } 145 }
135 146
136 TEST(ContentSettingsPatternTest, FromURLNoWildcard) { 147 TEST_F(ContentSettingsPatternTest, FromURLNoWildcard) {
137 // If no port is specifed GURLs always use the default port for the schemes 148 // If no port is specifed GURLs always use the default port for the schemes
138 // HTTP and HTTPS. Hence a GURL always carries a port specification either 149 // HTTP and HTTPS. Hence a GURL always carries a port specification either
139 // explicitly or implicitly. Therefore if a content settings pattern is 150 // explicitly or implicitly. Therefore if a content settings pattern is
140 // created from a GURL with no wildcard, specific values are used for the 151 // created from a GURL with no wildcard, specific values are used for the
141 // scheme, host and port part of the pattern. 152 // scheme, host and port part of the pattern.
142 // Creating content settings patterns from strings behaves different. Pattern 153 // Creating content settings patterns from strings behaves different. Pattern
143 // parts that are omitted in pattern specifications (strings), are completed 154 // parts that are omitted in pattern specifications (strings), are completed
144 // with a wildcard. 155 // with a wildcard.
145 ContentSettingsPattern pattern = ContentSettingsPattern::FromURLNoWildcard( 156 ContentSettingsPattern pattern = ContentSettingsPattern::FromURLNoWildcard(
146 GURL("http://www.example.com")); 157 GURL("http://www.example.com"));
(...skipping 21 matching lines...) Expand all
168 EXPECT_TRUE(pattern.Matches( 179 EXPECT_TRUE(pattern.Matches(
169 GURL("filesystem:http://www.google.com/persistent/"))); 180 GURL("filesystem:http://www.google.com/persistent/")));
170 EXPECT_FALSE(pattern.Matches( 181 EXPECT_FALSE(pattern.Matches(
171 GURL("filesystem:https://www.google.com/persistent/"))); 182 GURL("filesystem:https://www.google.com/persistent/")));
172 EXPECT_FALSE(pattern.Matches( 183 EXPECT_FALSE(pattern.Matches(
173 GURL("filesystem:https://www.google.com:81/temporary/"))); 184 GURL("filesystem:https://www.google.com:81/temporary/")));
174 EXPECT_FALSE(pattern.Matches( 185 EXPECT_FALSE(pattern.Matches(
175 GURL("filesystem:https://foo.www.google.com/temporary/"))); 186 GURL("filesystem:https://foo.www.google.com/temporary/")));
176 } 187 }
177 188
178 TEST(ContentSettingsPatternTest, Wildcard) { 189 TEST_F(ContentSettingsPatternTest, Wildcard) {
179 EXPECT_TRUE(ContentSettingsPattern::Wildcard().IsValid()); 190 EXPECT_TRUE(ContentSettingsPattern::Wildcard().IsValid());
180 191
181 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches( 192 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches(
182 GURL("http://www.google.com"))); 193 GURL("http://www.google.com")));
183 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches( 194 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches(
184 GURL("https://www.google.com"))); 195 GURL("https://www.google.com")));
185 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches( 196 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches(
186 GURL("https://myhost:8080"))); 197 GURL("https://myhost:8080")));
187 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches( 198 EXPECT_TRUE(ContentSettingsPattern::Wildcard().Matches(
188 GURL("file:///foo/bar.txt"))); 199 GURL("file:///foo/bar.txt")));
189 200
190 EXPECT_STREQ("*", ContentSettingsPattern::Wildcard().ToString().c_str()); 201 EXPECT_STREQ("*", ContentSettingsPattern::Wildcard().ToString().c_str());
191 202
192 EXPECT_EQ(ContentSettingsPattern::IDENTITY, 203 EXPECT_EQ(ContentSettingsPattern::IDENTITY,
193 ContentSettingsPattern::Wildcard().Compare( 204 ContentSettingsPattern::Wildcard().Compare(
194 ContentSettingsPattern::Wildcard())); 205 ContentSettingsPattern::Wildcard()));
195 } 206 }
196 207
197 TEST(ContentSettingsPatternTest, TrimEndingDotFromHost) { 208 TEST_F(ContentSettingsPatternTest, TrimEndingDotFromHost) {
198 EXPECT_TRUE(Pattern("www.example.com").IsValid()); 209 EXPECT_TRUE(Pattern("www.example.com").IsValid());
199 EXPECT_TRUE(Pattern("www.example.com").Matches( 210 EXPECT_TRUE(Pattern("www.example.com").Matches(
200 GURL("http://www.example.com"))); 211 GURL("http://www.example.com")));
201 EXPECT_TRUE(Pattern("www.example.com").Matches( 212 EXPECT_TRUE(Pattern("www.example.com").Matches(
202 GURL("http://www.example.com."))); 213 GURL("http://www.example.com.")));
203 214
204 EXPECT_TRUE(Pattern("www.example.com.").IsValid()); 215 EXPECT_TRUE(Pattern("www.example.com.").IsValid());
205 EXPECT_STREQ("www.example.com", 216 EXPECT_STREQ("www.example.com",
206 Pattern("www.example.com.").ToString().c_str()); 217 Pattern("www.example.com.").ToString().c_str());
207 218
208 EXPECT_TRUE(Pattern("www.example.com.") == Pattern("www.example.com")); 219 EXPECT_TRUE(Pattern("www.example.com.") == Pattern("www.example.com"));
209 220
210 EXPECT_TRUE(Pattern(".").IsValid()); 221 EXPECT_TRUE(Pattern(".").IsValid());
211 EXPECT_STREQ(".", Pattern(".").ToString().c_str()); 222 EXPECT_STREQ(".", Pattern(".").ToString().c_str());
212 } 223 }
213 224
214 TEST(ContentSettingsPatternTest, FromString_WithNoWildcards) { 225 TEST_F(ContentSettingsPatternTest, FromString_WithNoWildcards) {
215 // HTTP patterns with default port. 226 // HTTP patterns with default port.
216 EXPECT_TRUE(Pattern("http://www.example.com:80").IsValid()); 227 EXPECT_TRUE(Pattern("http://www.example.com:80").IsValid());
217 EXPECT_STREQ("http://www.example.com:80", 228 EXPECT_STREQ("http://www.example.com:80",
218 Pattern("http://www.example.com:80").ToString().c_str()); 229 Pattern("http://www.example.com:80").ToString().c_str());
219 // HTTP patterns with none default port. 230 // HTTP patterns with none default port.
220 EXPECT_TRUE(Pattern("http://www.example.com:81").IsValid()); 231 EXPECT_TRUE(Pattern("http://www.example.com:81").IsValid());
221 EXPECT_STREQ("http://www.example.com:81", 232 EXPECT_STREQ("http://www.example.com:81",
222 Pattern("http://www.example.com:81").ToString().c_str()); 233 Pattern("http://www.example.com:81").ToString().c_str());
223 234
224 // HTTPS patterns with default port. 235 // HTTPS patterns with default port.
225 EXPECT_TRUE(Pattern("https://www.example.com:443").IsValid()); 236 EXPECT_TRUE(Pattern("https://www.example.com:443").IsValid());
226 EXPECT_STREQ("https://www.example.com:443", 237 EXPECT_STREQ("https://www.example.com:443",
227 Pattern("https://www.example.com:443").ToString().c_str()); 238 Pattern("https://www.example.com:443").ToString().c_str());
228 // HTTPS patterns with none default port. 239 // HTTPS patterns with none default port.
229 EXPECT_TRUE(Pattern("https://www.example.com:8080").IsValid()); 240 EXPECT_TRUE(Pattern("https://www.example.com:8080").IsValid());
230 EXPECT_STREQ("https://www.example.com:8080", 241 EXPECT_STREQ("https://www.example.com:8080",
231 Pattern("https://www.example.com:8080").ToString().c_str()); 242 Pattern("https://www.example.com:8080").ToString().c_str());
232 } 243 }
233 244
234 TEST(ContentSettingsPatternTest, FromString_FilePatterns) { 245 TEST_F(ContentSettingsPatternTest, FromString_FilePatterns) {
235 // "/" is an invalid file path. 246 // "/" is an invalid file path.
236 EXPECT_FALSE(Pattern("file:///").IsValid()); 247 EXPECT_FALSE(Pattern("file:///").IsValid());
237 248
238 // Non-empty domains aren't allowed in file patterns. 249 // Non-empty domains aren't allowed in file patterns.
239 EXPECT_FALSE(Pattern("file://foo/").IsValid()); 250 EXPECT_FALSE(Pattern("file://foo/").IsValid());
240 EXPECT_FALSE(Pattern("file://localhost/foo/bar/test.html").IsValid()); 251 EXPECT_FALSE(Pattern("file://localhost/foo/bar/test.html").IsValid());
241 EXPECT_FALSE(Pattern("file://*").IsValid()); 252 EXPECT_FALSE(Pattern("file://*").IsValid());
242 EXPECT_FALSE(Pattern("file://*/").IsValid()); 253 EXPECT_FALSE(Pattern("file://*/").IsValid());
243 EXPECT_FALSE(Pattern("file://*/*").IsValid()); 254 EXPECT_FALSE(Pattern("file://*/*").IsValid());
244 EXPECT_FALSE(Pattern("file://*/foo/bar/test.html").IsValid()); 255 EXPECT_FALSE(Pattern("file://*/foo/bar/test.html").IsValid());
(...skipping 20 matching lines...) Expand all
265 EXPECT_FALSE(Pattern("file:///tmp/test.html").Matches( 276 EXPECT_FALSE(Pattern("file:///tmp/test.html").Matches(
266 GURL("file:///tmp/other.html"))); 277 GURL("file:///tmp/other.html")));
267 EXPECT_FALSE(Pattern("file:///tmp/test.html").Matches( 278 EXPECT_FALSE(Pattern("file:///tmp/test.html").Matches(
268 GURL("http://example.org/"))); 279 GURL("http://example.org/")));
269 280
270 EXPECT_TRUE(Pattern("file:///*").Matches(GURL("file:///tmp/test.html"))); 281 EXPECT_TRUE(Pattern("file:///*").Matches(GURL("file:///tmp/test.html")));
271 EXPECT_TRUE(Pattern("file:///*").Matches( 282 EXPECT_TRUE(Pattern("file:///*").Matches(
272 GURL("file://localhost/tmp/test.html"))); 283 GURL("file://localhost/tmp/test.html")));
273 } 284 }
274 285
275 TEST(ContentSettingsPatternTest, FromString_ExtensionPatterns) { 286 TEST_F(ContentSettingsPatternTest, FromString_ExtensionPatterns) {
276 EXPECT_TRUE(Pattern("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/") 287 EXPECT_TRUE(Pattern("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/")
277 .IsValid()); 288 .IsValid());
278 EXPECT_EQ("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/", 289 EXPECT_EQ("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/",
279 Pattern("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/") 290 Pattern("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/")
280 .ToString()); 291 .ToString());
281 EXPECT_TRUE(Pattern("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/") 292 EXPECT_TRUE(Pattern("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/")
282 .Matches(GURL("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/"))); 293 .Matches(GURL("chrome-extension://peoadpeiejnhkmpaakpnompolbglelel/")));
283 } 294 }
284 295
285 TEST(ContentSettingsPatternTest, FromString_WithIPAdresses) { 296 TEST_F(ContentSettingsPatternTest, FromString_WithIPAdresses) {
286 // IPv4 297 // IPv4
287 EXPECT_TRUE(Pattern("192.168.0.1").IsValid()); 298 EXPECT_TRUE(Pattern("192.168.0.1").IsValid());
288 EXPECT_STREQ("192.168.1.1", Pattern("192.168.1.1").ToString().c_str()); 299 EXPECT_STREQ("192.168.1.1", Pattern("192.168.1.1").ToString().c_str());
289 EXPECT_TRUE(Pattern("https://192.168.0.1:8080").IsValid()); 300 EXPECT_TRUE(Pattern("https://192.168.0.1:8080").IsValid());
290 EXPECT_STREQ("https://192.168.0.1:8080", 301 EXPECT_STREQ("https://192.168.0.1:8080",
291 Pattern("https://192.168.0.1:8080").ToString().c_str()); 302 Pattern("https://192.168.0.1:8080").ToString().c_str());
292 303
293 // Subdomain wildcards should be only valid for hosts, not for IP addresses. 304 // Subdomain wildcards should be only valid for hosts, not for IP addresses.
294 EXPECT_FALSE(Pattern("[*.]127.0.0.1").IsValid()); 305 EXPECT_FALSE(Pattern("[*.]127.0.0.1").IsValid());
295 306
296 // IPv6 307 // IPv6
297 EXPECT_TRUE(Pattern("[::1]").IsValid()); 308 EXPECT_TRUE(Pattern("[::1]").IsValid());
298 EXPECT_STREQ("[::1]", Pattern("[::1]").ToString().c_str()); 309 EXPECT_STREQ("[::1]", Pattern("[::1]").ToString().c_str());
299 EXPECT_TRUE(Pattern("https://[::1]:8080").IsValid()); 310 EXPECT_TRUE(Pattern("https://[::1]:8080").IsValid());
300 EXPECT_STREQ("https://[::1]:8080", 311 EXPECT_STREQ("https://[::1]:8080",
301 Pattern("https://[::1]:8080").ToString().c_str()); 312 Pattern("https://[::1]:8080").ToString().c_str());
302 } 313 }
303 314
304 TEST(ContentSettingsPatternTest, FromString_WithWildcards) { 315 TEST_F(ContentSettingsPatternTest, FromString_WithWildcards) {
305 // Creating content settings patterns from strings completes pattern parts 316 // Creating content settings patterns from strings completes pattern parts
306 // that are omitted in pattern specifications (strings) with a wildcard. 317 // that are omitted in pattern specifications (strings) with a wildcard.
307 318
308 // The wildcard pattern. 319 // The wildcard pattern.
309 EXPECT_TRUE(Pattern("*").IsValid()); 320 EXPECT_TRUE(Pattern("*").IsValid());
310 EXPECT_STREQ("*", Pattern("*").ToString().c_str()); 321 EXPECT_STREQ("*", Pattern("*").ToString().c_str());
311 EXPECT_EQ(ContentSettingsPattern::IDENTITY, 322 EXPECT_EQ(ContentSettingsPattern::IDENTITY,
312 Pattern("*").Compare(ContentSettingsPattern::Wildcard())); 323 Pattern("*").Compare(ContentSettingsPattern::Wildcard()));
313 324
314 // Patterns with port wildcard. 325 // Patterns with port wildcard.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 // Patterns with host wildcard 400 // Patterns with host wildcard
390 EXPECT_TRUE(Pattern("[*.]").IsValid()); 401 EXPECT_TRUE(Pattern("[*.]").IsValid());
391 EXPECT_TRUE(Pattern("http://*").IsValid()); 402 EXPECT_TRUE(Pattern("http://*").IsValid());
392 EXPECT_TRUE(Pattern("http://[*.]").IsValid()); 403 EXPECT_TRUE(Pattern("http://[*.]").IsValid());
393 EXPECT_EQ(std::string("http://*"), Pattern("http://[*.]").ToString()); 404 EXPECT_EQ(std::string("http://*"), Pattern("http://[*.]").ToString());
394 EXPECT_TRUE(Pattern("http://*:8080").IsValid()); 405 EXPECT_TRUE(Pattern("http://*:8080").IsValid());
395 EXPECT_TRUE(Pattern("*://*").IsValid()); 406 EXPECT_TRUE(Pattern("*://*").IsValid());
396 EXPECT_STREQ("*", Pattern("*://*").ToString().c_str()); 407 EXPECT_STREQ("*", Pattern("*://*").ToString().c_str());
397 } 408 }
398 409
399 TEST(ContentSettingsPatternTest, FromString_Canonicalized) { 410 TEST_F(ContentSettingsPatternTest, FromString_Canonicalized) {
400 // UTF-8 patterns. 411 // UTF-8 patterns.
401 EXPECT_TRUE(Pattern("[*.]\xC4\x87ira.com").IsValid()); 412 EXPECT_TRUE(Pattern("[*.]\xC4\x87ira.com").IsValid());
402 EXPECT_STREQ("[*.]xn--ira-ppa.com", 413 EXPECT_STREQ("[*.]xn--ira-ppa.com",
403 Pattern("[*.]\xC4\x87ira.com").ToString().c_str()); 414 Pattern("[*.]\xC4\x87ira.com").ToString().c_str());
404 EXPECT_TRUE(Pattern("\xC4\x87ira.com").IsValid()); 415 EXPECT_TRUE(Pattern("\xC4\x87ira.com").IsValid());
405 EXPECT_STREQ("xn--ira-ppa.com", 416 EXPECT_STREQ("xn--ira-ppa.com",
406 Pattern("\xC4\x87ira.com").ToString().c_str()); 417 Pattern("\xC4\x87ira.com").ToString().c_str());
407 EXPECT_TRUE(Pattern("file:///\xC4\x87ira.html").IsValid()); 418 EXPECT_TRUE(Pattern("file:///\xC4\x87ira.html").IsValid());
408 EXPECT_STREQ("file:///%C4%87ira.html", 419 EXPECT_STREQ("file:///%C4%87ira.html",
409 Pattern("file:///\xC4\x87ira.html").ToString().c_str()); 420 Pattern("file:///\xC4\x87ira.html").ToString().c_str());
410 421
411 // File path normalization. 422 // File path normalization.
412 EXPECT_TRUE(Pattern("file:///tmp/bar/../test.html").IsValid()); 423 EXPECT_TRUE(Pattern("file:///tmp/bar/../test.html").IsValid());
413 EXPECT_STREQ("file:///tmp/test.html", 424 EXPECT_STREQ("file:///tmp/test.html",
414 Pattern("file:///tmp/bar/../test.html").ToString().c_str()); 425 Pattern("file:///tmp/bar/../test.html").ToString().c_str());
415 } 426 }
416 427
417 TEST(ContentSettingsPatternTest, InvalidPatterns) { 428 TEST_F(ContentSettingsPatternTest, InvalidPatterns) {
418 // StubObserver expects an empty pattern top be returned as empty string. 429 // StubObserver expects an empty pattern top be returned as empty string.
419 EXPECT_FALSE(ContentSettingsPattern().IsValid()); 430 EXPECT_FALSE(ContentSettingsPattern().IsValid());
420 EXPECT_STREQ("", ContentSettingsPattern().ToString().c_str()); 431 EXPECT_STREQ("", ContentSettingsPattern().ToString().c_str());
421 432
422 // Empty pattern string 433 // Empty pattern string
423 EXPECT_FALSE(Pattern(std::string()).IsValid()); 434 EXPECT_FALSE(Pattern(std::string()).IsValid());
424 EXPECT_STREQ("", Pattern(std::string()).ToString().c_str()); 435 EXPECT_STREQ("", Pattern(std::string()).ToString().c_str());
425 436
426 // Pattern strings with invalid scheme part. 437 // Pattern strings with invalid scheme part.
427 EXPECT_FALSE(Pattern("ftp://myhost.org").IsValid()); 438 EXPECT_FALSE(Pattern("ftp://myhost.org").IsValid());
(...skipping 17 matching lines...) Expand all
445 EXPECT_FALSE(Pattern("file://").IsValid()); 456 EXPECT_FALSE(Pattern("file://").IsValid());
446 EXPECT_STREQ("", Pattern("file://").ToString().c_str()); 457 EXPECT_STREQ("", Pattern("file://").ToString().c_str());
447 EXPECT_FALSE(Pattern("file:///foo/bar.html:8080").IsValid()); 458 EXPECT_FALSE(Pattern("file:///foo/bar.html:8080").IsValid());
448 EXPECT_STREQ("", Pattern("file:///foo/bar.html:8080").ToString().c_str()); 459 EXPECT_STREQ("", Pattern("file:///foo/bar.html:8080").ToString().c_str());
449 460
450 // Host having multiple ending dots. 461 // Host having multiple ending dots.
451 EXPECT_FALSE(Pattern("www.example.com..").IsValid()); 462 EXPECT_FALSE(Pattern("www.example.com..").IsValid());
452 EXPECT_STREQ("", Pattern("www.example.com..").ToString().c_str()); 463 EXPECT_STREQ("", Pattern("www.example.com..").ToString().c_str());
453 } 464 }
454 465
455 TEST(ContentSettingsPatternTest, UnequalOperator) { 466 TEST_F(ContentSettingsPatternTest, UnequalOperator) {
456 EXPECT_TRUE(Pattern("http://www.foo.com") != Pattern("http://www.foo.com*")); 467 EXPECT_TRUE(Pattern("http://www.foo.com") != Pattern("http://www.foo.com*"));
457 EXPECT_TRUE(Pattern("http://www.foo.com*") != 468 EXPECT_TRUE(Pattern("http://www.foo.com*") !=
458 ContentSettingsPattern::Wildcard()); 469 ContentSettingsPattern::Wildcard());
459 470
460 EXPECT_TRUE(Pattern("http://www.foo.com") != 471 EXPECT_TRUE(Pattern("http://www.foo.com") !=
461 ContentSettingsPattern::Wildcard()); 472 ContentSettingsPattern::Wildcard());
462 473
463 EXPECT_TRUE(Pattern("http://www.foo.com") != Pattern("www.foo.com")); 474 EXPECT_TRUE(Pattern("http://www.foo.com") != Pattern("www.foo.com"));
464 EXPECT_TRUE(Pattern("http://www.foo.com") != 475 EXPECT_TRUE(Pattern("http://www.foo.com") !=
465 Pattern("http://www.foo.com:80")); 476 Pattern("http://www.foo.com:80"));
466 477
467 EXPECT_FALSE(Pattern("http://www.foo.com") != Pattern("http://www.foo.com")); 478 EXPECT_FALSE(Pattern("http://www.foo.com") != Pattern("http://www.foo.com"));
468 EXPECT_TRUE(Pattern("http://www.foo.com") == Pattern("http://www.foo.com")); 479 EXPECT_TRUE(Pattern("http://www.foo.com") == Pattern("http://www.foo.com"));
469 } 480 }
470 481
471 TEST(ContentSettingsPatternTest, Compare) { 482 TEST_F(ContentSettingsPatternTest, Compare) {
472 // Test identical patterns patterns. 483 // Test identical patterns patterns.
473 ContentSettingsPattern pattern1 = 484 ContentSettingsPattern pattern1 =
474 Pattern("http://www.google.com"); 485 Pattern("http://www.google.com");
475 EXPECT_EQ(ContentSettingsPattern::IDENTITY, pattern1.Compare(pattern1)); 486 EXPECT_EQ(ContentSettingsPattern::IDENTITY, pattern1.Compare(pattern1));
476 EXPECT_EQ(ContentSettingsPattern::IDENTITY, 487 EXPECT_EQ(ContentSettingsPattern::IDENTITY,
477 Pattern("http://www.google.com:80").Compare( 488 Pattern("http://www.google.com:80").Compare(
478 Pattern("http://www.google.com:80"))); 489 Pattern("http://www.google.com:80")));
479 EXPECT_EQ(ContentSettingsPattern::IDENTITY, 490 EXPECT_EQ(ContentSettingsPattern::IDENTITY,
480 Pattern("*://[*.]google.com:*").Compare( 491 Pattern("*://[*.]google.com:*").Compare(
481 Pattern("*://[*.]google.com:*"))); 492 Pattern("*://[*.]google.com:*")));
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 EXPECT_EQ(ContentSettingsPattern::PREDECESSOR, 610 EXPECT_EQ(ContentSettingsPattern::PREDECESSOR,
600 Pattern("mail.google.com").Compare( 611 Pattern("mail.google.com").Compare(
601 ContentSettingsPattern::Wildcard())); 612 ContentSettingsPattern::Wildcard()));
602 EXPECT_EQ(ContentSettingsPattern::SUCCESSOR, 613 EXPECT_EQ(ContentSettingsPattern::SUCCESSOR,
603 ContentSettingsPattern::Wildcard().Compare( 614 ContentSettingsPattern::Wildcard().Compare(
604 Pattern("mail.google.com"))); 615 Pattern("mail.google.com")));
605 } 616 }
606 617
607 // Legacy tests to ensure backwards compatibility. 618 // Legacy tests to ensure backwards compatibility.
608 619
609 TEST(ContentSettingsPatternTest, PatternSupport_Legacy) { 620 TEST_F(ContentSettingsPatternTest, PatternSupport_Legacy) {
610 EXPECT_TRUE(Pattern("[*.]example.com").IsValid()); 621 EXPECT_TRUE(Pattern("[*.]example.com").IsValid());
611 EXPECT_TRUE(Pattern("example.com").IsValid()); 622 EXPECT_TRUE(Pattern("example.com").IsValid());
612 EXPECT_TRUE(Pattern("192.168.0.1").IsValid()); 623 EXPECT_TRUE(Pattern("192.168.0.1").IsValid());
613 EXPECT_TRUE(Pattern("[::1]").IsValid()); 624 EXPECT_TRUE(Pattern("[::1]").IsValid());
614 EXPECT_TRUE( 625 EXPECT_TRUE(
615 Pattern("file:///tmp/test.html").IsValid()); 626 Pattern("file:///tmp/test.html").IsValid());
616 EXPECT_FALSE(Pattern("*example.com").IsValid()); 627 EXPECT_FALSE(Pattern("*example.com").IsValid());
617 EXPECT_FALSE(Pattern("example.*").IsValid()); 628 EXPECT_FALSE(Pattern("example.*").IsValid());
618 629
619 EXPECT_TRUE( 630 EXPECT_TRUE(
(...skipping 16 matching lines...) Expand all
636 EXPECT_FALSE(Pattern("example.com").Matches( 647 EXPECT_FALSE(Pattern("example.com").Matches(
637 GURL("http://example.org/"))); 648 GURL("http://example.org/")));
638 EXPECT_FALSE( 649 EXPECT_FALSE(
639 Pattern("file:///tmp/test.html").Matches( 650 Pattern("file:///tmp/test.html").Matches(
640 GURL("file:///tmp/other.html"))); 651 GURL("file:///tmp/other.html")));
641 EXPECT_FALSE( 652 EXPECT_FALSE(
642 Pattern("file:///tmp/test.html").Matches( 653 Pattern("file:///tmp/test.html").Matches(
643 GURL("http://example.org/"))); 654 GURL("http://example.org/")));
644 } 655 }
645 656
646 TEST(ContentSettingsPatternTest, CanonicalizePattern_Legacy) { 657 TEST_F(ContentSettingsPatternTest, CanonicalizePattern_Legacy) {
647 // Basic patterns. 658 // Basic patterns.
648 EXPECT_STREQ("[*.]ikea.com", Pattern("[*.]ikea.com").ToString().c_str()); 659 EXPECT_STREQ("[*.]ikea.com", Pattern("[*.]ikea.com").ToString().c_str());
649 EXPECT_STREQ("example.com", Pattern("example.com").ToString().c_str()); 660 EXPECT_STREQ("example.com", Pattern("example.com").ToString().c_str());
650 EXPECT_STREQ("192.168.1.1", Pattern("192.168.1.1").ToString().c_str()); 661 EXPECT_STREQ("192.168.1.1", Pattern("192.168.1.1").ToString().c_str());
651 EXPECT_STREQ("[::1]", Pattern("[::1]").ToString().c_str()); 662 EXPECT_STREQ("[::1]", Pattern("[::1]").ToString().c_str());
652 EXPECT_STREQ("file:///tmp/file.html", 663 EXPECT_STREQ("file:///tmp/file.html",
653 Pattern("file:///tmp/file.html").ToString().c_str()); 664 Pattern("file:///tmp/file.html").ToString().c_str());
654 665
655 // UTF-8 patterns. 666 // UTF-8 patterns.
656 EXPECT_STREQ("[*.]xn--ira-ppa.com", 667 EXPECT_STREQ("[*.]xn--ira-ppa.com",
657 Pattern("[*.]\xC4\x87ira.com").ToString().c_str()); 668 Pattern("[*.]\xC4\x87ira.com").ToString().c_str());
658 EXPECT_STREQ("xn--ira-ppa.com", 669 EXPECT_STREQ("xn--ira-ppa.com",
659 Pattern("\xC4\x87ira.com").ToString().c_str()); 670 Pattern("\xC4\x87ira.com").ToString().c_str());
660 EXPECT_STREQ("file:///%C4%87ira.html", 671 EXPECT_STREQ("file:///%C4%87ira.html",
661 Pattern("file:///\xC4\x87ira.html").ToString().c_str()); 672 Pattern("file:///\xC4\x87ira.html").ToString().c_str());
662 673
663 // file:/// normalization. 674 // file:/// normalization.
664 EXPECT_STREQ("file:///tmp/test.html", 675 EXPECT_STREQ("file:///tmp/test.html",
665 Pattern("file:///tmp/bar/../test.html").ToString().c_str()); 676 Pattern("file:///tmp/bar/../test.html").ToString().c_str());
666 677
667 // Invalid patterns. 678 // Invalid patterns.
668 EXPECT_STREQ("", Pattern("*example.com").ToString().c_str()); 679 EXPECT_STREQ("", Pattern("*example.com").ToString().c_str());
669 EXPECT_STREQ("", Pattern("example.*").ToString().c_str()); 680 EXPECT_STREQ("", Pattern("example.*").ToString().c_str());
670 EXPECT_STREQ("", Pattern("*\xC4\x87ira.com").ToString().c_str()); 681 EXPECT_STREQ("", Pattern("*\xC4\x87ira.com").ToString().c_str());
671 EXPECT_STREQ("", Pattern("\xC4\x87ira.*").ToString().c_str()); 682 EXPECT_STREQ("", Pattern("\xC4\x87ira.*").ToString().c_str());
672 } 683 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698