xref: /aosp_15_r20/external/cronet/net/first_party_sets/sets_mutation_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2023 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/first_party_sets/sets_mutation.h"
6 
7 #include <optional>
8 
9 #include "net/base/schemeful_site.h"
10 #include "net/first_party_sets/first_party_set_entry.h"
11 #include "testing/gmock/include/gmock/gmock-matchers.h"
12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "url/gurl.h"
15 
16 using ::testing::Pair;
17 using ::testing::UnorderedElementsAre;
18 
19 namespace net {
20 
TEST(SetsMutationTest,Valid)21 TEST(SetsMutationTest, Valid) {
22   const SchemefulSite primary1(GURL("https://primary1.test"));
23   const SchemefulSite associated1(GURL("https://associated1.test"));
24   const SchemefulSite primary2(GURL("https://primary2.test"));
25   const SchemefulSite associated2(GURL("https://associated2.test"));
26 
27   std::ignore = SetsMutation(
28       /*replacement_sets=*/
29       {
30           {
31               {primary1,
32                FirstPartySetEntry(primary1, SiteType::kPrimary, std::nullopt)},
33               {associated1,
34                FirstPartySetEntry(primary1, SiteType::kAssociated, 0)},
35           },
36           {
37               {primary2,
38                FirstPartySetEntry(primary2, SiteType::kPrimary, std::nullopt)},
39               {associated2,
40                FirstPartySetEntry(primary2, SiteType::kAssociated, 0)},
41           },
42       },
43       /*addition_sets=*/{});
44 
45   std::ignore = SetsMutation(
46       /*replacement_sets=*/{},
47       /*addition_sets=*/{
48           {
49               {primary1,
50                FirstPartySetEntry(primary1, SiteType::kPrimary, std::nullopt)},
51               {associated1,
52                FirstPartySetEntry(primary1, SiteType::kAssociated, 0)},
53           },
54           {
55               {primary2,
56                FirstPartySetEntry(primary2, SiteType::kPrimary, std::nullopt)},
57               {associated2,
58                FirstPartySetEntry(primary2, SiteType::kAssociated, 0)},
59           },
60       });
61 
62   std::ignore = SetsMutation(
63       /*replacement_sets=*/
64       {
65           {
66               {primary1,
67                FirstPartySetEntry(primary1, SiteType::kPrimary, std::nullopt)},
68               {associated1,
69                FirstPartySetEntry(primary1, SiteType::kAssociated, 0)},
70           },
71       },
72       /*addition_sets=*/{
73           {
74               {primary2,
75                FirstPartySetEntry(primary2, SiteType::kPrimary, std::nullopt)},
76               {associated2,
77                FirstPartySetEntry(primary2, SiteType::kAssociated, 0)},
78           },
79       });
80 }
81 
82 #if defined(GTEST_HAS_DEATH_TEST)
TEST(SetsMutationTest,Nondisjoint_death)83 TEST(SetsMutationTest, Nondisjoint_death) {
84   const SchemefulSite primary1(GURL("https://primary1.test"));
85   const SchemefulSite associated1(GURL("https://associated1.test"));
86   const SchemefulSite primary2(GURL("https://primary2.test"));
87   const SchemefulSite associated2(GURL("https://associated2.test"));
88 
89   EXPECT_DEATH(
90       {
91         SetsMutation(
92             /*replacement_sets=*/
93             {
94                 {
95                     {primary1, FirstPartySetEntry(primary1, SiteType::kPrimary,
96                                                   std::nullopt)},
97                     {associated1,
98                      FirstPartySetEntry(primary1, SiteType::kAssociated, 0)},
99                 },
100                 {
101                     {primary2, FirstPartySetEntry(primary2, SiteType::kPrimary,
102                                                   std::nullopt)},
103                     {associated1,
104                      FirstPartySetEntry(primary2, SiteType::kAssociated, 0)},
105                     {associated2,
106                      FirstPartySetEntry(primary2, SiteType::kAssociated, 0)},
107                 },
108             },
109             /*addition_sets=*/{});
110       },
111       "");
112 }
113 #endif  // defined(GTEST_HAS_DEATH_TEST)
114 
115 }  // namespace net
116