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

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

Issue 9254028: Added support for file URI path wildcards in content settings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase on trunk Created 8 years, 11 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) 2011 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 #include "chrome/common/content_settings_pattern_parser.h" 6 #include "chrome/common/content_settings_pattern_parser.h"
7 7
8 #include "testing/gmock/include/gmock/gmock.h" 8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 namespace { 11 namespace {
12 typedef ContentSettingsPattern::BuilderInterface BuilderInterface; 12 typedef ContentSettingsPattern::BuilderInterface BuilderInterface;
13 } // namespace 13 } // namespace
14 14
15 class MockBuilder : public ContentSettingsPattern::BuilderInterface { 15 class MockBuilder : public ContentSettingsPattern::BuilderInterface {
16 public: 16 public:
17 MOCK_METHOD0(WithSchemeWildcard, BuilderInterface*()); 17 MOCK_METHOD0(WithSchemeWildcard, BuilderInterface*());
18 MOCK_METHOD0(WithDomainWildcard, BuilderInterface*()); 18 MOCK_METHOD0(WithDomainWildcard, BuilderInterface*());
19 MOCK_METHOD0(WithPortWildcard, BuilderInterface*()); 19 MOCK_METHOD0(WithPortWildcard, BuilderInterface*());
20 MOCK_METHOD1(WithScheme, BuilderInterface*(const std::string& scheme)); 20 MOCK_METHOD1(WithScheme, BuilderInterface*(const std::string& scheme));
21 MOCK_METHOD1(WithHost, BuilderInterface*(const std::string& host)); 21 MOCK_METHOD1(WithHost, BuilderInterface*(const std::string& host));
22 MOCK_METHOD1(WithPort, BuilderInterface*(const std::string& port)); 22 MOCK_METHOD1(WithPort, BuilderInterface*(const std::string& port));
23 MOCK_METHOD1(WithPath, BuilderInterface*(const std::string& path)); 23 MOCK_METHOD1(WithPath, BuilderInterface*(const std::string& path));
24 MOCK_METHOD0(WithPathWildcard, BuilderInterface*());
24 MOCK_METHOD0(Invalid, BuilderInterface*()); 25 MOCK_METHOD0(Invalid, BuilderInterface*());
25 MOCK_METHOD0(Build, ContentSettingsPattern()); 26 MOCK_METHOD0(Build, ContentSettingsPattern());
26 }; 27 };
27 28
28 TEST(ContentSettingsPatternParserTest, ParsePatterns) { 29 TEST(ContentSettingsPatternParserTest, ParsePatterns) {
29 // Test valid patterns 30 // Test valid patterns
30 MockBuilder builder; 31 ::testing::StrictMock<MockBuilder> builder;
32
33 // WithPathWildcard() is not called for "*". (Need a strict Mock for this
34 // case.)
35 EXPECT_CALL(builder, WithSchemeWildcard()).Times(1).WillOnce(
36 ::testing::Return(&builder));
37 EXPECT_CALL(builder, WithDomainWildcard()).Times(1).WillOnce(
38 ::testing::Return(&builder));
39 EXPECT_CALL(builder, WithPortWildcard()).Times(1).WillOnce(
40 ::testing::Return(&builder));
41 content_settings::PatternParser::Parse("*", &builder);
42 ::testing::Mock::VerifyAndClear(&builder);
31 43
32 EXPECT_CALL(builder, WithScheme("http")).Times(1).WillOnce( 44 EXPECT_CALL(builder, WithScheme("http")).Times(1).WillOnce(
33 ::testing::Return(&builder)); 45 ::testing::Return(&builder));
34 EXPECT_CALL(builder, WithHost("www.youtube.com")).Times(1).WillOnce( 46 EXPECT_CALL(builder, WithHost("www.youtube.com")).Times(1).WillOnce(
35 ::testing::Return(&builder)); 47 ::testing::Return(&builder));
36 EXPECT_CALL(builder, WithPort("8080")).Times(1).WillOnce( 48 EXPECT_CALL(builder, WithPort("8080")).Times(1).WillOnce(
37 ::testing::Return(&builder)); 49 ::testing::Return(&builder));
38 content_settings::PatternParser::Parse( 50 content_settings::PatternParser::Parse(
39 "http://www.youtube.com:8080", &builder); 51 "http://www.youtube.com:8080", &builder);
40 ::testing::Mock::VerifyAndClear(&builder); 52 ::testing::Mock::VerifyAndClear(&builder);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 91
80 EXPECT_CALL(builder, WithScheme("http")).Times(1).WillOnce( 92 EXPECT_CALL(builder, WithScheme("http")).Times(1).WillOnce(
81 ::testing::Return(&builder)); 93 ::testing::Return(&builder));
82 EXPECT_CALL(builder, WithHost("127.0.0.1")).Times(1).WillOnce( 94 EXPECT_CALL(builder, WithHost("127.0.0.1")).Times(1).WillOnce(
83 ::testing::Return(&builder)); 95 ::testing::Return(&builder));
84 EXPECT_CALL(builder, WithPort("8080")).Times(1).WillOnce( 96 EXPECT_CALL(builder, WithPort("8080")).Times(1).WillOnce(
85 ::testing::Return(&builder)); 97 ::testing::Return(&builder));
86 content_settings::PatternParser::Parse("http://127.0.0.1:8080", &builder); 98 content_settings::PatternParser::Parse("http://127.0.0.1:8080", &builder);
87 ::testing::Mock::VerifyAndClear(&builder); 99 ::testing::Mock::VerifyAndClear(&builder);
88 100
89 EXPECT_CALL(builder, WithScheme("file")).Times(1).WillOnce(
90 ::testing::Return(&builder));
91 EXPECT_CALL(builder, WithPath("/foo/bar/test.html")).Times(1).WillOnce(
92 ::testing::Return(&builder));
93 content_settings::PatternParser::Parse(
94 "file:///foo/bar/test.html", &builder);
95 ::testing::Mock::VerifyAndClear(&builder);
96
97 // Test valid pattern short forms 101 // Test valid pattern short forms
98 EXPECT_CALL(builder, WithSchemeWildcard()).Times(1).WillOnce( 102 EXPECT_CALL(builder, WithSchemeWildcard()).Times(1).WillOnce(
99 ::testing::Return(&builder)); 103 ::testing::Return(&builder));
100 EXPECT_CALL(builder, WithHost("www.youtube.com")).Times(1).WillOnce( 104 EXPECT_CALL(builder, WithHost("www.youtube.com")).Times(1).WillOnce(
101 ::testing::Return(&builder)); 105 ::testing::Return(&builder));
102 EXPECT_CALL(builder, WithPort("8080")).Times(1).WillOnce( 106 EXPECT_CALL(builder, WithPort("8080")).Times(1).WillOnce(
103 ::testing::Return(&builder)); 107 ::testing::Return(&builder));
104 content_settings::PatternParser::Parse("www.youtube.com:8080", &builder); 108 content_settings::PatternParser::Parse("www.youtube.com:8080", &builder);
105 ::testing::Mock::VerifyAndClear(&builder); 109 ::testing::Mock::VerifyAndClear(&builder);
106 110
(...skipping 11 matching lines...) Expand all
118 EXPECT_CALL(builder, WithDomainWildcard()).Times(1).WillOnce( 122 EXPECT_CALL(builder, WithDomainWildcard()).Times(1).WillOnce(
119 ::testing::Return(&builder)); 123 ::testing::Return(&builder));
120 EXPECT_CALL(builder, WithHost("youtube.com")).Times(1).WillOnce( 124 EXPECT_CALL(builder, WithHost("youtube.com")).Times(1).WillOnce(
121 ::testing::Return(&builder)); 125 ::testing::Return(&builder));
122 EXPECT_CALL(builder, WithPortWildcard()).Times(1).WillOnce( 126 EXPECT_CALL(builder, WithPortWildcard()).Times(1).WillOnce(
123 ::testing::Return(&builder)); 127 ::testing::Return(&builder));
124 content_settings::PatternParser::Parse("[*.]youtube.com", &builder); 128 content_settings::PatternParser::Parse("[*.]youtube.com", &builder);
125 ::testing::Mock::VerifyAndClear(&builder); 129 ::testing::Mock::VerifyAndClear(&builder);
126 130
127 // Test invalid patterns 131 // Test invalid patterns
132 EXPECT_CALL(builder, WithSchemeWildcard()).Times(1).WillOnce(
133 ::testing::Return(&builder));
128 EXPECT_CALL(builder, Invalid()).Times(1).WillOnce( 134 EXPECT_CALL(builder, Invalid()).Times(1).WillOnce(
129 ::testing::Return(&builder)); 135 ::testing::Return(&builder));
130 content_settings::PatternParser::Parse("*youtube.com", &builder); 136 content_settings::PatternParser::Parse("*youtube.com", &builder);
131 ::testing::Mock::VerifyAndClear(&builder); 137 ::testing::Mock::VerifyAndClear(&builder);
132 138
139 EXPECT_CALL(builder, WithSchemeWildcard()).Times(1).WillOnce(
140 ::testing::Return(&builder));
133 EXPECT_CALL(builder, Invalid()).Times(1).WillOnce( 141 EXPECT_CALL(builder, Invalid()).Times(1).WillOnce(
134 ::testing::Return(&builder)); 142 ::testing::Return(&builder));
135 content_settings::PatternParser::Parse("*.youtube.com", &builder); 143 content_settings::PatternParser::Parse("*.youtube.com", &builder);
136 ::testing::Mock::VerifyAndClear(&builder); 144 ::testing::Mock::VerifyAndClear(&builder);
137 145
146 EXPECT_CALL(builder, WithSchemeWildcard()).Times(1).WillOnce(
147 ::testing::Return(&builder));
138 EXPECT_CALL(builder, Invalid()).Times(1).WillOnce( 148 EXPECT_CALL(builder, Invalid()).Times(1).WillOnce(
139 ::testing::Return(&builder)); 149 ::testing::Return(&builder));
140 content_settings::PatternParser::Parse("www.youtube.com*", &builder); 150 content_settings::PatternParser::Parse("www.youtube.com*", &builder);
141 ::testing::Mock::VerifyAndClear(&builder); 151 ::testing::Mock::VerifyAndClear(&builder);
142 } 152 }
143 153
154 TEST(ContentSettingsPatternParserTest, ParseFilePatterns) {
155 ::testing::StrictMock<MockBuilder> builder;
156
157 EXPECT_CALL(builder, WithScheme("file")).Times(1).WillOnce(
158 ::testing::Return(&builder));
159 EXPECT_CALL(builder, WithPath("/foo/bar/test.html")).Times(1).WillOnce(
160 ::testing::Return(&builder));
161 content_settings::PatternParser::Parse(
162 "file:///foo/bar/test.html", &builder);
163 ::testing::Mock::VerifyAndClear(&builder);
164
165 EXPECT_CALL(builder, WithScheme("file")).Times(1).WillOnce(
166 ::testing::Return(&builder));
167 EXPECT_CALL(builder, WithDomainWildcard()).Times(1).WillOnce(
168 ::testing::Return(&builder));
169 content_settings::PatternParser::Parse(
170 "file://*", &builder);
171 ::testing::Mock::VerifyAndClear(&builder);
172
173 EXPECT_CALL(builder, WithScheme("file")).Times(1).WillOnce(
174 ::testing::Return(&builder));
175 EXPECT_CALL(builder, WithDomainWildcard()).Times(1).WillOnce(
176 ::testing::Return(&builder));
177 EXPECT_CALL(builder, WithPath("/")).Times(1).WillOnce(
178 ::testing::Return(&builder));
179 content_settings::PatternParser::Parse(
180 "file://*/", &builder);
181 ::testing::Mock::VerifyAndClear(&builder);
182
183 EXPECT_CALL(builder, WithScheme("file")).Times(1).WillOnce(
184 ::testing::Return(&builder));
185 EXPECT_CALL(builder, WithDomainWildcard()).Times(1).WillOnce(
186 ::testing::Return(&builder));
187 EXPECT_CALL(builder, WithPathWildcard()).Times(1).WillOnce(
188 ::testing::Return(&builder));
189 content_settings::PatternParser::Parse(
190 "file://*/*", &builder);
191 ::testing::Mock::VerifyAndClear(&builder);
192
193 EXPECT_CALL(builder, WithScheme("file")).Times(1).WillOnce(
194 ::testing::Return(&builder));
195 EXPECT_CALL(builder, WithPathWildcard()).Times(1).WillOnce(
196 ::testing::Return(&builder));
197 content_settings::PatternParser::Parse(
198 "file:///*", &builder);
199 ::testing::Mock::VerifyAndClear(&builder);
200
201 // Invalid file patterns.
202 EXPECT_CALL(builder, WithScheme("file")).Times(1).WillOnce(
203 ::testing::Return(&builder));
204 EXPECT_CALL(builder, Invalid()).Times(1).WillOnce(
205 ::testing::Return(&builder));
206 content_settings::PatternParser::Parse(
207 "file://**", &builder);
208 ::testing::Mock::VerifyAndClear(&builder);
209 }
210
144 TEST(ContentSettingsPatternParserTest, SerializePatterns) { 211 TEST(ContentSettingsPatternParserTest, SerializePatterns) {
145 ContentSettingsPattern::PatternParts parts; 212 ContentSettingsPattern::PatternParts parts;
146 parts.scheme = "http"; 213 parts.scheme = "http";
147 parts.host = "www.youtube.com"; 214 parts.host = "www.youtube.com";
148 parts.port = "8080"; 215 parts.port = "8080";
149 EXPECT_STREQ("http://www.youtube.com:8080", 216 EXPECT_STREQ("http://www.youtube.com:8080",
150 content_settings::PatternParser::ToString(parts).c_str()); 217 content_settings::PatternParser::ToString(parts).c_str());
151 218
152 parts = ContentSettingsPattern::PatternParts(); 219 parts = ContentSettingsPattern::PatternParts();
153 parts.scheme = "file"; 220 parts.scheme = "file";
154 parts.path = "/foo/bar/test.html"; 221 parts.path = "/foo/bar/test.html";
155 EXPECT_STREQ("file:///foo/bar/test.html", 222 EXPECT_STREQ("file:///foo/bar/test.html",
156 content_settings::PatternParser::ToString(parts).c_str()); 223 content_settings::PatternParser::ToString(parts).c_str());
224
225 parts = ContentSettingsPattern::PatternParts();
226 parts.scheme = "file";
227 parts.path = "";
228 parts.is_path_wildcard = true;
229 EXPECT_EQ("file:///*", content_settings::PatternParser::ToString(parts));
157 } 230 }
OLDNEW
« no previous file with comments | « chrome/common/content_settings_pattern_parser.cc ('k') | chrome/common/content_settings_pattern_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698