blob: eb866cbfcc7daf9c9bb79b2f54b26bea34eb9bdf [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 "services/network/cookie_access_delegate_impl.h"
#include "base/test/task_environment.h"
#include "net/base/schemeful_site.h"
#include "net/first_party_sets/first_party_set_metadata.h"
#include "net/first_party_sets/same_party_context.h"
#include "services/network/first_party_sets/first_party_sets_manager.h"
#include "services/network/public/mojom/cookie_manager.mojom-shared.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"
namespace network {
namespace {
using testing::_;
using testing::IsEmpty;
using testing::Optional;
class CookieAccessDelegateImplTest : public testing::Test {
public:
CookieAccessDelegateImplTest()
: delegate_(mojom::CookieAccessDelegateType::ALWAYS_LEGACY,
/*first_party_sets_access_delegate=*/nullptr,
/*cookie_settings=*/nullptr) {}
protected:
CookieAccessDelegateImpl& delegate() { return delegate_; }
private:
CookieAccessDelegateImpl delegate_;
};
TEST_F(CookieAccessDelegateImplTest, NullFirstPartySetsManager) {
net::SchemefulSite site(GURL("https://site.test"));
// Since the first_party_sets_manager pointer is nullptr, none of the
// callbacks should ever be called, and the return values should all be
// non-nullopt.
// Same as the default ctor, but just to be explicit:
net::FirstPartySetMetadata expected_metadata(net::SamePartyContext(),
/*frame_entry=*/nullptr,
/*top_frame_entry=*/nullptr);
EXPECT_THAT(delegate().ComputeFirstPartySetMetadataMaybeAsync(
site, &site, {},
base::BindOnce([](net::FirstPartySetMetadata) { FAIL(); })),
Optional(std::ref(expected_metadata)));
EXPECT_THAT(
delegate().FindFirstPartySetEntries(
{site},
base::BindOnce([](FirstPartySetsManager::EntriesResult) { FAIL(); })),
Optional(IsEmpty()));
}
} // namespace
} // namespace network