1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/cookies/cookie_options.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7
8 namespace net {
9 namespace {
10
TEST(CookieOptionsTest,SameSiteCookieContextType)11 TEST(CookieOptionsTest, SameSiteCookieContextType) {
12 using ContextType = CookieOptions::SameSiteCookieContext::ContextType;
13 EXPECT_EQ("0", ::testing::PrintToString(ContextType::CROSS_SITE));
14 EXPECT_EQ("1",
15 ::testing::PrintToString(ContextType::SAME_SITE_LAX_METHOD_UNSAFE));
16 EXPECT_EQ("2", ::testing::PrintToString(ContextType::SAME_SITE_LAX));
17 EXPECT_EQ("3", ::testing::PrintToString(ContextType::SAME_SITE_STRICT));
18 }
19
TEST(CookieOptionsTest,SameSiteCookieContext)20 TEST(CookieOptionsTest, SameSiteCookieContext) {
21 using SameSiteCookieContext = CookieOptions::SameSiteCookieContext;
22 SameSiteCookieContext cross_cross(
23 SameSiteCookieContext::ContextType::CROSS_SITE);
24 SameSiteCookieContext lax_lax(
25 SameSiteCookieContext::ContextType::SAME_SITE_LAX);
26 SameSiteCookieContext strict_strict(
27 SameSiteCookieContext::ContextType::SAME_SITE_STRICT);
28 SameSiteCookieContext strict_cross(
29 SameSiteCookieContext::ContextType::SAME_SITE_STRICT,
30 SameSiteCookieContext::ContextType::CROSS_SITE);
31 SameSiteCookieContext strict_lax(
32 SameSiteCookieContext::ContextType::SAME_SITE_STRICT,
33 SameSiteCookieContext::ContextType::SAME_SITE_LAX);
34 SameSiteCookieContext lax_cross(
35 SameSiteCookieContext::ContextType::SAME_SITE_LAX,
36 SameSiteCookieContext::ContextType::CROSS_SITE);
37
38 SameSiteCookieContext::ContextMetadata metadata1;
39 metadata1.cross_site_redirect_downgrade = SameSiteCookieContext::
40 ContextMetadata::ContextDowngradeType::kStrictToLax;
41 metadata1.redirect_type_bug_1221316 = SameSiteCookieContext::ContextMetadata::
42 ContextRedirectTypeBug1221316::kPartialSameSiteRedirect;
43 metadata1.http_method_bug_1221316 =
44 SameSiteCookieContext::ContextMetadata::HttpMethod::kGet;
45 SameSiteCookieContext::ContextMetadata metadata2;
46 metadata2.cross_site_redirect_downgrade = SameSiteCookieContext::
47 ContextMetadata::ContextDowngradeType::kStrictToLax;
48 metadata2.redirect_type_bug_1221316 = SameSiteCookieContext::ContextMetadata::
49 ContextRedirectTypeBug1221316::kPartialSameSiteRedirect;
50 metadata2.http_method_bug_1221316 =
51 SameSiteCookieContext::ContextMetadata::HttpMethod::kPost;
52 SameSiteCookieContext context_with_metadata(
53 SameSiteCookieContext::ContextType::SAME_SITE_STRICT,
54 SameSiteCookieContext::ContextType::SAME_SITE_STRICT, metadata1,
55 metadata2);
56
57 EXPECT_EQ(
58 "{ context: 0, schemeful_context: 0, "
59 "metadata: { cross_site_redirect_downgrade: 0, "
60 "redirect_type_bug_1221316: 0, "
61 "http_method_bug_1221316: -1 }, "
62 "schemeful_metadata: { cross_site_redirect_downgrade: 0, "
63 "redirect_type_bug_1221316: 0, "
64 "http_method_bug_1221316: -1 } }",
65 ::testing::PrintToString(cross_cross));
66 EXPECT_EQ(
67 "{ context: 2, schemeful_context: 2, "
68 "metadata: { cross_site_redirect_downgrade: 0, "
69 "redirect_type_bug_1221316: 0, "
70 "http_method_bug_1221316: -1 }, "
71 "schemeful_metadata: { cross_site_redirect_downgrade: 0, "
72 "redirect_type_bug_1221316: 0, "
73 "http_method_bug_1221316: -1 } }",
74 ::testing::PrintToString(lax_lax));
75 EXPECT_EQ(
76 "{ context: 3, schemeful_context: 3, "
77 "metadata: { cross_site_redirect_downgrade: 0, "
78 "redirect_type_bug_1221316: 0, "
79 "http_method_bug_1221316: -1 }, "
80 "schemeful_metadata: { cross_site_redirect_downgrade: 0, "
81 "redirect_type_bug_1221316: 0, "
82 "http_method_bug_1221316: -1 } }",
83 ::testing::PrintToString(strict_strict));
84 EXPECT_EQ(
85 "{ context: 3, schemeful_context: 0, "
86 "metadata: { cross_site_redirect_downgrade: 0, "
87 "redirect_type_bug_1221316: 0, "
88 "http_method_bug_1221316: -1 }, "
89 "schemeful_metadata: { cross_site_redirect_downgrade: 0, "
90 "redirect_type_bug_1221316: 0, "
91 "http_method_bug_1221316: -1 } }",
92 ::testing::PrintToString(strict_cross));
93 EXPECT_EQ(
94 "{ context: 3, schemeful_context: 2, "
95 "metadata: { cross_site_redirect_downgrade: 0, "
96 "redirect_type_bug_1221316: 0, "
97 "http_method_bug_1221316: -1 }, "
98 "schemeful_metadata: { cross_site_redirect_downgrade: 0, "
99 "redirect_type_bug_1221316: 0, "
100 "http_method_bug_1221316: -1 } }",
101 ::testing::PrintToString(strict_lax));
102 EXPECT_EQ(
103 "{ context: 2, schemeful_context: 0, "
104 "metadata: { cross_site_redirect_downgrade: 0, "
105 "redirect_type_bug_1221316: 0, "
106 "http_method_bug_1221316: -1 }, "
107 "schemeful_metadata: { cross_site_redirect_downgrade: 0, "
108 "redirect_type_bug_1221316: 0, "
109 "http_method_bug_1221316: -1 } }",
110 ::testing::PrintToString(lax_cross));
111 EXPECT_EQ(
112 "{ context: 3, schemeful_context: 3, "
113 "metadata: { cross_site_redirect_downgrade: 1, "
114 "redirect_type_bug_1221316: 3, "
115 "http_method_bug_1221316: 1 }, "
116 "schemeful_metadata: { cross_site_redirect_downgrade: 1, "
117 "redirect_type_bug_1221316: 3, "
118 "http_method_bug_1221316: 3 } }",
119 ::testing::PrintToString(context_with_metadata));
120 }
121
122 } // namespace
123 } // namespace net
124