network_delegate_unittest.cc 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "net/base/network_delegate.h"
  5. #include "net/cookies/canonical_cookie.h"
  6. #include "net/cookies/canonical_cookie_test_helpers.h"
  7. #include "testing/gmock/include/gmock/gmock.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. namespace net {
  10. using testing::_;
  11. using testing::ElementsAre;
  12. using testing::IsEmpty;
  13. using testing::UnorderedElementsAre;
  14. namespace {
  15. constexpr char kURL[] = "example.test";
  16. CanonicalCookie MakeCookie(const std::string& name) {
  17. return *CanonicalCookie::CreateUnsafeCookieForTesting(
  18. name, "value", kURL, /*path=*/"/", /*creation=*/base::Time(),
  19. /*expiration=*/base::Time(), /*last_access=*/base::Time(),
  20. /*last_update=*/base::Time(),
  21. /*secure=*/true, /*httponly=*/false, CookieSameSite::UNSPECIFIED,
  22. CookiePriority::COOKIE_PRIORITY_DEFAULT, /*same_party=*/false);
  23. }
  24. CookieAccessResult Include() {
  25. return {};
  26. }
  27. CookieAccessResult Exclude(CookieInclusionStatus::ExclusionReason reason) {
  28. return CookieAccessResult(CookieInclusionStatus(reason));
  29. }
  30. } // namespace
  31. TEST(NetworkDelegateTest, ExcludeAllCookies) {
  32. CookieAccessResultList maybe_included_cookies = {
  33. {MakeCookie("1"), Include()}, {MakeCookie("2"), Include()}};
  34. CookieAccessResultList excluded_cookies = {
  35. {MakeCookie("3"),
  36. Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY)}};
  37. NetworkDelegate::ExcludeAllCookies(
  38. CookieInclusionStatus::ExclusionReason::EXCLUDE_USER_PREFERENCES,
  39. maybe_included_cookies, excluded_cookies);
  40. EXPECT_THAT(maybe_included_cookies, IsEmpty());
  41. EXPECT_THAT(
  42. excluded_cookies,
  43. UnorderedElementsAre(
  44. MatchesCookieWithAccessResult(
  45. MatchesCookieWithName("1"),
  46. MatchesCookieAccessResult(
  47. HasExactlyExclusionReasonsForTesting(
  48. std::vector<CookieInclusionStatus::ExclusionReason>{
  49. CookieInclusionStatus::ExclusionReason::
  50. EXCLUDE_USER_PREFERENCES}),
  51. _, _, _)),
  52. MatchesCookieWithAccessResult(
  53. MatchesCookieWithName("2"),
  54. MatchesCookieAccessResult(
  55. HasExactlyExclusionReasonsForTesting(
  56. std::vector<CookieInclusionStatus::ExclusionReason>{
  57. CookieInclusionStatus::ExclusionReason::
  58. EXCLUDE_USER_PREFERENCES}),
  59. _, _, _)),
  60. MatchesCookieWithAccessResult(
  61. MatchesCookieWithName("3"),
  62. MatchesCookieAccessResult(
  63. HasExactlyExclusionReasonsForTesting(
  64. std::vector<CookieInclusionStatus::ExclusionReason>{
  65. CookieInclusionStatus::ExclusionReason::
  66. EXCLUDE_SECURE_ONLY,
  67. CookieInclusionStatus::ExclusionReason::
  68. EXCLUDE_USER_PREFERENCES}),
  69. _, _, _))));
  70. }
  71. TEST(NetworkDelegateTest, MoveExcludedCookies) {
  72. CookieAccessResultList maybe_included_cookies = {
  73. {MakeCookie("1"), Include()},
  74. {MakeCookie("2"),
  75. Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY)},
  76. {MakeCookie("3"), Include()}};
  77. CookieAccessResultList excluded_cookies = {{
  78. MakeCookie("4"),
  79. Exclude(CookieInclusionStatus::ExclusionReason::EXCLUDE_SECURE_ONLY),
  80. }};
  81. NetworkDelegate::MoveExcludedCookies(maybe_included_cookies,
  82. excluded_cookies);
  83. EXPECT_THAT(
  84. maybe_included_cookies,
  85. ElementsAre(MatchesCookieWithAccessResult(
  86. MatchesCookieWithName("1"),
  87. MatchesCookieAccessResult(IsInclude(), _, _, _)),
  88. MatchesCookieWithAccessResult(
  89. MatchesCookieWithName("3"),
  90. MatchesCookieAccessResult(IsInclude(), _, _, _))));
  91. EXPECT_THAT(
  92. excluded_cookies,
  93. UnorderedElementsAre(
  94. MatchesCookieWithAccessResult(
  95. MatchesCookieWithName("2"),
  96. MatchesCookieAccessResult(
  97. HasExactlyExclusionReasonsForTesting(
  98. std::vector<CookieInclusionStatus::ExclusionReason>{
  99. CookieInclusionStatus::ExclusionReason::
  100. EXCLUDE_SECURE_ONLY}),
  101. _, _, _)),
  102. MatchesCookieWithAccessResult(
  103. MatchesCookieWithName("4"),
  104. MatchesCookieAccessResult(
  105. HasExactlyExclusionReasonsForTesting(
  106. std::vector<CookieInclusionStatus::ExclusionReason>{
  107. CookieInclusionStatus::ExclusionReason::
  108. EXCLUDE_SECURE_ONLY}),
  109. _, _, _))));
  110. }
  111. } // namespace net