blob: 09f7513d2932d94387c35b10c7f1010005ef5e5f [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/first_party_sets/local_set_declaration.h"
#include "net/base/schemeful_site.h"
#include "net/first_party_sets/first_party_set_entry.h"
#include "testing/gmock/include/gmock/gmock-matchers.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "url/gurl.h"
using ::testing::IsEmpty;
using ::testing::Pair;
using ::testing::UnorderedElementsAre;
namespace net {
TEST(LocalSetDeclarationTest, Valid_EmptySet) {
EXPECT_THAT(LocalSetDeclaration(), IsEmpty());
}
TEST(LocalSetDeclarationTest, Valid_Basic) {
SchemefulSite primary(GURL("https://primary.test"));
SchemefulSite associated(GURL("https://associated.test"));
base::flat_map<SchemefulSite, FirstPartySetEntry> entries({
{primary, FirstPartySetEntry(primary, SiteType::kPrimary, absl::nullopt)},
{associated, FirstPartySetEntry(primary, SiteType::kAssociated, 0)},
});
EXPECT_THAT(LocalSetDeclaration(entries, /*aliases=*/{}).entries(),
UnorderedElementsAre(
Pair(primary, FirstPartySetEntry(primary, SiteType::kPrimary,
absl::nullopt)),
Pair(associated,
FirstPartySetEntry(primary, SiteType::kAssociated, 0))));
}
TEST(LocalSetDeclarationTest, Valid_BasicWithAliases) {
SchemefulSite primary(GURL("https://primary.test"));
SchemefulSite primary_cctld(GURL("https://primary.cctld"));
SchemefulSite associated(GURL("https://associated.test"));
SchemefulSite associated_cctld(GURL("https://associated.cctld"));
base::flat_map<SchemefulSite, FirstPartySetEntry> entries({
{primary, FirstPartySetEntry(primary, SiteType::kPrimary, absl::nullopt)},
{associated, FirstPartySetEntry(primary, SiteType::kAssociated, 0)},
});
base::flat_map<SchemefulSite, SchemefulSite> aliases(
{{primary_cctld, primary}, {associated_cctld, associated}});
LocalSetDeclaration local_set(entries, aliases);
// LocalSetDeclaration should allow these to pass through, after passing
// validation.
EXPECT_THAT(local_set.entries(),
UnorderedElementsAre(
Pair(primary, FirstPartySetEntry(primary, SiteType::kPrimary,
absl::nullopt)),
Pair(associated,
FirstPartySetEntry(primary, SiteType::kAssociated, 0))));
EXPECT_THAT(local_set.aliases(),
UnorderedElementsAre(Pair(associated_cctld, associated),
Pair(primary_cctld, primary)));
}
} // namespace net