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