xref: /openbmc/phosphor-ipmi-flash/bmc/firmware-handler/test/firmware_writemeta_unittest.cpp (revision b487eb47e566df7679e740559582f6d25597feba)
1ded66d0fSJason Ling #include "data_mock.hpp"
2ded66d0fSJason Ling #include "firmware_handler.hpp"
3ded66d0fSJason Ling #include "firmware_unittest.hpp"
4ded66d0fSJason Ling #include "image_mock.hpp"
5ded66d0fSJason Ling #include "triggerable_mock.hpp"
6ded66d0fSJason Ling #include "util.hpp"
7ded66d0fSJason Ling 
8ded66d0fSJason Ling #include <memory>
9ded66d0fSJason Ling #include <vector>
10ded66d0fSJason Ling 
11ded66d0fSJason Ling #include <gtest/gtest.h>
12ded66d0fSJason Ling 
13ded66d0fSJason Ling namespace ipmi_flash
14ded66d0fSJason Ling {
15ded66d0fSJason Ling namespace
16ded66d0fSJason Ling {
17ded66d0fSJason Ling 
18ded66d0fSJason Ling using ::testing::Eq;
19ded66d0fSJason Ling using ::testing::Return;
20ded66d0fSJason Ling 
21ded66d0fSJason Ling class FirmwareHandlerWriteMetaTest : public FakeLpcFirmwareTest
22ded66d0fSJason Ling {};
23ded66d0fSJason Ling 
TEST_F(FirmwareHandlerWriteMetaTest,WriteConfigParametersFailIfOverIPMI)24ded66d0fSJason Ling TEST_F(FirmwareHandlerWriteMetaTest, WriteConfigParametersFailIfOverIPMI)
25ded66d0fSJason Ling {
2656a2273fSJason Ling     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
27ded66d0fSJason Ling 
28*b487eb47SWilly Tu     EXPECT_TRUE(
29*b487eb47SWilly Tu         handler->open(0,
30*b487eb47SWilly Tu                       static_cast<std::uint16_t>(blobs::OpenFlags::write) |
31*b487eb47SWilly Tu                           FirmwareFlags::UpdateFlags::ipmi,
32*b487eb47SWilly Tu                       "asdf"));
33ded66d0fSJason Ling 
34ded66d0fSJason Ling     std::vector<std::uint8_t> bytes = {0xaa, 0x55};
35ded66d0fSJason Ling 
36ded66d0fSJason Ling     EXPECT_FALSE(handler->writeMeta(0, 0, bytes));
37ded66d0fSJason Ling }
38ded66d0fSJason Ling 
TEST_F(FirmwareHandlerWriteMetaTest,WriteConfigParametersPassedThrough)39ded66d0fSJason Ling TEST_F(FirmwareHandlerWriteMetaTest, WriteConfigParametersPassedThrough)
40ded66d0fSJason Ling {
41ded66d0fSJason Ling     EXPECT_CALL(*dataMock, open()).WillOnce(Return(true));
4256a2273fSJason Ling     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
43ded66d0fSJason Ling 
44*b487eb47SWilly Tu     EXPECT_TRUE(
45*b487eb47SWilly Tu         handler->open(0,
46*b487eb47SWilly Tu                       static_cast<std::uint16_t>(blobs::OpenFlags::write) |
47*b487eb47SWilly Tu                           FirmwareFlags::UpdateFlags::lpc,
48*b487eb47SWilly Tu                       "asdf"));
49ded66d0fSJason Ling 
50ded66d0fSJason Ling     std::vector<std::uint8_t> bytes = {0x01, 0x02, 0x03, 0x04};
51ded66d0fSJason Ling 
52ded66d0fSJason Ling     EXPECT_CALL(*dataMock, writeMeta(Eq(bytes))).WillOnce(Return(true));
53ded66d0fSJason Ling     EXPECT_TRUE(handler->writeMeta(0, 0, bytes));
54ded66d0fSJason Ling }
55ded66d0fSJason Ling 
56ded66d0fSJason Ling } // namespace
57ded66d0fSJason Ling } // namespace ipmi_flash
58