xref: /openbmc/phosphor-ipmi-flash/bmc/version-handler/test/version_mock.hpp (revision 42a44c281cce08be0ca6251955f4fb73d30c8ced)
199d292a3SWilly Tu #pragma once
2cc7f385bSWilliam A. Kennington III #include "handler_config.hpp"
3abf17354SWilliam A. Kennington III #include "image_mock.hpp"
4abf17354SWilliam A. Kennington III #include "triggerable_mock.hpp"
5abf17354SWilliam A. Kennington III #include "version_handler.hpp"
6abf17354SWilliam A. Kennington III 
7abf17354SWilliam A. Kennington III #include <string>
8abf17354SWilliam A. Kennington III 
9abf17354SWilliam A. Kennington III namespace ipmi_flash
10abf17354SWilliam A. Kennington III {
11abf17354SWilliam A. Kennington III 
createMockVersionConfig(const std::string & id,ImageHandlerMock ** im=nullptr,TriggerMock ** tm=nullptr)12*42a44c28SPatrick Williams static HandlerConfig<VersionBlobHandler::ActionPack> createMockVersionConfig(
13*42a44c28SPatrick Williams     const std::string& id, ImageHandlerMock** im = nullptr,
14abf17354SWilliam A. Kennington III     TriggerMock** tm = nullptr)
15abf17354SWilliam A. Kennington III {
16abf17354SWilliam A. Kennington III     HandlerConfig<VersionBlobHandler::ActionPack> ret;
17abf17354SWilliam A. Kennington III     ret.blobId = id;
18abf17354SWilliam A. Kennington III     auto handler = std::make_unique<testing::StrictMock<ImageHandlerMock>>();
19abf17354SWilliam A. Kennington III     if (im != nullptr)
20abf17354SWilliam A. Kennington III     {
21abf17354SWilliam A. Kennington III         *im = handler.get();
22abf17354SWilliam A. Kennington III     }
23abf17354SWilliam A. Kennington III     ret.handler = std::move(handler);
24abf17354SWilliam A. Kennington III     ret.actions = std::make_unique<VersionBlobHandler::ActionPack>();
25abf17354SWilliam A. Kennington III     auto trigger = std::make_unique<testing::StrictMock<TriggerMock>>();
26abf17354SWilliam A. Kennington III     if (tm != nullptr)
27abf17354SWilliam A. Kennington III     {
28abf17354SWilliam A. Kennington III         *tm = trigger.get();
29abf17354SWilliam A. Kennington III     }
30abf17354SWilliam A. Kennington III     ret.actions->onOpen = std::move(trigger);
31abf17354SWilliam A. Kennington III     return ret;
32abf17354SWilliam A. Kennington III }
33abf17354SWilliam A. Kennington III 
34abf17354SWilliam A. Kennington III template <typename C, typename Im = std::map<std::string, ImageHandlerMock*>,
35abf17354SWilliam A. Kennington III           typename Tm = std::map<std::string, TriggerMock*>>
3699d292a3SWilly Tu static std::vector<HandlerConfig<VersionBlobHandler::ActionPack>>
createMockVersionConfigs(const C & ids,Im * im=nullptr,Tm * tm=nullptr)3799d292a3SWilly Tu     createMockVersionConfigs(const C& ids, Im* im = nullptr, Tm* tm = nullptr)
38abf17354SWilliam A. Kennington III {
39abf17354SWilliam A. Kennington III     std::vector<HandlerConfig<VersionBlobHandler::ActionPack>> ret;
4099d292a3SWilly Tu     ret.reserve(ids.size());
4199d292a3SWilly Tu     std::for_each(ids.begin(), ids.end(), [im, tm, &ret](const auto& id) {
4299d292a3SWilly Tu         ret.emplace_back(
43abf17354SWilliam A. Kennington III             createMockVersionConfig(id, im == nullptr ? nullptr : &(*im)[id],
44abf17354SWilliam A. Kennington III                                     tm == nullptr ? nullptr : &(*tm)[id]));
4599d292a3SWilly Tu     });
46abf17354SWilliam A. Kennington III     return ret;
47abf17354SWilliam A. Kennington III }
48abf17354SWilliam A. Kennington III 
49abf17354SWilliam A. Kennington III } // namespace ipmi_flash
50