1 #pragma once
2 #include "handler_config.hpp"
3 #include "image_mock.hpp"
4 #include "triggerable_mock.hpp"
5 #include "version_handler.hpp"
6
7 #include <string>
8
9 namespace ipmi_flash
10 {
11
createMockVersionConfig(const std::string & id,ImageHandlerMock ** im=nullptr,TriggerMock ** tm=nullptr)12 static HandlerConfig<VersionBlobHandler::ActionPack> createMockVersionConfig(
13 const std::string& id, ImageHandlerMock** im = nullptr,
14 TriggerMock** tm = nullptr)
15 {
16 HandlerConfig<VersionBlobHandler::ActionPack> ret;
17 ret.blobId = id;
18 auto handler = std::make_unique<testing::StrictMock<ImageHandlerMock>>();
19 if (im != nullptr)
20 {
21 *im = handler.get();
22 }
23 ret.handler = std::move(handler);
24 ret.actions = std::make_unique<VersionBlobHandler::ActionPack>();
25 auto trigger = std::make_unique<testing::StrictMock<TriggerMock>>();
26 if (tm != nullptr)
27 {
28 *tm = trigger.get();
29 }
30 ret.actions->onOpen = std::move(trigger);
31 return ret;
32 }
33
34 template <typename C, typename Im = std::map<std::string, ImageHandlerMock*>,
35 typename Tm = std::map<std::string, TriggerMock*>>
36 static std::vector<HandlerConfig<VersionBlobHandler::ActionPack>>
createMockVersionConfigs(const C & ids,Im * im=nullptr,Tm * tm=nullptr)37 createMockVersionConfigs(const C& ids, Im* im = nullptr, Tm* tm = nullptr)
38 {
39 std::vector<HandlerConfig<VersionBlobHandler::ActionPack>> ret;
40 ret.reserve(ids.size());
41 std::for_each(ids.begin(), ids.end(), [im, tm, &ret](const auto& id) {
42 ret.emplace_back(
43 createMockVersionConfig(id, im == nullptr ? nullptr : &(*im)[id],
44 tm == nullptr ? nullptr : &(*tm)[id]));
45 });
46 return ret;
47 }
48
49 } // namespace ipmi_flash
50