xref: /openbmc/phosphor-ipmi-flash/bmc/version-handler/test/version_createhandler_unittest.cpp (revision c78bfc823049e96522eaab333d74d16c7efd6917)
1 #include "flags.hpp"
2 #include "image_mock.hpp"
3 #include "triggerable_mock.hpp"
4 #include "util.hpp"
5 #include "version_handler.hpp"
6 
7 #include <array>
8 #include <string>
9 #include <vector>
10 
11 #include <gtest/gtest.h>
12 
13 namespace ipmi_flash
14 {
15 
16 TEST(VersionHandlerCanHandleTest, VerifyGoodInfoMapPasses)
17 {
18     VersionInfoMap test;
19     std::array blobNames{"blob0", "blob1", "blob2", "blob3"};
20     for (const auto& blobName : blobNames)
21     {
22         test.try_emplace(blobName,
23                          VersionInfoPack(blobName,
24                                          std::make_unique<VersionActionPack>(
25                                              CreateTriggerMock()),
26                                          CreateImageMock()));
27     }
28     auto handler = VersionBlobHandler::create(std::move(test));
29     EXPECT_NE(handler, nullptr);
30 }
31 
32 TEST(VersionCreateHandlerTest, VerifyEmptyInfoMapFails)
33 {
34     VersionInfoMap test;
35     auto handler = VersionBlobHandler::create(std::move(test));
36     EXPECT_EQ(handler, nullptr);
37 }
38 
39 TEST(VersionHandlerCanHandleTest, VerifyInfoMapWithNullActionPackFails)
40 {
41     VersionInfoMap test;
42     test.try_emplace("blob0",
43                      VersionInfoPack("blob0", nullptr, CreateImageMock()));
44     auto handler = VersionBlobHandler::create(std::move(test));
45     EXPECT_EQ(handler, nullptr);
46 }
47 
48 TEST(VersionHandlerCanHandleTest, VerifyInfoMapWithNullTriggerableActionFails)
49 {
50     VersionInfoMap test;
51     test.try_emplace(
52         "blob0",
53         VersionInfoPack("blob0", std::make_unique<VersionActionPack>(nullptr),
54                         CreateImageMock()));
55     auto handler = VersionBlobHandler::create(std::move(test));
56     EXPECT_EQ(handler, nullptr);
57 }
58 
59 TEST(VersionHandlerCanHandleTest, VerifyInfoMapWithNullImageHandlerFails)
60 {
61     VersionInfoMap test;
62     test.try_emplace(
63         "blob0",
64         VersionInfoPack(
65             "blob0", std::make_unique<VersionActionPack>(CreateTriggerMock()),
66             nullptr));
67     auto handler = VersionBlobHandler::create(std::move(test));
68     EXPECT_EQ(handler, nullptr);
69 }
70 } // namespace ipmi_flash
71