1*ded66d0fSJason Ling #include "firmware_handler.hpp"
2*ded66d0fSJason Ling #include "flags.hpp"
3*ded66d0fSJason Ling #include "image_mock.hpp"
4*ded66d0fSJason Ling #include "triggerable_mock.hpp"
5*ded66d0fSJason Ling #include "util.hpp"
6*ded66d0fSJason Ling 
7*ded66d0fSJason Ling #include <memory>
8*ded66d0fSJason Ling #include <vector>
9*ded66d0fSJason Ling 
10*ded66d0fSJason Ling #include <gtest/gtest.h>
11*ded66d0fSJason Ling 
12*ded66d0fSJason Ling namespace ipmi_flash
13*ded66d0fSJason Ling {
14*ded66d0fSJason Ling namespace
15*ded66d0fSJason Ling {
16*ded66d0fSJason Ling 
17*ded66d0fSJason Ling /* This test ensures the stat() method preserves compatibility with older host
18*ded66d0fSJason Ling  * tools by reporting that all transports are supported. */
19*ded66d0fSJason Ling TEST(FirmwareHandlerStatTest, StatOnInactiveBlobIDReturnsAllTransports)
20*ded66d0fSJason Ling {
21*ded66d0fSJason Ling     /* Test that the metadata information returned matches expectations for this
22*ded66d0fSJason Ling      * case.
23*ded66d0fSJason Ling      *
24*ded66d0fSJason Ling      * canHandle has already been called at this point, so we don't need to test
25*ded66d0fSJason Ling      * the input for this function.
26*ded66d0fSJason Ling      */
27*ded66d0fSJason Ling 
28*ded66d0fSJason Ling     std::vector<HandlerPack> blobs;
29*ded66d0fSJason Ling     blobs.emplace_back(hashBlobId, std::make_unique<ImageHandlerMock>());
30*ded66d0fSJason Ling     blobs.emplace_back("asdf", std::make_unique<ImageHandlerMock>());
31*ded66d0fSJason Ling 
32*ded66d0fSJason Ling     std::vector<DataHandlerPack> data;
33*ded66d0fSJason Ling     data.emplace_back(FirmwareFlags::UpdateFlags::ipmi, nullptr);
34*ded66d0fSJason Ling 
35*ded66d0fSJason Ling     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
36*ded66d0fSJason Ling         std::move(blobs), std::move(data), CreateActionMap("asdf"));
37*ded66d0fSJason Ling 
38*ded66d0fSJason Ling     blobs::BlobMeta meta;
39*ded66d0fSJason Ling     EXPECT_TRUE(handler->stat("asdf", &meta));
40*ded66d0fSJason Ling     /* All transport flags are set */
41*ded66d0fSJason Ling     EXPECT_EQ(0xff00, meta.blobState);
42*ded66d0fSJason Ling }
43*ded66d0fSJason Ling 
44*ded66d0fSJason Ling } // namespace
45*ded66d0fSJason Ling } // namespace ipmi_flash
46