| // Copyright 2022 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. |
| |
| #include <optional> |
| #include <set> |
| #include <string> |
| #include <utility> |
| |
| #include <cryptohome/proto_bindings/UserDataAuth.pb.h> |
| #include <dbus/cryptohome/dbus-constants.h> |
| #include <gtest/gtest.h> |
| #include <libhwsec-foundation/status/status_chain.h> |
| |
| #include "cryptohome/error/cryptohome_le_cred_error.h" |
| |
| namespace cryptohome { |
| |
| namespace error { |
| |
| class CryptohomeLECredErrorTest : public ::testing::Test { |
| protected: |
| const CryptohomeError::ErrorLocationPair kErrorLocationForTesting1 = |
| CryptohomeError::ErrorLocationPair( |
| static_cast<::cryptohome::error::CryptohomeError::ErrorLocation>(1), |
| std::string("Testing1")); |
| }; |
| |
| namespace { |
| |
| using hwsec_foundation::status::MakeStatus; |
| using hwsec_foundation::status::StatusChain; |
| |
| TEST_F(CryptohomeLECredErrorTest, BasicConstruction) { |
| auto err1 = MakeStatus<CryptohomeLECredError>( |
| kErrorLocationForTesting1, ErrorActionSet({ErrorAction::kFatal}), |
| LECredError::LE_CRED_ERROR_TOO_MANY_ATTEMPTS); |
| |
| ASSERT_FALSE(err1.ok()); |
| EXPECT_EQ(err1->local_location(), kErrorLocationForTesting1.location()); |
| EXPECT_EQ(err1->local_actions(), ErrorActionSet({ErrorAction::kFatal})); |
| EXPECT_EQ( |
| err1->local_legacy_error().value(), |
| user_data_auth::CryptohomeErrorCode::CRYPTOHOME_ERROR_TPM_DEFEND_LOCK); |
| EXPECT_EQ(err1->local_crypto_error(), CryptoError::CE_TPM_DEFEND_LOCK); |
| } |
| |
| TEST_F(CryptohomeLECredErrorTest, Success) { |
| StatusChain<CryptohomeLECredError> err; |
| EXPECT_TRUE(err.ok()); |
| } |
| |
| } // namespace |
| |
| } // namespace error |
| |
| } // namespace cryptohome |