blob: 508a8bba1434373584c7aca3d1c77a2de0af3f25 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/plus_addresses/fake_plus_address_service.h"
#include <optional>
#include <string>
#include <utility>
#include "base/functional/callback.h"
#include "components/plus_addresses/mock_plus_address_http_client.h"
#include "components/plus_addresses/plus_address_types.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace plus_addresses {
FakePlusAddressService::FakePlusAddressService()
: PlusAddressService(
/*identity_manager=*/nullptr,
/*pref_service=*/nullptr,
std::make_unique<testing::NiceMock<MockPlusAddressHttpClient>>(),
/*webdata_service=*/nullptr) {}
FakePlusAddressService::~FakePlusAddressService() = default;
void FakePlusAddressService::ReservePlusAddress(
const url::Origin& origin,
PlusAddressRequestCallback on_completed) {
if (should_fail_to_reserve_) {
std::move(on_completed)
.Run(base::unexpected(PlusAddressRequestError(
PlusAddressRequestErrorType::kNetworkError)));
return;
}
std::move(on_completed)
.Run(PlusProfile({.facet = kFacet,
.plus_address = kFakePlusAddress,
.is_confirmed = is_confirmed_}));
}
void FakePlusAddressService::ConfirmPlusAddress(
const url::Origin& origin,
const std::string& plus_address,
PlusAddressRequestCallback on_completed) {
if (should_fail_to_confirm_) {
std::move(on_completed)
.Run(base::unexpected(PlusAddressRequestError(
PlusAddressRequestErrorType::kNetworkError)));
return;
}
is_confirmed_ = true;
PlusProfile profile({.facet = kFacet,
.plus_address = plus_address,
.is_confirmed = is_confirmed_});
if (on_confirmed_) {
std::move(on_confirmed_).Run(profile);
on_confirmed_.Reset();
}
std::move(on_completed).Run(profile);
}
std::optional<std::string> FakePlusAddressService::GetPrimaryEmail() {
// Ensure the value is present without requiring identity setup.
return "plus+primary@plus.plus";
}
} // namespace plus_addresses