blob: 7ab224d094cbbea7a6d19dd6414c04244f34ded0 [file] [log] [blame]
Patrick Venture21be45a2018-11-06 12:08:52 -08001#include "firmware_handler.hpp"
Patrick Venture84778b82019-06-26 20:11:09 -07002#include "flags.hpp"
Patrick Venturea78e39f2018-11-06 18:37:06 -08003#include "image_mock.hpp"
Patrick Venture1d66fe62019-06-03 14:57:27 -07004#include "triggerable_mock.hpp"
Patrick Venture7dad86f2019-05-17 08:52:20 -07005#include "util.hpp"
Patrick Venture21be45a2018-11-06 12:08:52 -08006
Patrick Venture52854622018-11-06 12:30:00 -08007#include <algorithm>
Patrick Venturea78e39f2018-11-06 18:37:06 -08008#include <vector>
Patrick Venture21be45a2018-11-06 12:08:52 -08009
10#include <gtest/gtest.h>
11
Patrick Venture1d5a31c2019-05-20 11:38:22 -070012namespace ipmi_flash
Patrick Venture21be45a2018-11-06 12:08:52 -080013{
Patrick Venture930c7b72019-05-24 11:11:08 -070014namespace
15{
16
17using ::testing::UnorderedElementsAreArray;
Patrick Venture52854622018-11-06 12:30:00 -080018
19TEST(FirmwareHandlerTest, CreateEmptyListVerifyFails)
Patrick Venture21be45a2018-11-06 12:08:52 -080020{
Patrick Venture1cde5f92018-11-07 08:26:47 -080021 std::vector<DataHandlerPack> data = {
Patrick Venture84778b82019-06-26 20:11:09 -070022 {FirmwareFlags::UpdateFlags::ipmi, nullptr},
Patrick Venture1cde5f92018-11-07 08:26:47 -080023 };
24
Patrick Venture4eb55952018-11-16 15:36:24 -080025 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture6d7735d2019-06-21 10:03:19 -070026 {}, data, CreateTriggerMock(), CreateTriggerMock(),
27 CreateTriggerMock());
Patrick Venture1cde5f92018-11-07 08:26:47 -080028 EXPECT_EQ(handler, nullptr);
29}
30TEST(FirmwareHandlerTest, CreateEmptyDataHandlerListFails)
31{
32 ImageHandlerMock imageMock;
33
34 std::vector<HandlerPack> blobs = {
Patrick Venture7dad86f2019-05-17 08:52:20 -070035 {hashBlobId, &imageMock},
Patrick Venture1cde5f92018-11-07 08:26:47 -080036 {"asdf", &imageMock},
37 };
38
Patrick Venture4eb55952018-11-16 15:36:24 -080039 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture6d7735d2019-06-21 10:03:19 -070040 blobs, {}, CreateTriggerMock(), CreateTriggerMock(),
41 CreateTriggerMock());
Patrick Venture52854622018-11-06 12:30:00 -080042 EXPECT_EQ(handler, nullptr);
43}
Patrick Venture18235e62018-11-08 10:21:09 -080044TEST(FirmwareHandlerTest, VerifyHashRequiredForHappiness)
Patrick Venture52854622018-11-06 12:30:00 -080045{
Patrick Venture18235e62018-11-08 10:21:09 -080046 /* This works fine only if you also pass in the hash handler. */
Patrick Venturea78e39f2018-11-06 18:37:06 -080047 ImageHandlerMock imageMock;
48
49 std::vector<HandlerPack> blobs = {
50 {"asdf", &imageMock},
51 };
Patrick Venture1cde5f92018-11-07 08:26:47 -080052 std::vector<DataHandlerPack> data = {
Patrick Venture84778b82019-06-26 20:11:09 -070053 {FirmwareFlags::UpdateFlags::ipmi, nullptr},
Patrick Venture1cde5f92018-11-07 08:26:47 -080054 };
Patrick Venturea78e39f2018-11-06 18:37:06 -080055
Patrick Venture4eb55952018-11-16 15:36:24 -080056 auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture6d7735d2019-06-21 10:03:19 -070057 blobs, data, CreateTriggerMock(), CreateTriggerMock(),
58 CreateTriggerMock());
Patrick Venture18235e62018-11-08 10:21:09 -080059 EXPECT_EQ(handler, nullptr);
60
Patrick Venture7dad86f2019-05-17 08:52:20 -070061 blobs.push_back({hashBlobId, &imageMock});
Patrick Venture18235e62018-11-08 10:21:09 -080062
Patrick Venture4eb55952018-11-16 15:36:24 -080063 handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture6d7735d2019-06-21 10:03:19 -070064 blobs, data, CreateTriggerMock(), CreateTriggerMock(),
65 CreateTriggerMock());
Patrick Venture21be45a2018-11-06 12:08:52 -080066 auto result = handler->getBlobIds();
Patrick Venture930c7b72019-05-24 11:11:08 -070067 std::vector<std::string> expectedBlobs = {"asdf", hashBlobId};
68 EXPECT_THAT(result, UnorderedElementsAreArray(expectedBlobs));
Patrick Venture21be45a2018-11-06 12:08:52 -080069}
Patrick Venture930c7b72019-05-24 11:11:08 -070070
71} // namespace
Patrick Venture1d5a31c2019-05-20 11:38:22 -070072} // namespace ipmi_flash