| // 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. | |
| #include "vtpm/backends/vek_cert.h" | |
| #include <gmock/gmock.h> | |
| #include <gtest/gtest.h> | |
| #include <trunks/tpm_generated.h> | |
| #include "vtpm/backends/mock_virtual_endorsement.h" | |
| namespace vtpm { | |
| namespace { | |
| using ::testing::Return; | |
| using ::testing::StrictMock; | |
| constexpr char kFakeEkCert[] = "fake ek cert"; | |
| } // namespace | |
| // A placeholder test fixture. | |
| class VekCertTest : public testing::Test { | |
| protected: | |
| StrictMock<MockVirtualEndorsement> mock_endorsement_; | |
| VekCert vek_cert_{&mock_endorsement_}; | |
| }; | |
| namespace { | |
| TEST_F(VekCertTest, Success) { | |
| EXPECT_CALL(mock_endorsement_, Create()) | |
| .WillOnce(Return(trunks::TPM_RC_SUCCESS)); | |
| EXPECT_CALL(mock_endorsement_, GetEndorsementCertificate()) | |
| .WillOnce(Return(kFakeEkCert)); | |
| std::string blob_out; | |
| EXPECT_EQ(vek_cert_.Get(blob_out), trunks::TPM_RC_SUCCESS); | |
| EXPECT_EQ(blob_out, kFakeEkCert); | |
| } | |
| TEST_F(VekCertTest, Failure) { | |
| EXPECT_CALL(mock_endorsement_, Create()) | |
| .WillOnce(Return(trunks::TPM_RC_FAILURE)); | |
| std::string blob_out; | |
| EXPECT_EQ(vek_cert_.Get(blob_out), trunks::TPM_RC_FAILURE); | |
| } | |
| } // namespace | |
| } // namespace vtpm |