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

Side by Side Diff: third_party/WebKit/Source/platform/weborigin/SecurityOriginTest.cpp

Issue 2332263002: Updated suborigin serialization to latest spec proposal (Closed)
Patch Set: Actually disable test Created 4 years, 2 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
« no previous file with comments | « third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 18 matching lines...) Expand all
29 */ 29 */
30 30
31 #include "platform/weborigin/SecurityOrigin.h" 31 #include "platform/weborigin/SecurityOrigin.h"
32 32
33 #include "platform/RuntimeEnabledFeatures.h" 33 #include "platform/RuntimeEnabledFeatures.h"
34 #include "platform/blob/BlobURL.h" 34 #include "platform/blob/BlobURL.h"
35 #include "platform/weborigin/KURL.h" 35 #include "platform/weborigin/KURL.h"
36 #include "platform/weborigin/SecurityPolicy.h" 36 #include "platform/weborigin/SecurityPolicy.h"
37 #include "platform/weborigin/Suborigin.h" 37 #include "platform/weborigin/Suborigin.h"
38 #include "testing/gtest/include/gtest/gtest.h" 38 #include "testing/gtest/include/gtest/gtest.h"
39 #include "url/url_util.h"
39 #include "wtf/text/StringBuilder.h" 40 #include "wtf/text/StringBuilder.h"
40 #include "wtf/text/WTFString.h" 41 #include "wtf/text/WTFString.h"
41 42
42 namespace blink { 43 namespace blink {
43 44
44 const int MaxAllowedPort = 65535; 45 const int MaxAllowedPort = 65535;
45 46
46 class SecurityOriginTest : public ::testing::Test { }; 47 class SecurityOriginTest : public ::testing::Test {
48 public:
49 void SetUp() override
50 {
51 url::AddStandardScheme("http-so", url::SCHEME_WITH_PORT);
52 url::AddStandardScheme("https-so", url::SCHEME_WITH_PORT);
53 }
54 };
47 55
48 TEST_F(SecurityOriginTest, InvalidPortsCreateUniqueOrigins) 56 TEST_F(SecurityOriginTest, InvalidPortsCreateUniqueOrigins)
49 { 57 {
50 int ports[] = { -100, -1, MaxAllowedPort + 1, 1000000 }; 58 int ports[] = { -100, -1, MaxAllowedPort + 1, 1000000 };
51 59
52 for (size_t i = 0; i < WTF_ARRAY_LENGTH(ports); ++i) { 60 for (size_t i = 0; i < WTF_ARRAY_LENGTH(ports); ++i) {
53 RefPtr<SecurityOrigin> origin = SecurityOrigin::create("http", "example. com", ports[i]); 61 RefPtr<SecurityOrigin> origin = SecurityOrigin::create("http", "example. com", ports[i]);
54 EXPECT_TRUE(origin->isUnique()) << "Port " << ports[i] << " should have generated a unique origin."; 62 EXPECT_TRUE(origin->isUnique()) << "Port " << ports[i] << " should have generated a unique origin.";
55 } 63 }
56 } 64 }
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 229 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
222 230
223 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://te st.com"); 231 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://te st.com");
224 Suborigin suborigin; 232 Suborigin suborigin;
225 suborigin.setName("foobar"); 233 suborigin.setName("foobar");
226 EXPECT_FALSE(origin->hasSuborigin()); 234 EXPECT_FALSE(origin->hasSuborigin());
227 origin->addSuborigin(suborigin); 235 origin->addSuborigin(suborigin);
228 EXPECT_TRUE(origin->hasSuborigin()); 236 EXPECT_TRUE(origin->hasSuborigin());
229 EXPECT_EQ("foobar", origin->suborigin()->name()); 237 EXPECT_EQ("foobar", origin->suborigin()->name());
230 238
231 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 239 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
232 EXPECT_EQ("https", origin->protocol()); 240 EXPECT_EQ("https", origin->protocol());
233 EXPECT_EQ("test.com", origin->host()); 241 EXPECT_EQ("test.com", origin->host());
234 EXPECT_EQ("foobar", origin->suborigin()->name()); 242 EXPECT_EQ("foobar", origin->suborigin()->name());
235 243
236 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 244 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
237 EXPECT_TRUE(origin->hasSuborigin()); 245 EXPECT_TRUE(origin->hasSuborigin());
238 EXPECT_EQ("foobar", origin->suborigin()->name()); 246 EXPECT_EQ("foobar", origin->suborigin()->name());
239 247
240 origin = SecurityOrigin::createFromString("https://foobar+test.com"); 248 origin = SecurityOrigin::createFromString("https://foobar+test.com");
241 EXPECT_FALSE(origin->hasSuborigin()); 249 EXPECT_FALSE(origin->hasSuborigin());
242 250
251 origin = SecurityOrigin::createFromString("https.so://foobar+test.com");
252 EXPECT_FALSE(origin->hasSuborigin());
253
243 origin = SecurityOrigin::createFromString("https://_test.com"); 254 origin = SecurityOrigin::createFromString("https://_test.com");
244 EXPECT_FALSE(origin->hasSuborigin()); 255 EXPECT_FALSE(origin->hasSuborigin());
245 256
257 origin = SecurityOrigin::createFromString("https-so://_test.com");
258 EXPECT_TRUE(origin->hasSuborigin());
259 EXPECT_EQ("_test", origin->suborigin()->name());
260
261 origin = SecurityOrigin::createFromString("https-so-so://foobar.test.com");
262 EXPECT_FALSE(origin->hasSuborigin());
263
246 origin = adoptRef<SecurityOrigin>(new SecurityOrigin); 264 origin = adoptRef<SecurityOrigin>(new SecurityOrigin);
247 EXPECT_FALSE(origin->hasSuborigin()); 265 EXPECT_FALSE(origin->hasSuborigin());
248 266
249 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 267 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
250 Suborigin emptySuborigin; 268 Suborigin emptySuborigin;
251 EXPECT_DEATH(origin->addSuborigin(emptySuborigin), ""); 269 EXPECT_DEATH(origin->addSuborigin(emptySuborigin), "");
252 } 270 }
253 271
254 TEST_F(SecurityOriginTest, SuboriginsParsing) 272 TEST_F(SecurityOriginTest, SuboriginsParsing)
255 { 273 {
256 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 274 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
257 String host, realHost, suborigin; 275 String protocol, realProtocol, host, realHost, suborigin;
276 protocol = "https";
258 host = "test.com"; 277 host = "test.com";
259 EXPECT_FALSE(SecurityOrigin::deserializeSuboriginAndHost(host, suborigin, re alHost)); 278 EXPECT_FALSE(SecurityOrigin::deserializeSuboriginAndProtocolAndHost(protocol , host, suborigin, realProtocol, realHost));
260 279
261 host = "foobar_test.com"; 280 protocol = "https-so";
262 EXPECT_TRUE(SecurityOrigin::deserializeSuboriginAndHost(host, suborigin, rea lHost)); 281 host = "foobar.test.com";
282 EXPECT_TRUE(SecurityOrigin::deserializeSuboriginAndProtocolAndHost(protocol, host, suborigin, realProtocol, realHost));
283 EXPECT_EQ("https", realProtocol);
263 EXPECT_EQ("test.com", realHost); 284 EXPECT_EQ("test.com", realHost);
264 EXPECT_EQ("foobar", suborigin); 285 EXPECT_EQ("foobar", suborigin);
265 286
266 RefPtr<SecurityOrigin> origin; 287 RefPtr<SecurityOrigin> origin;
267 StringBuilder builder; 288 StringBuilder builder;
268 289
269 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 290 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
270 origin->buildRawString(builder, true); 291 origin->buildRawString(builder, true);
271 EXPECT_EQ("https://foobar_test.com", builder.toString()); 292 EXPECT_EQ("https-so://foobar.test.com", builder.toString());
272 EXPECT_EQ("https://foobar_test.com", origin->toString()); 293 EXPECT_EQ("https-so://foobar.test.com", origin->toString());
273 builder.clear(); 294 builder.clear();
274 origin->buildRawString(builder, false); 295 origin->buildRawString(builder, false);
275 EXPECT_EQ("https://test.com", builder.toString()); 296 EXPECT_EQ("https://test.com", builder.toString());
276 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString()); 297 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString());
277 298
278 Suborigin suboriginObj; 299 Suborigin suboriginObj;
279 suboriginObj.setName("foobar"); 300 suboriginObj.setName("foobar");
280 builder.clear(); 301 builder.clear();
281 origin = SecurityOrigin::createFromString("https://test.com"); 302 origin = SecurityOrigin::createFromString("https://test.com");
282 origin->addSuborigin(suboriginObj); 303 origin->addSuborigin(suboriginObj);
283 origin->buildRawString(builder, true); 304 origin->buildRawString(builder, true);
284 EXPECT_EQ("https://foobar_test.com", builder.toString()); 305 EXPECT_EQ("https-so://foobar.test.com", builder.toString());
285 EXPECT_EQ("https://foobar_test.com", origin->toString()); 306 EXPECT_EQ("https-so://foobar.test.com", origin->toString());
286 builder.clear(); 307 builder.clear();
287 origin->buildRawString(builder, false); 308 origin->buildRawString(builder, false);
288 EXPECT_EQ("https://test.com", builder.toString()); 309 EXPECT_EQ("https://test.com", builder.toString());
289 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString()); 310 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString());
290 } 311 }
291 312
292 TEST_F(SecurityOriginTest, SuboriginsIsSameSchemeHostPortAndSuborigin) 313 TEST_F(SecurityOriginTest, SuboriginsIsSameSchemeHostPortAndSuborigin)
293 { 314 {
294 blink::RuntimeEnabledFeatures::setSuboriginsEnabled(true); 315 blink::RuntimeEnabledFeatures::setSuboriginsEnabled(true);
295 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://fo obar_test.com"); 316 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https-so:/ /foobar.test.com");
296 RefPtr<SecurityOrigin> other1 = SecurityOrigin::createFromString("https://ba zbar_test.com"); 317 RefPtr<SecurityOrigin> other1 = SecurityOrigin::createFromString("https-so:/ /bazbar.test.com");
297 RefPtr<SecurityOrigin> other2 = SecurityOrigin::createFromString("http://foo bar_test.com"); 318 RefPtr<SecurityOrigin> other2 = SecurityOrigin::createFromString("http-so:// foobar.test.com");
298 RefPtr<SecurityOrigin> other3 = SecurityOrigin::createFromString("https://fo obar_test.com:1234"); 319 RefPtr<SecurityOrigin> other3 = SecurityOrigin::createFromString("https-so:/ /foobar.test.com:1234");
299 RefPtr<SecurityOrigin> other4 = SecurityOrigin::createFromString("https://te st.com"); 320 RefPtr<SecurityOrigin> other4 = SecurityOrigin::createFromString("https://te st.com");
300 321
301 EXPECT_TRUE(origin->isSameSchemeHostPortAndSuborigin(origin.get())); 322 EXPECT_TRUE(origin->isSameSchemeHostPortAndSuborigin(origin.get()));
302 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other1.get())); 323 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other1.get()));
303 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other2.get())); 324 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other2.get()));
304 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other3.get())); 325 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other3.get()));
305 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other4.get())); 326 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other4.get()));
306 } 327 }
307 328
308 TEST_F(SecurityOriginTest, CanAccess) 329 TEST_F(SecurityOriginTest, CanAccess)
309 { 330 {
310 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 331 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
311 332
312 struct TestCase { 333 struct TestCase {
313 bool canAccess; 334 bool canAccess;
314 bool canAccessCheckSuborigins; 335 bool canAccessCheckSuborigins;
315 const char* origin1; 336 const char* origin1;
316 const char* origin2; 337 const char* origin2;
317 }; 338 };
318 339
319 TestCase tests[] = { 340 TestCase tests[] = {
320 { true, true, "https://foobar.com", "https://foobar.com" }, 341 { true, true, "https://foobar.com", "https://foobar.com" },
321 { false, false, "https://foobar.com", "https://bazbar.com" }, 342 { false, false, "https://foobar.com", "https://bazbar.com" },
322 { true, false, "https://foobar.com", "https://name_foobar.com" }, 343 { true, false, "https://foobar.com", "https-so://name.foobar.com" },
323 { true, false, "https://name_foobar.com", "https://foobar.com" }, 344 { true, false, "https-so://name.foobar.com", "https://foobar.com" },
324 { true, true, "https://name_foobar.com", "https://name_foobar.com" }, 345 { true, true, "https-so://name.foobar.com", "https-so://name.foobar.com" },
325 }; 346 };
326 347
327 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) { 348 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) {
328 RefPtr<SecurityOrigin> origin1 = SecurityOrigin::createFromString(tests[ i].origin1); 349 RefPtr<SecurityOrigin> origin1 = SecurityOrigin::createFromString(tests[ i].origin1);
329 RefPtr<SecurityOrigin> origin2 = SecurityOrigin::createFromString(tests[ i].origin2); 350 RefPtr<SecurityOrigin> origin2 = SecurityOrigin::createFromString(tests[ i].origin2);
330 EXPECT_EQ(tests[i].canAccess, origin1->canAccess(origin2.get())); 351 EXPECT_EQ(tests[i].canAccess, origin1->canAccess(origin2.get()));
331 EXPECT_EQ(tests[i].canAccessCheckSuborigins, origin1->canAccessCheckSubo rigins(origin2.get())); 352 EXPECT_EQ(tests[i].canAccessCheckSuborigins, origin1->canAccessCheckSubo rigins(origin2.get()));
332 } 353 }
333 } 354 }
334 355
335 TEST_F(SecurityOriginTest, CanRequest) 356 TEST_F(SecurityOriginTest, CanRequest)
336 { 357 {
337 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 358 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
338 359
339 struct TestCase { 360 struct TestCase {
340 bool canRequest; 361 bool canRequest;
341 bool canRequestNoSuborigin; 362 bool canRequestNoSuborigin;
342 const char* origin; 363 const char* origin;
343 const char* url; 364 const char* url;
344 }; 365 };
345 366
346 TestCase tests[] = { 367 TestCase tests[] = {
347 { true, true, "https://foobar.com", "https://foobar.com" }, 368 { true, true, "https://foobar.com", "https://foobar.com" },
348 { false, false, "https://foobar.com", "https://bazbar.com" }, 369 { false, false, "https://foobar.com", "https://bazbar.com" },
349 { true, false, "https://name_foobar.com", "https://foobar.com" }, 370 { true, false, "https-so://name.foobar.com", "https://foobar.com" },
350 { false, false, "https://name_foobar.com", "https://bazbar.com" }, 371 { false, false, "https-so://name.foobar.com", "https://bazbar.com" },
351 }; 372 };
352 373
353 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) { 374 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) {
354 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString(tests[i ].origin); 375 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString(tests[i ].origin);
355 blink::KURL url(blink::ParsedURLString, tests[i].url); 376 blink::KURL url(blink::ParsedURLString, tests[i].url);
356 EXPECT_EQ(tests[i].canRequest, origin->canRequest(url)); 377 EXPECT_EQ(tests[i].canRequest, origin->canRequest(url));
357 EXPECT_EQ(tests[i].canRequestNoSuborigin, origin->canRequestNoSuborigin( url)); 378 EXPECT_EQ(tests[i].canRequestNoSuborigin, origin->canRequestNoSuborigin( url));
358 } 379 }
359 } 380 }
360 381
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 RefPtr<SecurityOrigin> uniqueOrigin = SecurityOrigin::createUnique(); 461 RefPtr<SecurityOrigin> uniqueOrigin = SecurityOrigin::createUnique();
441 RefPtr<SecurityOrigin> tupleOrigin = SecurityOrigin::createFromString("http: //example.com"); 462 RefPtr<SecurityOrigin> tupleOrigin = SecurityOrigin::createFromString("http: //example.com");
442 463
443 EXPECT_TRUE(uniqueOrigin->isSameSchemeHostPort(uniqueOrigin.get())); 464 EXPECT_TRUE(uniqueOrigin->isSameSchemeHostPort(uniqueOrigin.get()));
444 EXPECT_FALSE(SecurityOrigin::createUnique()->isSameSchemeHostPort(uniqueOrig in.get())); 465 EXPECT_FALSE(SecurityOrigin::createUnique()->isSameSchemeHostPort(uniqueOrig in.get()));
445 EXPECT_FALSE(tupleOrigin->isSameSchemeHostPort(uniqueOrigin.get())); 466 EXPECT_FALSE(tupleOrigin->isSameSchemeHostPort(uniqueOrigin.get()));
446 EXPECT_FALSE(uniqueOrigin->isSameSchemeHostPort(tupleOrigin.get())); 467 EXPECT_FALSE(uniqueOrigin->isSameSchemeHostPort(tupleOrigin.get()));
447 } 468 }
448 469
449 } // namespace blink 470 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698