blob: 13399fbed8ac17f44916e871bdc00200fb7960d9 [file] [log] [blame]
Patrick Venture8c535332018-11-08 15:58:00 -08001#include "data_mock.hpp"
2#include "firmware_handler.hpp"
3#include "image_mock.hpp"
4
5#include <gtest/gtest.h>
6
7namespace blobs
8{
9using ::testing::Eq;
10using ::testing::Return;
11
12TEST(FirmwareHandlerWriteMetaTest, WriteConfigParametersFailIfOverIPMI)
13{
14 ImageHandlerMock imageMock1, imageMock2;
15 std::vector<HandlerPack> blobs = {
16 {FirmwareBlobHandler::hashBlobID, &imageMock1},
17 {"asdf", &imageMock2},
18 };
19
20 DataHandlerMock dataMock;
21
22 std::vector<DataHandlerPack> data = {
Patrick Venture05abf7e2018-11-09 11:02:56 -080023 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
24 {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
Patrick Venture8c535332018-11-08 15:58:00 -080025 };
26
27 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
28
29 EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
30
31 EXPECT_TRUE(handler->open(
Patrick Venture05abf7e2018-11-09 11:02:56 -080032 0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi, "asdf"));
Patrick Venture8c535332018-11-08 15:58:00 -080033
34 std::vector<std::uint8_t> bytes = {0xaa, 0x55};
35
36 EXPECT_FALSE(handler->writeMeta(0, 0, bytes));
37}
38
39TEST(FirmwareHandlerWriteMetaTest, WriteConfigParametersPassedThrough)
40{
41 ImageHandlerMock imageMock1, imageMock2;
42 std::vector<HandlerPack> blobs = {
43 {FirmwareBlobHandler::hashBlobID, &imageMock1},
44 {"asdf", &imageMock2},
45 };
46
47 DataHandlerMock dataMock;
48
49 std::vector<DataHandlerPack> data = {
Patrick Venture05abf7e2018-11-09 11:02:56 -080050 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
51 {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
Patrick Venture8c535332018-11-08 15:58:00 -080052 };
53
54 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
55
Patrick Venture6e307a72018-11-09 18:21:17 -080056 EXPECT_CALL(dataMock, open()).WillOnce(Return(true));
Patrick Venture8c535332018-11-08 15:58:00 -080057 EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
58
59 EXPECT_TRUE(handler->open(
Patrick Venture05abf7e2018-11-09 11:02:56 -080060 0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::lpc, "asdf"));
Patrick Venture8c535332018-11-08 15:58:00 -080061
62 std::vector<std::uint8_t> bytes = {0x01, 0x02, 0x03, 0x04};
63
64 EXPECT_CALL(dataMock, write(Eq(bytes))).WillOnce(Return(true));
65 EXPECT_TRUE(handler->writeMeta(0, 0, bytes));
66}
67
68} // namespace blobs