blob: f9e0deeb88d6bd014f029934f9bbfaee2056ec0b [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PERIDOT_BIN_LEDGER_TESTING_CLOUD_PROVIDER_FAKE_CLOUD_PROVIDER_H_
#define PERIDOT_BIN_LEDGER_TESTING_CLOUD_PROVIDER_FAKE_CLOUD_PROVIDER_H_
#include <fuchsia/ledger/cloud/cpp/fidl.h>
#include <lib/callback/auto_cleanable.h>
#include <lib/fidl/cpp/binding.h>
#include <lib/fxl/macros.h>
#include "peridot/bin/ledger/fidl_helpers/bound_interface_set.h"
#include "peridot/bin/ledger/testing/cloud_provider/fake_device_set.h"
#include "peridot/bin/ledger/testing/cloud_provider/fake_page_cloud.h"
#include "peridot/bin/ledger/testing/cloud_provider/types.h"
namespace ledger {
class FakeCloudProvider : public cloud_provider::CloudProvider {
public:
class Builder {
public:
Builder();
~Builder();
Builder& SetInjectNetworkError(InjectNetworkError inject_network_error);
Builder& SetCloudEraseOnCheck(CloudEraseOnCheck cloud_erase_on_check);
Builder& SetCloudEraseFromWatcher(
CloudEraseFromWatcher cloud_erase_from_watcher);
std::unique_ptr<FakeCloudProvider> Build();
private:
friend FakeCloudProvider;
InjectNetworkError inject_network_error_ = InjectNetworkError::NO;
CloudEraseOnCheck cloud_erase_on_check_ = CloudEraseOnCheck::NO;
CloudEraseFromWatcher cloud_erase_from_watcher_ = CloudEraseFromWatcher::NO;
};
FakeCloudProvider();
explicit FakeCloudProvider(const Builder& builder);
~FakeCloudProvider() override;
private:
void GetDeviceSet(
fidl::InterfaceRequest<cloud_provider::DeviceSet> device_set,
GetDeviceSetCallback callback) override;
void GetPageCloud(
std::vector<uint8_t> app_id, std::vector<uint8_t> page_id,
fidl::InterfaceRequest<cloud_provider::PageCloud> page_cloud,
GetPageCloudCallback callback) override;
fidl_helpers::BoundInterfaceSet<cloud_provider::DeviceSet, FakeDeviceSet>
device_set_;
callback::AutoCleanableMap<std::string, FakePageCloud> page_clouds_;
InjectNetworkError inject_network_error_;
FXL_DISALLOW_COPY_AND_ASSIGN(FakeCloudProvider);
};
} // namespace ledger
#endif // PERIDOT_BIN_LEDGER_TESTING_CLOUD_PROVIDER_FAKE_CLOUD_PROVIDER_H_