blob: 32a1c6fd4dc63c986ae6a5b53ee2a3f749439fd7 [file] [log] [blame]
// Copyright 2020 The Chromium OS 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 BIOD_MOCK_CROS_FP_BIOMETRICS_MANAGER_H_
#define BIOD_MOCK_CROS_FP_BIOMETRICS_MANAGER_H_
#include <memory>
#include <string>
#include <unordered_set>
#include <utility>
#include <vector>
#include <gmock/gmock.h>
#include "biod/cros_fp_biometrics_manager.h"
#include "biod/mock_biod_metrics.h"
#include "biod/power_button_filter.h"
namespace biod {
class MockCrosFpBiometricsManager : public CrosFpBiometricsManager {
public:
/**
* @param bus DBus Usually a mock bus
* @param cros_fp_device Usually a mock device so the call to Init()
* succeeds.
* @param biod_metrics Usually a mock metrics object
*
* @return mock instance on success, nullptr on failure
*/
static std::unique_ptr<MockCrosFpBiometricsManager> Create(
const scoped_refptr<dbus::Bus>& bus,
std::unique_ptr<CrosFpDeviceInterface> cros_fp_device,
std::unique_ptr<BiodMetricsInterface> biod_metrics) {
// Using new to access non-public constructor.
// See https://abseil.io/tips/134.
auto mock = base::WrapUnique(new MockCrosFpBiometricsManager(
PowerButtonFilter::Create(bus), std::move(cros_fp_device),
std::move(biod_metrics)));
if (!mock->Init()) {
return nullptr;
}
return mock;
}
~MockCrosFpBiometricsManager() override = default;
MOCK_METHOD(BiometricType, GetType, (), (override));
MOCK_METHOD(BiometricsManager::EnrollSession,
StartEnrollSession,
(std::string user_id, std::string label),
(override));
MOCK_METHOD(BiometricsManager::AuthSession, StartAuthSession, (), (override));
MOCK_METHOD(std::vector<std::unique_ptr<BiometricsManager::Record>>,
GetRecords,
(),
(override));
MOCK_METHOD(bool, DestroyAllRecords, (), (override));
MOCK_METHOD(void, RemoveRecordsFromMemory, (), (override));
MOCK_METHOD(bool,
ReadRecordsForSingleUser,
(const std::string& user_id),
(override));
MOCK_METHOD(
void,
SetEnrollScanDoneHandler,
(const BiometricsManager::EnrollScanDoneCallback& on_enroll_scan_done),
(override));
MOCK_METHOD(
void,
SetAuthScanDoneHandler,
(const BiometricsManager::AuthScanDoneCallback& on_auth_scan_done),
(override));
MOCK_METHOD(
void,
SetSessionFailedHandler,
(const BiometricsManager::SessionFailedCallback& on_session_failed),
(override));
MOCK_METHOD(bool, SendStatsOnLogin, (), (override));
MOCK_METHOD(void, SetDiskAccesses, (bool allow), (override));
MOCK_METHOD(bool, ResetSensor, (), (override));
MOCK_METHOD(bool, ResetEntropy, (bool factory_init), (override));
MOCK_METHOD(void, EndEnrollSession, (), (override));
MOCK_METHOD(void, EndAuthSession, (), (override));
MOCK_METHOD(void, OnMaintenanceTimerFired, (), (override));
// Delegate to the real implementation in the base class:
// https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md#delegating-calls-to-a-parent-class
void OnMaintenanceTimerFiredDelegate() {
CrosFpBiometricsManager::OnMaintenanceTimerFired();
}
protected:
using CrosFpBiometricsManager::CrosFpBiometricsManager;
};
} // namespace biod
#endif // BIOD_MOCK_CROS_FP_BIOMETRICS_MANAGER_H_