blob: 0aa7e1230ac3dbe3e05c7002b67879ea3414e3da [file] [log] [blame]
Patrick Venture1361a122019-05-20 07:36:05 -07001#pragma once
2
Patrick Venture27ac5822019-05-20 17:39:31 -07003#include "bmc_update_mock.hpp"
Patrick Venture1361a122019-05-20 07:36:05 -07004#include "data_mock.hpp"
5#include "firmware_handler.hpp"
6#include "image_mock.hpp"
7#include "verification_mock.hpp"
8
9#include <memory>
10#include <vector>
11
12#include <gmock/gmock.h>
13#include <gtest/gtest.h>
14
Patrick Venture1d5a31c2019-05-20 11:38:22 -070015namespace ipmi_flash
Patrick Venture1361a122019-05-20 07:36:05 -070016{
17
Patrick Venture8a4f2aa2019-05-23 08:40:21 -070018class IpmiOnlyFirmwareStaticTest : public ::testing::Test
19{
20 protected:
Patrick Venture8a4f2aa2019-05-23 08:40:21 -070021 void SetUp() override
22 {
23 blobs = {
24 {hashBlobId, &imageMock},
25 {staticLayoutBlobId, &imageMock},
26 };
Patrick Venture19044e12019-05-23 19:30:28 -070027
28 std::unique_ptr<VerificationInterface> verifyMock =
29 std::make_unique<VerificationMock>();
30 verifyMockPtr = reinterpret_cast<VerificationMock*>(verifyMock.get());
31
Patrick Venture1a406fe2019-05-31 07:29:56 -070032 std::unique_ptr<UpdateInterface> updateMock =
33 std::make_unique<UpdateMock>();
34 updateMockPtr = reinterpret_cast<UpdateMock*>(updateMock.get());
35
Patrick Venture8a4f2aa2019-05-23 08:40:21 -070036 handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture1a406fe2019-05-31 07:29:56 -070037 blobs, data, std::move(verifyMock), std::move(updateMock));
Patrick Venture8a4f2aa2019-05-23 08:40:21 -070038 }
Patrick Venture19044e12019-05-23 19:30:28 -070039
Patrick Venture6fdd02e2019-05-28 13:02:04 -070040 void expectedState(FirmwareBlobHandler::UpdateState state)
41 {
42 auto realHandler = dynamic_cast<FirmwareBlobHandler*>(handler.get());
43 EXPECT_EQ(state, realHandler->getCurrentState());
44 }
45
Patrick Venture19044e12019-05-23 19:30:28 -070046 ImageHandlerMock imageMock;
47 std::vector<HandlerPack> blobs;
48 std::vector<DataHandlerPack> data = {
49 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
50 std::unique_ptr<blobs::GenericBlobInterface> handler;
51 VerificationMock* verifyMockPtr;
Patrick Venture1a406fe2019-05-31 07:29:56 -070052 UpdateMock* updateMockPtr;
Patrick Venture8a4f2aa2019-05-23 08:40:21 -070053};
54
Patrick Venture1361a122019-05-20 07:36:05 -070055class IpmiOnlyFirmwareTest : public ::testing::Test
56{
57 protected:
58 ImageHandlerMock imageMock;
59 std::vector<HandlerPack> blobs;
60 std::vector<DataHandlerPack> data = {
61 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
Patrick Venture1d5a31c2019-05-20 11:38:22 -070062 std::unique_ptr<blobs::GenericBlobInterface> handler;
Patrick Venture1361a122019-05-20 07:36:05 -070063
64 void SetUp() override
65 {
66 blobs = {
67 {hashBlobId, &imageMock},
68 {"asdf", &imageMock},
69 };
70 handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture27ac5822019-05-20 17:39:31 -070071 blobs, data, CreateVerifyMock(), CreateUpdateMock());
Patrick Venture1361a122019-05-20 07:36:05 -070072 }
73};
74
75class FakeLpcFirmwareTest : public ::testing::Test
76{
77 protected:
78 DataHandlerMock dataMock;
79 ImageHandlerMock imageMock;
80 std::vector<HandlerPack> blobs;
81 std::vector<DataHandlerPack> data;
Patrick Venture1d5a31c2019-05-20 11:38:22 -070082 std::unique_ptr<blobs::GenericBlobInterface> handler;
Patrick Venture1361a122019-05-20 07:36:05 -070083
84 void SetUp() override
85 {
86 blobs = {
87 {hashBlobId, &imageMock},
88 {"asdf", &imageMock},
89 };
90 data = {
91 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
92 {FirmwareBlobHandler::UpdateFlags::lpc, &dataMock},
93 };
94 handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture27ac5822019-05-20 17:39:31 -070095 blobs, data, CreateVerifyMock(), CreateUpdateMock());
Patrick Venture1361a122019-05-20 07:36:05 -070096 }
97};
98
Patrick Venture1d5a31c2019-05-20 11:38:22 -070099} // namespace ipmi_flash