blob: a5d60f53153e18ada860e902f67df6ebd286ff8f [file] [log] [blame]
Patrick Venture21be45a2018-11-06 12:08:52 -08001#include "firmware_handler.hpp"
Patrick Venturea78e39f2018-11-06 18:37:06 -08002#include "image_mock.hpp"
Patrick Venture1d66fe62019-06-03 14:57:27 -07003#include "triggerable_mock.hpp"
Patrick Venture7dad86f2019-05-17 08:52:20 -07004#include "util.hpp"
Patrick Venture21be45a2018-11-06 12:08:52 -08005
Patrick Venture52854622018-11-06 12:30:00 -08006#include <algorithm>
Patrick Venturea78e39f2018-11-06 18:37:06 -08007#include <vector>
Patrick Venture21be45a2018-11-06 12:08:52 -08008
9#include <gtest/gtest.h>
10
Patrick Venture1d5a31c2019-05-20 11:38:22 -070011namespace ipmi_flash
Patrick Venture21be45a2018-11-06 12:08:52 -080012{
Patrick Venture930c7b72019-05-24 11:11:08 -070013namespace
14{
15
16using ::testing::UnorderedElementsAreArray;
Patrick Venture52854622018-11-06 12:30:00 -080017
18TEST(FirmwareHandlerTest, CreateEmptyListVerifyFails)
Patrick Venture21be45a2018-11-06 12:08:52 -080019{
Patrick Venture1cde5f92018-11-07 08:26:47 -080020 std::vector<DataHandlerPack> data = {
Patrick Venture05abf7e2018-11-09 11:02:56 -080021 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
Patrick Venture1cde5f92018-11-07 08:26:47 -080022 };
23
Patrick Venture4eb55952018-11-16 15:36:24 -080024 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture1d66fe62019-06-03 14:57:27 -070025 {}, data, CreateTriggerMock(), CreateTriggerMock());
Patrick Venture1cde5f92018-11-07 08:26:47 -080026 EXPECT_EQ(handler, nullptr);
27}
28TEST(FirmwareHandlerTest, CreateEmptyDataHandlerListFails)
29{
30 ImageHandlerMock imageMock;
31
32 std::vector<HandlerPack> blobs = {
Patrick Venture7dad86f2019-05-17 08:52:20 -070033 {hashBlobId, &imageMock},
Patrick Venture1cde5f92018-11-07 08:26:47 -080034 {"asdf", &imageMock},
35 };
36
Patrick Venture4eb55952018-11-16 15:36:24 -080037 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture1d66fe62019-06-03 14:57:27 -070038 blobs, {}, CreateTriggerMock(), CreateTriggerMock());
Patrick Venture52854622018-11-06 12:30:00 -080039 EXPECT_EQ(handler, nullptr);
40}
Patrick Venture18235e62018-11-08 10:21:09 -080041TEST(FirmwareHandlerTest, VerifyHashRequiredForHappiness)
Patrick Venture52854622018-11-06 12:30:00 -080042{
Patrick Venture18235e62018-11-08 10:21:09 -080043 /* This works fine only if you also pass in the hash handler. */
Patrick Venturea78e39f2018-11-06 18:37:06 -080044 ImageHandlerMock imageMock;
45
46 std::vector<HandlerPack> blobs = {
47 {"asdf", &imageMock},
48 };
Patrick Venture1cde5f92018-11-07 08:26:47 -080049 std::vector<DataHandlerPack> data = {
Patrick Venture05abf7e2018-11-09 11:02:56 -080050 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
Patrick Venture1cde5f92018-11-07 08:26:47 -080051 };
Patrick Venturea78e39f2018-11-06 18:37:06 -080052
Patrick Venture4eb55952018-11-16 15:36:24 -080053 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture1d66fe62019-06-03 14:57:27 -070054 blobs, data, CreateTriggerMock(), CreateTriggerMock());
Patrick Venture18235e62018-11-08 10:21:09 -080055 EXPECT_EQ(handler, nullptr);
56
Patrick Venture7dad86f2019-05-17 08:52:20 -070057 blobs.push_back({hashBlobId, &imageMock});
Patrick Venture18235e62018-11-08 10:21:09 -080058
Patrick Venture4eb55952018-11-16 15:36:24 -080059 handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture1d66fe62019-06-03 14:57:27 -070060 blobs, data, CreateTriggerMock(), CreateTriggerMock());
Patrick Venture21be45a2018-11-06 12:08:52 -080061 auto result = handler->getBlobIds();
Patrick Venture930c7b72019-05-24 11:11:08 -070062 std::vector<std::string> expectedBlobs = {"asdf", hashBlobId};
63 EXPECT_THAT(result, UnorderedElementsAreArray(expectedBlobs));
Patrick Venture21be45a2018-11-06 12:08:52 -080064}
Patrick Venture930c7b72019-05-24 11:11:08 -070065
66} // namespace
Patrick Venture1d5a31c2019-05-20 11:38:22 -070067} // namespace ipmi_flash