blob: 9fb5370e1b62ed6a0bdaac5730a5037fcfbf0d8b [file] [log] [blame] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIBHWSEC_BACKEND_MOCK_U2F_H_
#define LIBHWSEC_BACKEND_MOCK_U2F_H_
#include <cstdint>
#include <optional>
#include <brillo/secure_blob.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "libhwsec/backend/u2f.h"
#include "libhwsec/status.h"
namespace hwsec {
class MockU2f : public U2f {
public:
MockU2f() = default;
explicit MockU2f(U2f* on_call) : default_(on_call) {
using testing::Invoke;
if (!default_)
return;
ON_CALL(*this, IsEnabled).WillByDefault(Invoke(default_, &U2f::IsEnabled));
ON_CALL(*this, GenerateUserPresenceOnly)
.WillByDefault(Invoke(default_, &U2f::GenerateUserPresenceOnly));
ON_CALL(*this, Generate).WillByDefault(Invoke(default_, &U2f::Generate));
ON_CALL(*this, SignUserPresenceOnly)
.WillByDefault(Invoke(default_, &U2f::SignUserPresenceOnly));
ON_CALL(*this, Sign).WillByDefault(Invoke(default_, &U2f::Sign));
ON_CALL(*this, CheckUserPresenceOnly)
.WillByDefault(Invoke(default_, &U2f::CheckUserPresenceOnly));
ON_CALL(*this, Check).WillByDefault(Invoke(default_, &U2f::Check));
ON_CALL(*this, G2fAttest).WillByDefault(Invoke(default_, &U2f::G2fAttest));
ON_CALL(*this, CorpAttest)
.WillByDefault(Invoke(default_, &U2f::CorpAttest));
ON_CALL(*this, GetG2fAttestData)
.WillByDefault(Invoke(default_, &U2f::GetG2fAttestData));
ON_CALL(*this, GetConfig).WillByDefault(Invoke(default_, &U2f::GetConfig));
}
MOCK_METHOD(StatusOr<bool>, IsEnabled, (), (override));
MOCK_METHOD(StatusOr<u2f::GenerateResult>,
GenerateUserPresenceOnly,
(const brillo::Blob&,
const brillo::SecureBlob&,
u2f::ConsumeMode,
u2f::UserPresenceMode),
(override));
MOCK_METHOD(StatusOr<u2f::GenerateResult>,
Generate,
(const brillo::Blob&,
const brillo::SecureBlob&,
u2f::ConsumeMode,
u2f::UserPresenceMode,
const brillo::Blob&),
(override));
MOCK_METHOD(StatusOr<u2f::Signature>,
SignUserPresenceOnly,
(const brillo::Blob&,
const brillo::SecureBlob&,
const brillo::Blob&,
u2f::ConsumeMode,
u2f::UserPresenceMode,
const brillo::Blob&),
(override));
MOCK_METHOD(StatusOr<u2f::Signature>,
Sign,
(const brillo::Blob&,
const brillo::SecureBlob&,
const std::optional<brillo::SecureBlob>&,
const brillo::Blob&,
u2f::ConsumeMode,
u2f::UserPresenceMode,
const brillo::Blob&),
(override));
MOCK_METHOD(Status,
CheckUserPresenceOnly,
(const brillo::Blob&,
const brillo::SecureBlob&,
const brillo::Blob&),
(override));
MOCK_METHOD(Status,
Check,
(const brillo::Blob&,
const brillo::SecureBlob&,
const brillo::Blob&),
(override));
MOCK_METHOD(StatusOr<u2f::Signature>,
G2fAttest,
(const brillo::Blob&,
const brillo::SecureBlob&,
const brillo::Blob&,
const brillo::Blob&,
const brillo::Blob&),
(override));
MOCK_METHOD(StatusOr<u2f::Signature>,
CorpAttest,
(const brillo::Blob&,
const brillo::SecureBlob&,
const brillo::Blob&,
const brillo::Blob&,
const brillo::Blob&,
const brillo::Blob&),
(override));
MOCK_METHOD(StatusOr<brillo::Blob>,
GetG2fAttestData,
(const brillo::Blob&,
const brillo::Blob&,
const brillo::Blob&,
const brillo::Blob&),
(override));
MOCK_METHOD(StatusOr<u2f::Config>, GetConfig, (), (override));
MOCK_METHOD(StatusOr<u2f::FipsInfo>, GetFipsInfo, (), (override));
MOCK_METHOD(Status, ActivateFips, (), (override));
private:
U2f* default_;
};
} // namespace hwsec
#endif // LIBHWSEC_BACKEND_MOCK_U2F_H_