xref: /aosp_15_r20/external/cronet/net/base/network_delegate_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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/base/network_delegate.h"
6 
7 #include "net/cookies/canonical_cookie.h"
8 #include "net/cookies/canonical_cookie_test_helpers.h"
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 
12 namespace net {
13 
14 using testing::_;
15 using testing::ElementsAre;
16 using testing::IsEmpty;
17 using testing::UnorderedElementsAre;
18 
19 namespace {
20 
21 constexpr char kURL[] = "example.test";
22 
MakeCookie(const std::string & name)23 CanonicalCookie MakeCookie(const std::string& name) {
24   return *CanonicalCookie::CreateUnsafeCookieForTesting(
25       name, "value", kURL, /*path=*/"/", /*creation=*/base::Time(),
26       /*expiration=*/base::Time(), /*last_access=*/base::Time(),
27       /*last_update=*/base::Time(),
28       /*secure=*/true, /*httponly=*/false, CookieSameSite::UNSPECIFIED,
29       CookiePriority::COOKIE_PRIORITY_DEFAULT);
30 }
31 
Include()32 CookieAccessResult Include() {
33   return {};
34 }
35 
Exclude(CookieInclusionStatus::ExclusionReason reason)36 CookieAccessResult Exclude(CookieInclusionStatus::ExclusionReason reason) {
37   return CookieAccessResult(CookieInclusionStatus(reason));
38 }
39 
40 }  // namespace
41 
TEST(NetworkDelegateTest,ExcludeAllCookies)42 TEST(NetworkDelegateTest, ExcludeAllCookies) {
43   CookieAccessResultList maybe_included_cookies = {
44       {MakeCookie("1"), Include()}, {MakeCookie("2"), Include()}};
45 
46   CookieAccessResultList excluded_cookies = {
47       {MakeCookie("3"),
48        Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY)}};
49 
50   NetworkDelegate::ExcludeAllCookies(
51       CookieInclusionStatus::ExclusionReason::EXCLUDE_USER_PREFERENCES,
52       maybe_included_cookies, excluded_cookies);
53 
54   EXPECT_THAT(maybe_included_cookies, IsEmpty());
55   EXPECT_THAT(
56       excluded_cookies,
57       UnorderedElementsAre(
58           MatchesCookieWithAccessResult(
59               MatchesCookieWithName("1"),
60               MatchesCookieAccessResult(
61                   HasExactlyExclusionReasonsForTesting(
62                       std::vector<CookieInclusionStatus::ExclusionReason>{
63                           CookieInclusionStatus::ExclusionReason::
64                               EXCLUDE_USER_PREFERENCES}),
65                   _, _, _)),
66           MatchesCookieWithAccessResult(
67               MatchesCookieWithName("2"),
68               MatchesCookieAccessResult(
69                   HasExactlyExclusionReasonsForTesting(
70                       std::vector<CookieInclusionStatus::ExclusionReason>{
71                           CookieInclusionStatus::ExclusionReason::
72                               EXCLUDE_USER_PREFERENCES}),
73                   _, _, _)),
74           MatchesCookieWithAccessResult(
75               MatchesCookieWithName("3"),
76               MatchesCookieAccessResult(
77                   HasExactlyExclusionReasonsForTesting(
78                       std::vector<CookieInclusionStatus::ExclusionReason>{
79                           CookieInclusionStatus::ExclusionReason::
80                               EXCLUDE_SECURE_ONLY,
81                           CookieInclusionStatus::ExclusionReason::
82                               EXCLUDE_USER_PREFERENCES}),
83                   _, _, _))));
84 }
85 
TEST(NetworkDelegateTest,MoveExcludedCookies)86 TEST(NetworkDelegateTest, MoveExcludedCookies) {
87   CookieAccessResultList maybe_included_cookies = {
88       {MakeCookie("1"), Include()},
89       {MakeCookie("2"),
90        Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY)},
91       {MakeCookie("3"), Include()}};
92 
93   CookieAccessResultList excluded_cookies = {{
94       MakeCookie("4"),
95       Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY),
96   }};
97 
98   NetworkDelegate::MoveExcludedCookies(maybe_included_cookies,
99                                        excluded_cookies);
100 
101   EXPECT_THAT(
102       maybe_included_cookies,
103       ElementsAre(MatchesCookieWithAccessResult(
104                       MatchesCookieWithName("1"),
105                       MatchesCookieAccessResult(IsInclude(), _, _, _)),
106                   MatchesCookieWithAccessResult(
107                       MatchesCookieWithName("3"),
108                       MatchesCookieAccessResult(IsInclude(), _, _, _))));
109   EXPECT_THAT(
110       excluded_cookies,
111       UnorderedElementsAre(
112           MatchesCookieWithAccessResult(
113               MatchesCookieWithName("2"),
114               MatchesCookieAccessResult(
115                   HasExactlyExclusionReasonsForTesting(
116                       std::vector<CookieInclusionStatus::ExclusionReason>{
117                           CookieInclusionStatus::ExclusionReason::
118                               EXCLUDE_SECURE_ONLY}),
119                   _, _, _)),
120           MatchesCookieWithAccessResult(
121               MatchesCookieWithName("4"),
122               MatchesCookieAccessResult(
123                   HasExactlyExclusionReasonsForTesting(
124                       std::vector<CookieInclusionStatus::ExclusionReason>{
125                           CookieInclusionStatus::ExclusionReason::
126                               EXCLUDE_SECURE_ONLY}),
127                   _, _, _))));
128 }
129 
130 }  // namespace net
131