1 #include "helper.hpp" 2 #include "status.hpp" 3 4 #include <ipmiblob/test/blob_interface_mock.hpp> 5 6 #include <cstdint> 7 8 #include <gtest/gtest.h> 9 10 namespace host_tool 11 { 12 using ::testing::Return; 13 using ::testing::TypedEq; 14 15 class UpdaterTest : public ::testing::Test 16 { 17 protected: 18 ipmiblob::BlobInterfaceMock blobMock; 19 std::uint16_t session = 0xbeef; 20 }; 21 22 TEST_F(UpdaterTest, PollStatusReturnsAfterSuccess) 23 { 24 ipmiblob::StatResponse verificationResponse = {}; 25 /* the other details of the response are ignored, and should be. */ 26 verificationResponse.metadata.push_back( 27 static_cast<std::uint8_t>(ipmi_flash::ActionStatus::success)); 28 29 EXPECT_CALL(blobMock, getStat(TypedEq<std::uint16_t>(session))) 30 .WillOnce(Return(verificationResponse)); 31 32 EXPECT_TRUE(pollStatus(session, &blobMock)); 33 } 34 35 TEST_F(UpdaterTest, PollStatusReturnsAfterFailure) 36 { 37 ipmiblob::StatResponse verificationResponse = {}; 38 /* the other details of the response are ignored, and should be. */ 39 verificationResponse.metadata.push_back( 40 static_cast<std::uint8_t>(ipmi_flash::ActionStatus::failed)); 41 42 EXPECT_CALL(blobMock, getStat(TypedEq<std::uint16_t>(session))) 43 .WillOnce(Return(verificationResponse)); 44 45 EXPECT_FALSE(pollStatus(session, &blobMock)); 46 } 47 48 } // namespace host_tool 49