• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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::MakeFromReasonsForTesting(
38       /*exclusions=*/{reason}));
39 }
40 
41 }  // namespace
42 
TEST(NetworkDelegateTest,ExcludeAllCookies)43 TEST(NetworkDelegateTest, ExcludeAllCookies) {
44   CookieAccessResultList maybe_included_cookies = {
45       {MakeCookie("1"), Include()}, {MakeCookie("2"), Include()}};
46 
47   CookieAccessResultList excluded_cookies = {
48       {MakeCookie("3"),
49        Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY)}};
50 
51   NetworkDelegate::ExcludeAllCookies(
52       CookieInclusionStatus::ExclusionReason::EXCLUDE_USER_PREFERENCES,
53       maybe_included_cookies, excluded_cookies);
54 
55   EXPECT_THAT(maybe_included_cookies, IsEmpty());
56   EXPECT_THAT(
57       excluded_cookies,
58       UnorderedElementsAre(
59           MatchesCookieWithAccessResult(
60               MatchesCookieWithName("1"),
61               MatchesCookieAccessResult(
62                   HasExactlyExclusionReasonsForTesting(
63                       std::vector<CookieInclusionStatus::ExclusionReason>{
64                           CookieInclusionStatus::ExclusionReason::
65                               EXCLUDE_USER_PREFERENCES}),
66                   _, _, _)),
67           MatchesCookieWithAccessResult(
68               MatchesCookieWithName("2"),
69               MatchesCookieAccessResult(
70                   HasExactlyExclusionReasonsForTesting(
71                       std::vector<CookieInclusionStatus::ExclusionReason>{
72                           CookieInclusionStatus::ExclusionReason::
73                               EXCLUDE_USER_PREFERENCES}),
74                   _, _, _)),
75           MatchesCookieWithAccessResult(
76               MatchesCookieWithName("3"),
77               MatchesCookieAccessResult(
78                   HasExactlyExclusionReasonsForTesting(
79                       std::vector<CookieInclusionStatus::ExclusionReason>{
80                           CookieInclusionStatus::ExclusionReason::
81                               EXCLUDE_SECURE_ONLY,
82                           CookieInclusionStatus::ExclusionReason::
83                               EXCLUDE_USER_PREFERENCES}),
84                   _, _, _))));
85 }
86 
TEST(NetworkDelegateTest,MoveExcludedCookies)87 TEST(NetworkDelegateTest, MoveExcludedCookies) {
88   CookieAccessResultList maybe_included_cookies = {
89       {MakeCookie("1"), Include()},
90       {MakeCookie("2"),
91        Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY)},
92       {MakeCookie("3"), Include()}};
93 
94   CookieAccessResultList excluded_cookies = {{
95       MakeCookie("4"),
96       Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY),
97   }};
98 
99   NetworkDelegate::MoveExcludedCookies(maybe_included_cookies,
100                                        excluded_cookies);
101 
102   EXPECT_THAT(
103       maybe_included_cookies,
104       ElementsAre(MatchesCookieWithAccessResult(
105                       MatchesCookieWithName("1"),
106                       MatchesCookieAccessResult(IsInclude(), _, _, _)),
107                   MatchesCookieWithAccessResult(
108                       MatchesCookieWithName("3"),
109                       MatchesCookieAccessResult(IsInclude(), _, _, _))));
110   EXPECT_THAT(
111       excluded_cookies,
112       UnorderedElementsAre(
113           MatchesCookieWithAccessResult(
114               MatchesCookieWithName("2"),
115               MatchesCookieAccessResult(
116                   HasExactlyExclusionReasonsForTesting(
117                       std::vector<CookieInclusionStatus::ExclusionReason>{
118                           CookieInclusionStatus::ExclusionReason::
119                               EXCLUDE_SECURE_ONLY}),
120                   _, _, _)),
121           MatchesCookieWithAccessResult(
122               MatchesCookieWithName("4"),
123               MatchesCookieAccessResult(
124                   HasExactlyExclusionReasonsForTesting(
125                       std::vector<CookieInclusionStatus::ExclusionReason>{
126                           CookieInclusionStatus::ExclusionReason::
127                               EXCLUDE_SECURE_ONLY}),
128                   _, _, _))));
129 }
130 
131 }  // namespace net
132