Commit ddff9454 authored by Josh Nohle's avatar Josh Nohle Committed by Commit Bot

[DeviceSync v2] Add FakeCryptAuthFeatureStatusGetter class

Adds fake implementations of CryptAuthFeatureStatusGetter and
CryptAuthFeatureStatusGetterImpl::Factory for use in unit tests.

Bug: 951969
Change-Id: I4f467effb33f426697225f7e9d53e574933b8fbc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1711210
Commit-Queue: Josh Nohle <nohle@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#680170}
parent 212223fb
......@@ -167,6 +167,8 @@ static_library("test_support") {
"fake_cryptauth_ecies_encryptor.h",
"fake_cryptauth_enrollment_manager.cc",
"fake_cryptauth_enrollment_manager.h",
"fake_cryptauth_feature_status_getter.cc",
"fake_cryptauth_feature_status_getter.h",
"fake_cryptauth_gcm_manager.cc",
"fake_cryptauth_gcm_manager.h",
"fake_cryptauth_group_private_key_sharer.cc",
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/services/device_sync/fake_cryptauth_feature_status_getter.h"
namespace chromeos {
namespace device_sync {
FakeCryptAuthFeatureStatusGetter::FakeCryptAuthFeatureStatusGetter() = default;
FakeCryptAuthFeatureStatusGetter::~FakeCryptAuthFeatureStatusGetter() = default;
void FakeCryptAuthFeatureStatusGetter::FinishAttempt(
const IdToFeatureStatusMap& id_to_feature_status_map,
const CryptAuthDeviceSyncResult::ResultCode& device_sync_result_code) {
DCHECK(request_context_);
DCHECK(device_ids_);
OnAttemptFinished(id_to_feature_status_map, device_sync_result_code);
}
void FakeCryptAuthFeatureStatusGetter::OnAttemptStarted(
const cryptauthv2::RequestContext& request_context,
const base::flat_set<std::string>& device_ids) {
request_context_ = request_context;
device_ids_ = device_ids;
}
FakeCryptAuthFeatureStatusGetterFactory::
FakeCryptAuthFeatureStatusGetterFactory() = default;
FakeCryptAuthFeatureStatusGetterFactory::
~FakeCryptAuthFeatureStatusGetterFactory() = default;
std::unique_ptr<CryptAuthFeatureStatusGetter>
FakeCryptAuthFeatureStatusGetterFactory::BuildInstance(
CryptAuthClientFactory* client_factory,
std::unique_ptr<base::OneShotTimer> timer) {
last_client_factory_ = client_factory;
auto instance = std::make_unique<FakeCryptAuthFeatureStatusGetter>();
instances_.push_back(instance.get());
return instance;
}
} // namespace device_sync
} // namespace chromeos
// Copyright 2019 The Chromium 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 CHROMEOS_SERVICES_DEVICE_SYNC_FAKE_CRYPTAUTH_FEATURE_STATUS_GETTER_H_
#define CHROMEOS_SERVICES_DEVICE_SYNC_FAKE_CRYPTAUTH_FEATURE_STATUS_GETTER_H_
#include <memory>
#include <string>
#include <vector>
#include "base/containers/flat_set.h"
#include "base/macros.h"
#include "base/optional.h"
#include "base/timer/timer.h"
#include "chromeos/services/device_sync/cryptauth_device_sync_result.h"
#include "chromeos/services/device_sync/cryptauth_feature_status_getter.h"
#include "chromeos/services/device_sync/cryptauth_feature_status_getter_impl.h"
#include "chromeos/services/device_sync/proto/cryptauth_devicesync.pb.h"
namespace chromeos {
namespace device_sync {
class CryptAuthClientFactory;
class FakeCryptAuthFeatureStatusGetter : public CryptAuthFeatureStatusGetter {
public:
FakeCryptAuthFeatureStatusGetter();
~FakeCryptAuthFeatureStatusGetter() override;
// The RequestContext passed to GetFeatureStatuses(). Returns null if
// GetFeatureStatuses() has not been called yet.
const base::Optional<cryptauthv2::RequestContext>& request_context() const {
return request_context_;
}
// The device IDs passed to GetFeatureStatuses(). Returns null if
// GetFeatureStatuses() has not been called yet.
const base::Optional<base::flat_set<std::string>>& device_ids() const {
return device_ids_;
}
// Calls OnAttemptFinished() with the same input parameters.
void FinishAttempt(
const IdToFeatureStatusMap& id_to_feature_status_map,
const CryptAuthDeviceSyncResult::ResultCode& device_sync_result_code);
private:
// CryptAuthFeatureStatusGetter:
void OnAttemptStarted(const cryptauthv2::RequestContext& request_context,
const base::flat_set<std::string>& device_ids) override;
base::Optional<cryptauthv2::RequestContext> request_context_;
base::Optional<base::flat_set<std::string>> device_ids_;
DISALLOW_COPY_AND_ASSIGN(FakeCryptAuthFeatureStatusGetter);
};
class FakeCryptAuthFeatureStatusGetterFactory
: public CryptAuthFeatureStatusGetterImpl::Factory {
public:
FakeCryptAuthFeatureStatusGetterFactory();
~FakeCryptAuthFeatureStatusGetterFactory() override;
// Returns a vector of all FakeCryptAuthFeatureStatusGetter instances created
// by BuildInstance().
const std::vector<FakeCryptAuthFeatureStatusGetter*>& instances() const {
return instances_;
}
// Returns the most recent CryptAuthClientFactory input into BuildInstance().
const CryptAuthClientFactory* last_client_factory() const {
return last_client_factory_;
}
private:
// CryptAuthFeatureStatusGetterImpl::Factory:
std::unique_ptr<CryptAuthFeatureStatusGetter> BuildInstance(
CryptAuthClientFactory* client_factory,
std::unique_ptr<base::OneShotTimer> timer = nullptr) override;
std::vector<FakeCryptAuthFeatureStatusGetter*> instances_;
CryptAuthClientFactory* last_client_factory_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(FakeCryptAuthFeatureStatusGetterFactory);
};
} // namespace device_sync
} // namespace chromeos
#endif // CHROMEOS_SERVICES_DEVICE_SYNC_FAKE_CRYPTAUTH_FEATURE_STATUS_GETTER_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment