blob: 275763c68ec9714f5952b598ed6e6bd53450e881 [file] [log] [blame]
Patrick Venture3e9899d2019-06-06 10:37:32 -07001/**
2 * The goal of these tests is to verify opening the ubi tarball changes state
3 * as expected and does not regress.
4 */
5#include "firmware_handler.hpp"
6#include "firmware_unittest.hpp"
7
8#include <string>
9#include <vector>
10
11#include <gtest/gtest.h>
12
13namespace ipmi_flash
14{
15namespace
16{
17
18using ::testing::UnorderedElementsAreArray;
19
20class FirmwareHandlerNotYetStartedUbitTest : public ::testing::Test
21{
22 protected:
23 void SetUp() override
24 {
25 blobs = {
26 {hashBlobId, &imageMock},
27 {ubiTarballBlobId, &imageMock},
28 };
29
30 std::unique_ptr<TriggerableActionInterface> verifyMock =
31 std::make_unique<TriggerMock>();
32 verifyMockPtr = reinterpret_cast<TriggerMock*>(verifyMock.get());
33
34 std::unique_ptr<TriggerableActionInterface> updateMock =
35 std::make_unique<TriggerMock>();
36 updateMockPtr = reinterpret_cast<TriggerMock*>(updateMock.get());
37
38 handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
Patrick Venture6d7735d2019-06-21 10:03:19 -070039 blobs, data, CreateTriggerMock(), std::move(verifyMock),
40 std::move(updateMock));
Patrick Venture3e9899d2019-06-06 10:37:32 -070041 }
42
43 void expectedState(FirmwareBlobHandler::UpdateState state)
44 {
45 auto realHandler = dynamic_cast<FirmwareBlobHandler*>(handler.get());
46 EXPECT_EQ(state, realHandler->getCurrentState());
47 }
48
49 void openToInProgress(const std::string& blobId)
50 {
51 EXPECT_CALL(imageMock, open(blobId)).WillOnce(Return(true));
52 EXPECT_TRUE(handler->open(session, flags, blobId));
53 expectedState(FirmwareBlobHandler::UpdateState::uploadInProgress);
54 }
55
56 ImageHandlerMock imageMock;
57 std::vector<HandlerPack> blobs;
58 std::vector<DataHandlerPack> data = {
59 {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr}};
60 std::unique_ptr<blobs::GenericBlobInterface> handler;
61 TriggerMock* verifyMockPtr;
62 TriggerMock* updateMockPtr;
63
64 std::uint16_t session = 1;
65 std::uint16_t flags =
66 blobs::OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi;
67};
68
69TEST_F(FirmwareHandlerNotYetStartedUbitTest,
70 OpeningTarballMovesToUploadInProgress)
71{
72 expectedState(FirmwareBlobHandler::UpdateState::notYetStarted);
73
Patrick Venture9a69f732019-06-17 14:05:13 -070074 EXPECT_THAT(handler->getBlobIds(),
75 UnorderedElementsAreArray({hashBlobId, ubiTarballBlobId}));
Patrick Venture3e9899d2019-06-06 10:37:32 -070076
77 openToInProgress(ubiTarballBlobId);
Patrick Venture9a69f732019-06-17 14:05:13 -070078 EXPECT_THAT(handler->getBlobIds(),
79 UnorderedElementsAreArray(
80 {hashBlobId, ubiTarballBlobId, activeImageBlobId}));
Patrick Venture3e9899d2019-06-06 10:37:32 -070081}
82
83} // namespace
84} // namespace ipmi_flash