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

Side by Side Diff: chrome/common/extensions/url_pattern_unittest.cc

Issue 6804032: Add TLS-SRP (RFC 5054) support Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: use system srp and mpi libs, not local copies Created 9 years, 8 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 // TODO(sqs): add httpsv
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 4 // found in the LICENSE file.
4 5
5 #include "base/scoped_ptr.h" 6 #include "base/scoped_ptr.h"
6 #include "chrome/common/extensions/url_pattern.h" 7 #include "chrome/common/extensions/url_pattern.h"
7 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
8 #include "googleurl/src/gurl.h" 9 #include "googleurl/src/gurl.h"
9 10
10 // See url_pattern.h for examples of valid and invalid patterns. 11 // See url_pattern.h for examples of valid and invalid patterns.
11 12
12 static const int kAllSchemes = 13 static const int kAllSchemes =
13 URLPattern::SCHEME_HTTP | 14 URLPattern::SCHEME_HTTP |
14 URLPattern::SCHEME_HTTPS | 15 URLPattern::SCHEME_HTTPS |
16 URLPattern::SCHEME_HTTPSV |
15 URLPattern::SCHEME_FILE | 17 URLPattern::SCHEME_FILE |
16 URLPattern::SCHEME_FTP | 18 URLPattern::SCHEME_FTP |
17 URLPattern::SCHEME_CHROMEUI; 19 URLPattern::SCHEME_CHROMEUI;
18 20
19 TEST(ExtensionURLPatternTest, ParseInvalid) { 21 TEST(ExtensionURLPatternTest, ParseInvalid) {
20 const struct { 22 const struct {
21 const char* pattern; 23 const char* pattern;
22 URLPattern::ParseResult expected_result; 24 URLPattern::ParseResult expected_result;
23 } kInvalidPatterns[] = { 25 } kInvalidPatterns[] = {
24 { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR }, 26 { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR },
(...skipping 22 matching lines...) Expand all
47 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*/*")); 49 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*/*"));
48 EXPECT_EQ("http", pattern.scheme()); 50 EXPECT_EQ("http", pattern.scheme());
49 EXPECT_EQ("", pattern.host()); 51 EXPECT_EQ("", pattern.host());
50 EXPECT_TRUE(pattern.match_subdomains()); 52 EXPECT_TRUE(pattern.match_subdomains());
51 EXPECT_FALSE(pattern.match_all_urls()); 53 EXPECT_FALSE(pattern.match_all_urls());
52 EXPECT_EQ("/*", pattern.path()); 54 EXPECT_EQ("/*", pattern.path());
53 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com"))); 55 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com")));
54 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com"))); 56 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com")));
55 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo"))); 57 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo")));
56 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com"))); 58 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com")));
59 EXPECT_FALSE(pattern.MatchesUrl(GURL("httpsv://google.com")));
57 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search"))); 60 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search")));
58 } 61 }
59 62
60 // all domains 63 // all domains
61 TEST(ExtensionURLPatternTest, Match2) { 64 TEST(ExtensionURLPatternTest, Match2) {
62 URLPattern pattern(kAllSchemes); 65 URLPattern pattern(kAllSchemes);
63 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); 66 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*"));
64 EXPECT_EQ("https", pattern.scheme()); 67 EXPECT_EQ("https", pattern.scheme());
65 EXPECT_EQ("", pattern.host()); 68 EXPECT_EQ("", pattern.host());
66 EXPECT_TRUE(pattern.match_subdomains()); 69 EXPECT_TRUE(pattern.match_subdomains());
67 EXPECT_FALSE(pattern.match_all_urls()); 70 EXPECT_FALSE(pattern.match_all_urls());
68 EXPECT_EQ("/foo*", pattern.path()); 71 EXPECT_EQ("/foo*", pattern.path());
69 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo"))); 72 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo")));
73 EXPECT_TRUE(pattern.MatchesUrl(GURL("httpsv://www.google.com/foo")));
70 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar"))); 74 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar")));
71 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo"))); 75 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo")));
72 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/"))); 76 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/")));
77 EXPECT_FALSE(pattern.MatchesUrl(GURL("httpsv://www.google.com/")));
73 } 78 }
74 79
75 // subdomains 80 // subdomains
76 TEST(URLPatternTest, Match3) { 81 TEST(URLPatternTest, Match3) {
77 URLPattern pattern(kAllSchemes); 82 URLPattern pattern(kAllSchemes);
78 EXPECT_EQ(URLPattern::PARSE_SUCCESS, 83 EXPECT_EQ(URLPattern::PARSE_SUCCESS,
79 pattern.Parse("http://*.google.com/foo*bar")); 84 pattern.Parse("http://*.google.com/foo*bar"));
80 EXPECT_EQ("http", pattern.scheme()); 85 EXPECT_EQ("http", pattern.scheme());
81 EXPECT_EQ("google.com", pattern.host()); 86 EXPECT_EQ("google.com", pattern.host());
82 EXPECT_TRUE(pattern.match_subdomains()); 87 EXPECT_TRUE(pattern.match_subdomains());
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com"))); 167 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com")));
163 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history"))); 168 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history")));
164 }; 169 };
165 170
166 // *:// 171 // *://
167 TEST(ExtensionURLPatternTest, Match10) { 172 TEST(ExtensionURLPatternTest, Match10) {
168 URLPattern pattern(kAllSchemes); 173 URLPattern pattern(kAllSchemes);
169 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("*://*/*")); 174 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("*://*/*"));
170 EXPECT_TRUE(pattern.MatchesScheme("http")); 175 EXPECT_TRUE(pattern.MatchesScheme("http"));
171 EXPECT_TRUE(pattern.MatchesScheme("https")); 176 EXPECT_TRUE(pattern.MatchesScheme("https"));
177 EXPECT_TRUE(pattern.MatchesScheme("httpsv"));
172 EXPECT_FALSE(pattern.MatchesScheme("chrome")); 178 EXPECT_FALSE(pattern.MatchesScheme("chrome"));
173 EXPECT_FALSE(pattern.MatchesScheme("file")); 179 EXPECT_FALSE(pattern.MatchesScheme("file"));
174 EXPECT_FALSE(pattern.MatchesScheme("ftp")); 180 EXPECT_FALSE(pattern.MatchesScheme("ftp"));
175 EXPECT_TRUE(pattern.match_subdomains()); 181 EXPECT_TRUE(pattern.match_subdomains());
176 EXPECT_FALSE(pattern.match_all_urls()); 182 EXPECT_FALSE(pattern.match_all_urls());
177 EXPECT_EQ("/*", pattern.path()); 183 EXPECT_EQ("/*", pattern.path());
178 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 184 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
179 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 185 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
180 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar"))); 186 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar")));
181 }; 187 };
182 188
183 // <all_urls> 189 // <all_urls>
184 TEST(ExtensionURLPatternTest, Match11) { 190 TEST(ExtensionURLPatternTest, Match11) {
185 URLPattern pattern(kAllSchemes); 191 URLPattern pattern(kAllSchemes);
186 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); 192 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>"));
187 EXPECT_TRUE(pattern.MatchesScheme("chrome")); 193 EXPECT_TRUE(pattern.MatchesScheme("chrome"));
188 EXPECT_TRUE(pattern.MatchesScheme("http")); 194 EXPECT_TRUE(pattern.MatchesScheme("http"));
189 EXPECT_TRUE(pattern.MatchesScheme("https")); 195 EXPECT_TRUE(pattern.MatchesScheme("https"));
196 EXPECT_TRUE(pattern.MatchesScheme("httpsv"));
190 EXPECT_TRUE(pattern.MatchesScheme("file")); 197 EXPECT_TRUE(pattern.MatchesScheme("file"));
191 EXPECT_TRUE(pattern.match_subdomains()); 198 EXPECT_TRUE(pattern.match_subdomains());
192 EXPECT_TRUE(pattern.match_all_urls()); 199 EXPECT_TRUE(pattern.match_all_urls());
193 EXPECT_EQ("/*", pattern.path()); 200 EXPECT_EQ("/*", pattern.path());
194 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 201 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
195 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 202 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
196 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar"))); 203 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar")));
197 }; 204 };
198 205
199 // SCHEME_ALL matches all schemes. 206 // SCHEME_ALL matches all schemes.
200 TEST(ExtensionURLPatternTest, Match12) { 207 TEST(ExtensionURLPatternTest, Match12) {
201 URLPattern pattern(URLPattern::SCHEME_ALL); 208 URLPattern pattern(URLPattern::SCHEME_ALL);
202 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); 209 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>"));
203 EXPECT_TRUE(pattern.MatchesScheme("chrome")); 210 EXPECT_TRUE(pattern.MatchesScheme("chrome"));
204 EXPECT_TRUE(pattern.MatchesScheme("http")); 211 EXPECT_TRUE(pattern.MatchesScheme("http"));
205 EXPECT_TRUE(pattern.MatchesScheme("https")); 212 EXPECT_TRUE(pattern.MatchesScheme("https"));
213 EXPECT_TRUE(pattern.MatchesScheme("httpsv"));
206 EXPECT_TRUE(pattern.MatchesScheme("file")); 214 EXPECT_TRUE(pattern.MatchesScheme("file"));
207 EXPECT_TRUE(pattern.MatchesScheme("javascript")); 215 EXPECT_TRUE(pattern.MatchesScheme("javascript"));
208 EXPECT_TRUE(pattern.MatchesScheme("data")); 216 EXPECT_TRUE(pattern.MatchesScheme("data"));
209 EXPECT_TRUE(pattern.MatchesScheme("about")); 217 EXPECT_TRUE(pattern.MatchesScheme("about"));
210 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); 218 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension"));
211 EXPECT_TRUE(pattern.match_subdomains()); 219 EXPECT_TRUE(pattern.match_subdomains());
212 EXPECT_TRUE(pattern.match_all_urls()); 220 EXPECT_TRUE(pattern.match_all_urls());
213 EXPECT_EQ("/*", pattern.path()); 221 EXPECT_EQ("/*", pattern.path());
214 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 222 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
215 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 223 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 URLPattern pattern2(kAllSchemes, "https://www.google.com/foo/*"); 299 URLPattern pattern2(kAllSchemes, "https://www.google.com/foo/*");
292 URLPattern pattern3(kAllSchemes, "http://*.google.com/foo/*"); 300 URLPattern pattern3(kAllSchemes, "http://*.google.com/foo/*");
293 URLPattern pattern4(kAllSchemes, "http://*.yahooo.com/foo/*"); 301 URLPattern pattern4(kAllSchemes, "http://*.yahooo.com/foo/*");
294 URLPattern pattern5(kAllSchemes, "http://www.yahooo.com/bar/*"); 302 URLPattern pattern5(kAllSchemes, "http://www.yahooo.com/bar/*");
295 URLPattern pattern6(kAllSchemes, 303 URLPattern pattern6(kAllSchemes,
296 "http://www.yahooo.com/bar/baz/*"); 304 "http://www.yahooo.com/bar/baz/*");
297 URLPattern pattern7(kAllSchemes, "file:///*"); 305 URLPattern pattern7(kAllSchemes, "file:///*");
298 URLPattern pattern8(kAllSchemes, "*://*/*"); 306 URLPattern pattern8(kAllSchemes, "*://*/*");
299 URLPattern pattern9(URLPattern::SCHEME_HTTPS, "*://*/*"); 307 URLPattern pattern9(URLPattern::SCHEME_HTTPS, "*://*/*");
300 URLPattern pattern10(kAllSchemes, "<all_urls>"); 308 URLPattern pattern10(kAllSchemes, "<all_urls>");
309 URLPattern pattern11(kAllSchemes, "httpsv://www.google.com/foo/*");
301 310
302 TestPatternOverlap(pattern1, pattern1, true); 311 TestPatternOverlap(pattern1, pattern1, true);
303 TestPatternOverlap(pattern1, pattern2, false); 312 TestPatternOverlap(pattern1, pattern2, false);
313 TestPatternOverlap(pattern1, pattern11, false);
304 TestPatternOverlap(pattern1, pattern3, true); 314 TestPatternOverlap(pattern1, pattern3, true);
305 TestPatternOverlap(pattern1, pattern4, false); 315 TestPatternOverlap(pattern1, pattern4, false);
306 TestPatternOverlap(pattern3, pattern4, false); 316 TestPatternOverlap(pattern3, pattern4, false);
307 TestPatternOverlap(pattern4, pattern5, false); 317 TestPatternOverlap(pattern4, pattern5, false);
308 TestPatternOverlap(pattern5, pattern6, true); 318 TestPatternOverlap(pattern5, pattern6, true);
309 319
310 // Test that scheme restrictions work. 320 // Test that scheme restrictions work.
311 TestPatternOverlap(pattern1, pattern8, true); 321 TestPatternOverlap(pattern1, pattern8, true);
312 TestPatternOverlap(pattern1, pattern9, false); 322 TestPatternOverlap(pattern1, pattern9, false);
313 TestPatternOverlap(pattern1, pattern10, true); 323 TestPatternOverlap(pattern1, pattern10, true);
324 TestPatternOverlap(pattern2, pattern11, false);
314 325
315 // Test that '<all_urls>' includes file URLs, while scheme '*' does not. 326 // Test that '<all_urls>' includes file URLs, while scheme '*' does not.
316 TestPatternOverlap(pattern7, pattern8, false); 327 TestPatternOverlap(pattern7, pattern8, false);
317 TestPatternOverlap(pattern7, pattern10, true); 328 TestPatternOverlap(pattern7, pattern10, true);
318 } 329 }
319 330
320 TEST(ExtensionURLPatternTest, ConvertToExplicitSchemes) { 331 TEST(ExtensionURLPatternTest, ConvertToExplicitSchemes) {
321 std::vector<URLPattern> all_urls(URLPattern( 332 std::vector<URLPattern> all_urls(URLPattern(
322 kAllSchemes, 333 kAllSchemes,
323 "<all_urls>").ConvertToExplicitSchemes()); 334 "<all_urls>").ConvertToExplicitSchemes());
(...skipping 15 matching lines...) Expand all
339 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); 350 EXPECT_EQ("https://*/*", all_urls[1].GetAsString());
340 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); 351 EXPECT_EQ("file:///*", all_urls[2].GetAsString());
341 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); 352 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString());
342 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); 353 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString());
343 354
344 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); 355 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString());
345 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); 356 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString());
346 357
347 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); 358 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString());
348 } 359 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698