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

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

Issue 2332263002: Updated suborigin serialization to latest spec proposal (Closed)
Patch Set: Created 4 years, 3 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
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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 221 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
222 222
223 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://te st.com"); 223 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://te st.com");
224 Suborigin suborigin; 224 Suborigin suborigin;
225 suborigin.setName("foobar"); 225 suborigin.setName("foobar");
226 EXPECT_FALSE(origin->hasSuborigin()); 226 EXPECT_FALSE(origin->hasSuborigin());
227 origin->addSuborigin(suborigin); 227 origin->addSuborigin(suborigin);
228 EXPECT_TRUE(origin->hasSuborigin()); 228 EXPECT_TRUE(origin->hasSuborigin());
229 EXPECT_EQ("foobar", origin->suborigin()->name()); 229 EXPECT_EQ("foobar", origin->suborigin()->name());
230 230
231 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 231 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
232 EXPECT_EQ("https", origin->protocol()); 232 EXPECT_EQ("https", origin->protocol());
233 EXPECT_EQ("test.com", origin->host()); 233 EXPECT_EQ("test.com", origin->host());
234 EXPECT_EQ("foobar", origin->suborigin()->name()); 234 EXPECT_EQ("foobar", origin->suborigin()->name());
235 235
236 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 236 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
237 EXPECT_TRUE(origin->hasSuborigin()); 237 EXPECT_TRUE(origin->hasSuborigin());
238 EXPECT_EQ("foobar", origin->suborigin()->name()); 238 EXPECT_EQ("foobar", origin->suborigin()->name());
239 239
240 origin = SecurityOrigin::createFromString("https://foobar+test.com"); 240 origin = SecurityOrigin::createFromString("https://foobar+test.com");
241 EXPECT_FALSE(origin->hasSuborigin()); 241 EXPECT_FALSE(origin->hasSuborigin());
242 242
243 origin = SecurityOrigin::createFromString("https.so://foobar+test.com");
244 EXPECT_FALSE(origin->hasSuborigin());
245
243 origin = SecurityOrigin::createFromString("https://_test.com"); 246 origin = SecurityOrigin::createFromString("https://_test.com");
244 EXPECT_FALSE(origin->hasSuborigin()); 247 EXPECT_FALSE(origin->hasSuborigin());
245 248
249 origin = SecurityOrigin::createFromString("https-so://_test.com");
250 EXPECT_TRUE(origin->hasSuborigin());
251 EXPECT_EQ("_test", origin->suborigin()->name());
252
246 origin = adoptRef<SecurityOrigin>(new SecurityOrigin); 253 origin = adoptRef<SecurityOrigin>(new SecurityOrigin);
247 EXPECT_FALSE(origin->hasSuborigin()); 254 EXPECT_FALSE(origin->hasSuborigin());
248 255
249 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 256 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
250 Suborigin emptySuborigin; 257 Suborigin emptySuborigin;
251 EXPECT_DEATH(origin->addSuborigin(emptySuborigin), ""); 258 EXPECT_DEATH(origin->addSuborigin(emptySuborigin), "");
252 } 259 }
253 260
254 TEST_F(SecurityOriginTest, SuboriginsParsing) 261 TEST_F(SecurityOriginTest, SuboriginsParsing)
255 { 262 {
256 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 263 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
257 String host, realHost, suborigin; 264 String protocol, realProtocol, host, realHost, suborigin;
265 protocol = "https";
258 host = "test.com"; 266 host = "test.com";
259 EXPECT_FALSE(SecurityOrigin::deserializeSuboriginAndHost(host, suborigin, re alHost)); 267 EXPECT_FALSE(SecurityOrigin::deserializeSuboriginAndProtocolAndHost(protocol , host, suborigin, realProtocol, realHost));
260 268
261 host = "foobar_test.com"; 269 protocol = "https-so";
262 EXPECT_TRUE(SecurityOrigin::deserializeSuboriginAndHost(host, suborigin, rea lHost)); 270 host = "foobar.test.com";
271 EXPECT_TRUE(SecurityOrigin::deserializeSuboriginAndProtocolAndHost(protocol, host, suborigin, realProtocol, realHost));
272 EXPECT_EQ("https", realProtocol);
263 EXPECT_EQ("test.com", realHost); 273 EXPECT_EQ("test.com", realHost);
264 EXPECT_EQ("foobar", suborigin); 274 EXPECT_EQ("foobar", suborigin);
265 275
266 RefPtr<SecurityOrigin> origin; 276 RefPtr<SecurityOrigin> origin;
267 StringBuilder builder; 277 StringBuilder builder;
268 278
269 origin = SecurityOrigin::createFromString("https://foobar_test.com"); 279 origin = SecurityOrigin::createFromString("https-so://foobar.test.com");
270 origin->buildRawString(builder, true); 280 origin->buildRawString(builder, true);
271 EXPECT_EQ("https://foobar_test.com", builder.toString()); 281 EXPECT_EQ("https-so://foobar.test.com", builder.toString());
272 EXPECT_EQ("https://foobar_test.com", origin->toString()); 282 EXPECT_EQ("https-so://foobar.test.com", origin->toString());
273 builder.clear(); 283 builder.clear();
274 origin->buildRawString(builder, false); 284 origin->buildRawString(builder, false);
275 EXPECT_EQ("https://test.com", builder.toString()); 285 EXPECT_EQ("https://test.com", builder.toString());
276 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString()); 286 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString());
277 287
278 Suborigin suboriginObj; 288 Suborigin suboriginObj;
279 suboriginObj.setName("foobar"); 289 suboriginObj.setName("foobar");
280 builder.clear(); 290 builder.clear();
281 origin = SecurityOrigin::createFromString("https://test.com"); 291 origin = SecurityOrigin::createFromString("https://test.com");
282 origin->addSuborigin(suboriginObj); 292 origin->addSuborigin(suboriginObj);
283 origin->buildRawString(builder, true); 293 origin->buildRawString(builder, true);
284 EXPECT_EQ("https://foobar_test.com", builder.toString()); 294 EXPECT_EQ("https-so://foobar.test.com", builder.toString());
285 EXPECT_EQ("https://foobar_test.com", origin->toString()); 295 EXPECT_EQ("https-so://foobar.test.com", origin->toString());
286 builder.clear(); 296 builder.clear();
287 origin->buildRawString(builder, false); 297 origin->buildRawString(builder, false);
288 EXPECT_EQ("https://test.com", builder.toString()); 298 EXPECT_EQ("https://test.com", builder.toString());
289 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString()); 299 EXPECT_EQ("https://test.com", origin->toPhysicalOriginString());
290 } 300 }
291 301
292 TEST_F(SecurityOriginTest, SuboriginsIsSameSchemeHostPortAndSuborigin) 302 TEST_F(SecurityOriginTest, SuboriginsIsSameSchemeHostPortAndSuborigin)
293 { 303 {
294 blink::RuntimeEnabledFeatures::setSuboriginsEnabled(true); 304 blink::RuntimeEnabledFeatures::setSuboriginsEnabled(true);
295 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https://fo obar_test.com"); 305 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString("https-so:/ /foobar.test.com");
296 RefPtr<SecurityOrigin> other1 = SecurityOrigin::createFromString("https://ba zbar_test.com"); 306 RefPtr<SecurityOrigin> other1 = SecurityOrigin::createFromString("https-so:/ /bazbar.test.com");
297 RefPtr<SecurityOrigin> other2 = SecurityOrigin::createFromString("http://foo bar_test.com"); 307 RefPtr<SecurityOrigin> other2 = SecurityOrigin::createFromString("http-so:// foobar.test.com");
298 RefPtr<SecurityOrigin> other3 = SecurityOrigin::createFromString("https://fo obar_test.com:1234"); 308 RefPtr<SecurityOrigin> other3 = SecurityOrigin::createFromString("https-so:/ /foobar.test.com:1234");
299 RefPtr<SecurityOrigin> other4 = SecurityOrigin::createFromString("https://te st.com"); 309 RefPtr<SecurityOrigin> other4 = SecurityOrigin::createFromString("https://te st.com");
300 310
301 EXPECT_TRUE(origin->isSameSchemeHostPortAndSuborigin(origin.get())); 311 EXPECT_TRUE(origin->isSameSchemeHostPortAndSuborigin(origin.get()));
302 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other1.get())); 312 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other1.get()));
303 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other2.get())); 313 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other2.get()));
304 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other3.get())); 314 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other3.get()));
305 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other4.get())); 315 EXPECT_FALSE(origin->isSameSchemeHostPortAndSuborigin(other4.get()));
306 } 316 }
307 317
308 TEST_F(SecurityOriginTest, CanAccess) 318 TEST_F(SecurityOriginTest, CanAccess)
309 { 319 {
310 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 320 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
311 321
312 struct TestCase { 322 struct TestCase {
313 bool canAccess; 323 bool canAccess;
314 bool canAccessCheckSuborigins; 324 bool canAccessCheckSuborigins;
315 const char* origin1; 325 const char* origin1;
316 const char* origin2; 326 const char* origin2;
317 }; 327 };
318 328
319 TestCase tests[] = { 329 TestCase tests[] = {
320 { true, true, "https://foobar.com", "https://foobar.com" }, 330 { true, true, "https://foobar.com", "https://foobar.com" },
321 { false, false, "https://foobar.com", "https://bazbar.com" }, 331 { false, false, "https://foobar.com", "https://bazbar.com" },
322 { true, false, "https://foobar.com", "https://name_foobar.com" }, 332 { true, false, "https://foobar.com", "https-so://name.foobar.com" },
323 { true, false, "https://name_foobar.com", "https://foobar.com" }, 333 { true, false, "https-so://name.foobar.com", "https://foobar.com" },
324 { true, true, "https://name_foobar.com", "https://name_foobar.com" }, 334 { true, true, "https-so://name.foobar.com", "https-so://name.foobar.com" },
325 }; 335 };
326 336
327 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) { 337 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) {
328 RefPtr<SecurityOrigin> origin1 = SecurityOrigin::createFromString(tests[ i].origin1); 338 RefPtr<SecurityOrigin> origin1 = SecurityOrigin::createFromString(tests[ i].origin1);
329 RefPtr<SecurityOrigin> origin2 = SecurityOrigin::createFromString(tests[ i].origin2); 339 RefPtr<SecurityOrigin> origin2 = SecurityOrigin::createFromString(tests[ i].origin2);
330 EXPECT_EQ(tests[i].canAccess, origin1->canAccess(origin2.get())); 340 EXPECT_EQ(tests[i].canAccess, origin1->canAccess(origin2.get()));
331 EXPECT_EQ(tests[i].canAccessCheckSuborigins, origin1->canAccessCheckSubo rigins(origin2.get())); 341 EXPECT_EQ(tests[i].canAccessCheckSuborigins, origin1->canAccessCheckSubo rigins(origin2.get()));
332 } 342 }
333 } 343 }
334 344
335 TEST_F(SecurityOriginTest, CanRequest) 345 TEST_F(SecurityOriginTest, CanRequest)
336 { 346 {
337 RuntimeEnabledFeatures::setSuboriginsEnabled(true); 347 RuntimeEnabledFeatures::setSuboriginsEnabled(true);
338 348
339 struct TestCase { 349 struct TestCase {
340 bool canRequest; 350 bool canRequest;
341 bool canRequestNoSuborigin; 351 bool canRequestNoSuborigin;
342 const char* origin; 352 const char* origin;
343 const char* url; 353 const char* url;
344 }; 354 };
345 355
346 TestCase tests[] = { 356 TestCase tests[] = {
347 { true, true, "https://foobar.com", "https://foobar.com" }, 357 { true, true, "https://foobar.com", "https://foobar.com" },
348 { false, false, "https://foobar.com", "https://bazbar.com" }, 358 { false, false, "https://foobar.com", "https://bazbar.com" },
349 { true, false, "https://name_foobar.com", "https://foobar.com" }, 359 { true, false, "https-so://name.foobar.com", "https://foobar.com" },
350 { false, false, "https://name_foobar.com", "https://bazbar.com" }, 360 { false, false, "https-so://name.foobar.com", "https://bazbar.com" },
351 }; 361 };
352 362
353 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) { 363 for (size_t i = 0; i < WTF_ARRAY_LENGTH(tests); ++i) {
354 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString(tests[i ].origin); 364 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromString(tests[i ].origin);
355 blink::KURL url(blink::ParsedURLString, tests[i].url); 365 blink::KURL url(blink::ParsedURLString, tests[i].url);
356 EXPECT_EQ(tests[i].canRequest, origin->canRequest(url)); 366 EXPECT_EQ(tests[i].canRequest, origin->canRequest(url));
357 EXPECT_EQ(tests[i].canRequestNoSuborigin, origin->canRequestNoSuborigin( url)); 367 EXPECT_EQ(tests[i].canRequestNoSuborigin, origin->canRequestNoSuborigin( url));
358 } 368 }
359 } 369 }
360 370
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 RefPtr<SecurityOrigin> uniqueOrigin = SecurityOrigin::createUnique(); 450 RefPtr<SecurityOrigin> uniqueOrigin = SecurityOrigin::createUnique();
441 RefPtr<SecurityOrigin> tupleOrigin = SecurityOrigin::createFromString("http: //example.com"); 451 RefPtr<SecurityOrigin> tupleOrigin = SecurityOrigin::createFromString("http: //example.com");
442 452
443 EXPECT_TRUE(uniqueOrigin->isSameSchemeHostPort(uniqueOrigin.get())); 453 EXPECT_TRUE(uniqueOrigin->isSameSchemeHostPort(uniqueOrigin.get()));
444 EXPECT_FALSE(SecurityOrigin::createUnique()->isSameSchemeHostPort(uniqueOrig in.get())); 454 EXPECT_FALSE(SecurityOrigin::createUnique()->isSameSchemeHostPort(uniqueOrig in.get()));
445 EXPECT_FALSE(tupleOrigin->isSameSchemeHostPort(uniqueOrigin.get())); 455 EXPECT_FALSE(tupleOrigin->isSameSchemeHostPort(uniqueOrigin.get()));
446 EXPECT_FALSE(uniqueOrigin->isSameSchemeHostPort(tupleOrigin.get())); 456 EXPECT_FALSE(uniqueOrigin->isSameSchemeHostPort(tupleOrigin.get()));
447 } 457 }
448 458
449 } // namespace blink 459 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698