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