| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/cookies/cookie_options.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace net { |
| namespace { |
| |
| TEST(CookieOptionsTest, SameSiteCookieContextType) { |
| using ContextType = CookieOptions::SameSiteCookieContext::ContextType; |
| EXPECT_EQ("0", ::testing::PrintToString(ContextType::CROSS_SITE)); |
| EXPECT_EQ("1", |
| ::testing::PrintToString(ContextType::SAME_SITE_LAX_METHOD_UNSAFE)); |
| EXPECT_EQ("2", ::testing::PrintToString(ContextType::SAME_SITE_LAX)); |
| EXPECT_EQ("3", ::testing::PrintToString(ContextType::SAME_SITE_STRICT)); |
| } |
| |
| TEST(CookieOptionsTest, SameSiteCookieContext) { |
| using SameSiteCookieContext = CookieOptions::SameSiteCookieContext; |
| SameSiteCookieContext cross_cross( |
| SameSiteCookieContext::ContextType::CROSS_SITE); |
| SameSiteCookieContext lax_lax( |
| SameSiteCookieContext::ContextType::SAME_SITE_LAX); |
| SameSiteCookieContext strict_strict( |
| SameSiteCookieContext::ContextType::SAME_SITE_STRICT); |
| SameSiteCookieContext strict_cross( |
| SameSiteCookieContext::ContextType::SAME_SITE_STRICT, |
| SameSiteCookieContext::ContextType::CROSS_SITE); |
| SameSiteCookieContext strict_lax( |
| SameSiteCookieContext::ContextType::SAME_SITE_STRICT, |
| SameSiteCookieContext::ContextType::SAME_SITE_LAX); |
| SameSiteCookieContext lax_cross( |
| SameSiteCookieContext::ContextType::SAME_SITE_LAX, |
| SameSiteCookieContext::ContextType::CROSS_SITE); |
| |
| SameSiteCookieContext::ContextMetadata metadata1; |
| metadata1.cross_site_redirect_downgrade = SameSiteCookieContext:: |
| ContextMetadata::ContextDowngradeType::kStrictToLax; |
| metadata1.redirect_type_bug_1221316 = SameSiteCookieContext::ContextMetadata:: |
| ContextRedirectTypeBug1221316::kPartialSameSiteRedirect; |
| metadata1.http_method_bug_1221316 = |
| SameSiteCookieContext::ContextMetadata::HttpMethod::kGet; |
| SameSiteCookieContext::ContextMetadata metadata2; |
| metadata2.cross_site_redirect_downgrade = SameSiteCookieContext:: |
| ContextMetadata::ContextDowngradeType::kStrictToLax; |
| metadata2.redirect_type_bug_1221316 = SameSiteCookieContext::ContextMetadata:: |
| ContextRedirectTypeBug1221316::kPartialSameSiteRedirect; |
| metadata2.http_method_bug_1221316 = |
| SameSiteCookieContext::ContextMetadata::HttpMethod::kPost; |
| SameSiteCookieContext context_with_metadata( |
| SameSiteCookieContext::ContextType::SAME_SITE_STRICT, |
| SameSiteCookieContext::ContextType::SAME_SITE_STRICT, metadata1, |
| metadata2); |
| |
| EXPECT_EQ( |
| "{ context: 0, schemeful_context: 0, " |
| "metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 }, " |
| "schemeful_metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 } }", |
| ::testing::PrintToString(cross_cross)); |
| EXPECT_EQ( |
| "{ context: 2, schemeful_context: 2, " |
| "metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 }, " |
| "schemeful_metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 } }", |
| ::testing::PrintToString(lax_lax)); |
| EXPECT_EQ( |
| "{ context: 3, schemeful_context: 3, " |
| "metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 }, " |
| "schemeful_metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 } }", |
| ::testing::PrintToString(strict_strict)); |
| EXPECT_EQ( |
| "{ context: 3, schemeful_context: 0, " |
| "metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 }, " |
| "schemeful_metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 } }", |
| ::testing::PrintToString(strict_cross)); |
| EXPECT_EQ( |
| "{ context: 3, schemeful_context: 2, " |
| "metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 }, " |
| "schemeful_metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 } }", |
| ::testing::PrintToString(strict_lax)); |
| EXPECT_EQ( |
| "{ context: 2, schemeful_context: 0, " |
| "metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 }, " |
| "schemeful_metadata: { cross_site_redirect_downgrade: 0, " |
| "redirect_type_bug_1221316: 0, " |
| "http_method_bug_1221316: -1 } }", |
| ::testing::PrintToString(lax_cross)); |
| EXPECT_EQ( |
| "{ context: 3, schemeful_context: 3, " |
| "metadata: { cross_site_redirect_downgrade: 1, " |
| "redirect_type_bug_1221316: 3, " |
| "http_method_bug_1221316: 1 }, " |
| "schemeful_metadata: { cross_site_redirect_downgrade: 1, " |
| "redirect_type_bug_1221316: 3, " |
| "http_method_bug_1221316: 3 } }", |
| ::testing::PrintToString(context_with_metadata)); |
| } |
| |
| } // namespace |
| } // namespace net |