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

Side by Side Diff: Source/platform/weborigin/OriginAccessEntryTest.cpp

Issue 1128913004: Improve OriginAccessEntry support for IP addresses. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 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 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 OriginAccessEntry entry1("http", "google.com", OriginAccessEntry::AllowSubdo mains, OriginAccessEntry::TreatIPAddressAsIPAddress); 73 OriginAccessEntry entry1("http", "google.com", OriginAccessEntry::AllowSubdo mains, OriginAccessEntry::TreatIPAddressAsIPAddress);
74 OriginAccessEntry entry2("http", "hamster.com", OriginAccessEntry::AllowSubd omains, OriginAccessEntry::TreatIPAddressAsIPAddress); 74 OriginAccessEntry entry2("http", "hamster.com", OriginAccessEntry::AllowSubd omains, OriginAccessEntry::TreatIPAddressAsIPAddress);
75 OriginAccessEntry entry3("http", "com", OriginAccessEntry::AllowSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress); 75 OriginAccessEntry entry3("http", "com", OriginAccessEntry::AllowSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress);
76 EXPECT_EQ(OriginAccessEntry::MatchesOrigin, entry1.matchesOrigin(*origin)); 76 EXPECT_EQ(OriginAccessEntry::MatchesOrigin, entry1.matchesOrigin(*origin));
77 EXPECT_EQ(OriginAccessEntry::DoesNotMatchOrigin, entry2.matchesOrigin(*origi n)); 77 EXPECT_EQ(OriginAccessEntry::DoesNotMatchOrigin, entry2.matchesOrigin(*origi n));
78 EXPECT_EQ(OriginAccessEntry::MatchesOriginButIsPublicSuffix, entry3.matchesO rigin(*origin)); 78 EXPECT_EQ(OriginAccessEntry::MatchesOriginButIsPublicSuffix, entry3.matchesO rigin(*origin));
79 79
80 blink::Platform::shutdown(); 80 blink::Platform::shutdown();
81 } 81 }
82 82
83 TEST(OriginAccessEntryTest, AllowSubdomainsTest)
84 {
85 struct TestCase {
86 const char* protocol;
87 const char* host;
88 const char* origin;
89 OriginAccessEntry::MatchResult expected;
90 } inputs[] = {
91 { "http", "example.com", "http://example.com/", OriginAccessEntry::Match esOrigin },
92 { "http", "example.com", "http://www.example.com/", OriginAccessEntry::M atchesOrigin },
93 { "http", "example.com", "http://www.www.example.com/", OriginAccessEntr y::MatchesOrigin },
94 { "http", "com", "http://example.com/", OriginAccessEntry::MatchesOrigin ButIsPublicSuffix },
95 { "http", "com", "http://www.example.com/", OriginAccessEntry::MatchesOr iginButIsPublicSuffix },
96 { "http", "com", "http://www.www.example.com/", OriginAccessEntry::Match esOriginButIsPublicSuffix },
97 { "https", "example.com", "http://example.com/", OriginAccessEntry::Does NotMatchOrigin },
98 { "https", "example.com", "http://www.example.com/", OriginAccessEntry:: DoesNotMatchOrigin },
99 { "https", "example.com", "http://www.www.example.com/", OriginAccessEnt ry::DoesNotMatchOrigin },
100 { "http", "example.com", "http://beispiel.de/", OriginAccessEntry::DoesN otMatchOrigin },
101 { "http", "", "http://example.com/", OriginAccessEntry::MatchesOrigin },
102 { "http", "", "http://beispiel.de/", OriginAccessEntry::MatchesOrigin },
103 { "https", "", "http://beispiel.de/", OriginAccessEntry::DoesNotMatchOri gin },
104 };
105
106 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('c om', 'org', 'net', etc).
107 OriginAccessEntryTestPlatform platform;
108 blink::Platform::initialize(&platform);
109
110 for (auto test : inputs) {
Ryan Sleevi 2015/05/13 23:23:34 SCOPED_TRACE(test) ? (assuming Test had a PrintTo,
Ryan Sleevi 2015/05/13 23:23:34 s/auto/const auto&/
111 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t est.origin);
112 OriginAccessEntry entry1(test.protocol, test.host, OriginAccessEntry::Al lowSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress);
113 EXPECT_EQ(test.expected, entry1.matchesOrigin(*originToTest));
114
115 OriginAccessEntry entry2(test.protocol, test.host, OriginAccessEntry::Al lowSubdomains, OriginAccessEntry::TreatIPAddressAsDomain);
116 EXPECT_EQ(test.expected, entry2.matchesOrigin(*originToTest));
117 }
118
119 blink::Platform::shutdown();
120 }
121
122 TEST(OriginAccessEntryTest, DisallowSubdomainsTest)
123 {
124 struct TestCase {
125 const char* protocol;
126 const char* host;
127 const char* origin;
128 OriginAccessEntry::MatchResult expected;
129 } inputs[] = {
130 { "http", "example.com", "http://example.com/", OriginAccessEntry::Match esOrigin },
131 { "http", "example.com", "http://www.example.com/", OriginAccessEntry::D oesNotMatchOrigin },
132 { "http", "example.com", "http://www.www.example.com/", OriginAccessEntr y::DoesNotMatchOrigin },
133 { "http", "com", "http://example.com/", OriginAccessEntry::DoesNotMatchO rigin },
134 { "http", "com", "http://www.example.com/", OriginAccessEntry::DoesNotMa tchOrigin },
135 { "http", "com", "http://www.www.example.com/", OriginAccessEntry::DoesN otMatchOrigin },
136 { "https", "example.com", "http://example.com/", OriginAccessEntry::Does NotMatchOrigin },
137 { "https", "example.com", "http://www.example.com/", OriginAccessEntry:: DoesNotMatchOrigin },
138 { "https", "example.com", "http://www.www.example.com/", OriginAccessEnt ry::DoesNotMatchOrigin },
139 { "http", "example.com", "http://beispiel.de/", OriginAccessEntry::DoesN otMatchOrigin },
140 { "http", "", "http://example.com/", OriginAccessEntry::DoesNotMatchOrig in },
141 { "http", "", "http://beispiel.de/", OriginAccessEntry::DoesNotMatchOrig in },
142 { "https", "", "http://beispiel.de/", OriginAccessEntry::DoesNotMatchOri gin },
143 };
144
145 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('c om', 'org', 'net', etc).
146 OriginAccessEntryTestPlatform platform;
147 blink::Platform::initialize(&platform);
148
149 for (auto test : inputs) {
Ryan Sleevi 2015/05/13 23:23:34 const auto&
150 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t est.origin);
151 OriginAccessEntry entry1(test.protocol, test.host, OriginAccessEntry::Di sallowSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress);
152 EXPECT_EQ(test.expected, entry1.matchesOrigin(*originToTest));
153
154 OriginAccessEntry entry2(test.protocol, test.host, OriginAccessEntry::Di sallowSubdomains, OriginAccessEntry::TreatIPAddressAsDomain);
155 EXPECT_EQ(test.expected, entry2.matchesOrigin(*originToTest));
156 }
157
158 blink::Platform::shutdown();
159 }
160
161 TEST(OriginAccessEntryTest, IPAddressTest)
162 {
163 struct TestCase {
164 const char* protocol;
165 const char* host;
166 bool isIPAddress;
167 } inputs[] = {
168 { "http", "1.1.1.1", true },
169 { "http", "1.1.1.1.1", false },
170 { "http", "example.com", false },
171 { "http", "hostname.that.ends.with.a.number1", false },
172 { "http", "2001:db8::1", false },
173 { "http", "[2001:db8::1]", true },
174 { "http", "2001:db8::a", false },
175 { "http", "[2001:db8::a]", true },
176 { "http", "", false },
177 };
178
179 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('c om', 'org', 'net', etc).
180 OriginAccessEntryTestPlatform platform;
181 blink::Platform::initialize(&platform);
182
183 for (auto test : inputs) {
Ryan Sleevi 2015/05/13 23:23:34 const auto&
184 OriginAccessEntry entry(test.protocol, test.host, OriginAccessEntry::Dis allowSubdomains, OriginAccessEntry::TreatIPAddressAsDomain);
185 EXPECT_EQ(test.isIPAddress, entry.hostIsIPAddress()) << test.host;
186 }
187
188 blink::Platform::shutdown();
189 }
190
191 TEST(OriginAccessEntryTest, IPAddressAsDomainTest)
192 {
193 struct TestCase {
194 const char* protocol;
195 const char* host;
196 const char* origin;
197 OriginAccessEntry::MatchResult expected;
198 } inputs[] = {
199 { "http", "192.0.0.123", "http://192.0.0.123/", OriginAccessEntry::Match esOrigin },
200 { "http", "0.0.123", "http://192.0.0.123/", OriginAccessEntry::MatchesOr igin },
201 { "http", "0.123", "http://192.0.0.123/", OriginAccessEntry::MatchesOrig in },
202 { "http", "1.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMatc hOrigin },
203 };
204
205 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('. 123', etc).
206 OriginAccessEntryTestPlatform platform;
207 blink::Platform::initialize(&platform);
208
209 for (auto test : inputs) {
210 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t est.origin);
211 OriginAccessEntry entry(test.protocol, test.host, OriginAccessEntry::All owSubdomains, OriginAccessEntry::TreatIPAddressAsDomain);
212 EXPECT_EQ(test.expected, entry.matchesOrigin(*originToTest));
213 }
214
215 blink::Platform::shutdown();
216 }
217
218 TEST(OriginAccessEntryTest, IPAddressAsIPAddressTest)
219 {
220 struct TestCase {
221 const char* protocol;
222 const char* host;
223 const char* origin;
224 OriginAccessEntry::MatchResult expected;
225 } inputs[] = {
226 { "http", "192.0.0.123", "http://192.0.0.123/", OriginAccessEntry::Match esOrigin },
227 { "http", "0.0.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMa tchOrigin },
228 { "http", "0.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMatc hOrigin },
229 { "http", "1.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMatc hOrigin },
230 };
231
232 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('. 123', etc).
233 OriginAccessEntryTestPlatform platform;
234 blink::Platform::initialize(&platform);
235
236 for (auto test : inputs) {
237 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t est.origin);
238 OriginAccessEntry entry(test.protocol, test.host, OriginAccessEntry::All owSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress);
239 EXPECT_EQ(test.expected, entry.matchesOrigin(*originToTest));
240 }
241
242 blink::Platform::shutdown();
243 }
83 } // namespace 244 } // namespace
84 245
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698