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

Side by Side Diff: net/cookies/parsed_cookie_unittest.cc

Issue 1868493002: Ignore cookies with invalid 'SameSite' attribute values. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename Created 4 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
« no previous file with comments | « net/cookies/parsed_cookie.cc ('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 // Copyright (c) 2012 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 <string> 5 #include <string>
6 6
7 #include "net/cookies/cookie_constants.h" 7 #include "net/cookies/cookie_constants.h"
8 #include "net/cookies/parsed_cookie.h" 8 #include "net/cookies/parsed_cookie.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 ParsedCookie pc("name=value"); 453 ParsedCookie pc("name=value");
454 EXPECT_TRUE(pc.IsValid()); 454 EXPECT_TRUE(pc.IsValid());
455 455
456 EXPECT_EQ("name=value", pc.ToCookieLine()); 456 EXPECT_EQ("name=value", pc.ToCookieLine());
457 EXPECT_EQ(CookieSameSite::DEFAULT_MODE, pc.SameSite()); 457 EXPECT_EQ(CookieSameSite::DEFAULT_MODE, pc.SameSite());
458 458
459 // Test each priority, expect case-insensitive compare. 459 // Test each priority, expect case-insensitive compare.
460 EXPECT_TRUE(pc.SetSameSite("strict")); 460 EXPECT_TRUE(pc.SetSameSite("strict"));
461 EXPECT_EQ("name=value; samesite=strict", pc.ToCookieLine()); 461 EXPECT_EQ("name=value; samesite=strict", pc.ToCookieLine());
462 EXPECT_EQ(CookieSameSite::STRICT_MODE, pc.SameSite()); 462 EXPECT_EQ(CookieSameSite::STRICT_MODE, pc.SameSite());
463 EXPECT_TRUE(pc.IsValid());
463 464
464 EXPECT_TRUE(pc.SetSameSite("lAx")); 465 EXPECT_TRUE(pc.SetSameSite("lAx"));
465 EXPECT_EQ("name=value; samesite=lAx", pc.ToCookieLine()); 466 EXPECT_EQ("name=value; samesite=lAx", pc.ToCookieLine());
466 EXPECT_EQ(CookieSameSite::LAX_MODE, pc.SameSite()); 467 EXPECT_EQ(CookieSameSite::LAX_MODE, pc.SameSite());
468 EXPECT_TRUE(pc.IsValid());
467 469
468 EXPECT_TRUE(pc.SetSameSite("LAX")); 470 EXPECT_TRUE(pc.SetSameSite("LAX"));
469 EXPECT_EQ("name=value; samesite=LAX", pc.ToCookieLine()); 471 EXPECT_EQ("name=value; samesite=LAX", pc.ToCookieLine());
470 EXPECT_EQ(CookieSameSite::LAX_MODE, pc.SameSite()); 472 EXPECT_EQ(CookieSameSite::LAX_MODE, pc.SameSite());
471 473 EXPECT_TRUE(pc.IsValid());
472 // Interpret invalid priority values as CookieSameSite::DEFAULT_MODE.
473 EXPECT_TRUE(pc.SetSameSite("Blah"));
474 EXPECT_EQ("name=value; samesite=Blah", pc.ToCookieLine());
475 EXPECT_EQ(CookieSameSite::DEFAULT_MODE, pc.SameSite());
476
477 EXPECT_TRUE(pc.SetSameSite("lowerest"));
478 EXPECT_EQ("name=value; samesite=lowerest", pc.ToCookieLine());
479 EXPECT_EQ(CookieSameSite::DEFAULT_MODE, pc.SameSite());
480 474
481 EXPECT_TRUE(pc.SetSameSite("")); 475 EXPECT_TRUE(pc.SetSameSite(""));
482 EXPECT_EQ("name=value", pc.ToCookieLine()); 476 EXPECT_EQ("name=value", pc.ToCookieLine());
483 EXPECT_EQ(CookieSameSite::DEFAULT_MODE, pc.SameSite()); 477 EXPECT_EQ(CookieSameSite::DEFAULT_MODE, pc.SameSite());
478 EXPECT_TRUE(pc.IsValid());
479
480 EXPECT_TRUE(pc.SetSameSite("Blah"));
481 EXPECT_FALSE(pc.IsValid());
482 }
483
484 TEST(ParsedCookieTest, InvalidSameSiteValue) {
485 struct TestCase {
486 const char* cookie;
487 bool valid;
488 CookieSameSite mode;
489 } cases[]{{"n=v; samesite=strict", true, CookieSameSite::STRICT_MODE},
490 {"n=v; samesite=lax", true, CookieSameSite::LAX_MODE},
491 {"n=v; samesite=boo", false, CookieSameSite::DEFAULT_MODE},
492 {"n=v; samesite", false, CookieSameSite::DEFAULT_MODE}};
493
494 for (const auto& test : cases) {
495 SCOPED_TRACE(test.cookie);
496 ParsedCookie pc(test.cookie);
497 EXPECT_EQ(test.valid, pc.IsValid());
498 EXPECT_EQ(test.mode, pc.SameSite());
499 }
484 } 500 }
485 501
486 TEST(ParsedCookieTest, InvalidNonAlphanumericChars) { 502 TEST(ParsedCookieTest, InvalidNonAlphanumericChars) {
487 ParsedCookie pc1("name=\x05"); 503 ParsedCookie pc1("name=\x05");
488 ParsedCookie pc2( 504 ParsedCookie pc2(
489 "name=foo" 505 "name=foo"
490 "\x1c" 506 "\x1c"
491 "bar"); 507 "bar");
492 ParsedCookie pc3( 508 ParsedCookie pc3(
493 "name=foobar" 509 "name=foobar"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 EXPECT_TRUE(pc5.IsValid()); 594 EXPECT_TRUE(pc5.IsValid());
579 EXPECT_EQ(pc5_literal, pc5.ToCookieLine()); 595 EXPECT_EQ(pc5_literal, pc5.ToCookieLine());
580 EXPECT_TRUE(pc6.IsValid()); 596 EXPECT_TRUE(pc6.IsValid());
581 EXPECT_EQ(pc6_literal, pc6.ToCookieLine()); 597 EXPECT_EQ(pc6_literal, pc6.ToCookieLine());
582 EXPECT_TRUE(pc7.IsValid()); 598 EXPECT_TRUE(pc7.IsValid());
583 EXPECT_EQ(pc7_literal, pc7.ToCookieLine()); 599 EXPECT_EQ(pc7_literal, pc7.ToCookieLine());
584 EXPECT_TRUE(pc8.IsValid()); 600 EXPECT_TRUE(pc8.IsValid());
585 EXPECT_EQ(pc8_literal, pc8.ToCookieLine()); 601 EXPECT_EQ(pc8_literal, pc8.ToCookieLine());
586 } 602 }
587 } 603 }
OLDNEW
« no previous file with comments | « net/cookies/parsed_cookie.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698