blob: 0f2d7522a87ae2e8fda1bded07c5d94fbc7d0b2c [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#include "dbus_environment.hpp"
2#include "helpers.hpp"
3#include "mocks/trigger_manager_mock.hpp"
4#include "params/trigger_params.hpp"
5#include "trigger.hpp"
6#include "utils/set_exception.hpp"
7
8using namespace testing;
9using namespace std::literals::string_literals;
10
11class TestTrigger : public Test
12{
13 public:
14 TriggerParams triggerParams;
15
16 std::unique_ptr<TriggerManagerMock> triggerManagerMockPtr =
17 std::make_unique<NiceMock<TriggerManagerMock>>();
18 std::unique_ptr<Trigger> sut;
19
20 void SetUp() override
21 {
22 sut = std::make_unique<Trigger>(
23 DbusEnvironment::getIoc(), DbusEnvironment::getObjServer(),
24 triggerParams.name(), triggerParams.isDiscrete(),
25 triggerParams.logToJournal(), triggerParams.logToRedfish(),
26 triggerParams.updateReport(), triggerParams.sensors(),
27 triggerParams.reportNames(), triggerParams.thresholds(),
28 *triggerManagerMockPtr);
29 }
30
31 template <class T>
32 static T getProperty(const std::string& path, const std::string& property)
33 {
34 std::promise<T> propertyPromise;
35 sdbusplus::asio::getProperty<T>(
36 *DbusEnvironment::getBus(), DbusEnvironment::serviceName(), path,
37 Trigger::triggerIfaceName, property,
38 [&propertyPromise](boost::system::error_code) {
39 utils::setException(propertyPromise, "GetProperty failed");
40 },
41 [&propertyPromise](T t) { propertyPromise.set_value(t); });
42 return DbusEnvironment::waitForFuture(propertyPromise.get_future());
43 }
44
45 boost::system::error_code deleteTrigger(const std::string& path)
46 {
47 std::promise<boost::system::error_code> methodPromise;
48 DbusEnvironment::getBus()->async_method_call(
49 [&methodPromise](boost::system::error_code ec) {
50 methodPromise.set_value(ec);
51 },
52 DbusEnvironment::serviceName(), path, Trigger::deleteIfaceName,
53 "Delete");
54 return DbusEnvironment::waitForFuture(methodPromise.get_future());
55 }
56};
57
58TEST_F(TestTrigger, checkIfPropertiesAreSet)
59{
60 EXPECT_THAT(getProperty<bool>(sut->getPath(), "Discrete"),
61 Eq(triggerParams.isDiscrete()));
62 EXPECT_THAT(getProperty<bool>(sut->getPath(), "LogToJournal"),
63 Eq(triggerParams.logToJournal()));
64 EXPECT_THAT(getProperty<bool>(sut->getPath(), "LogToRedfish"),
65 Eq(triggerParams.logToRedfish()));
66 EXPECT_THAT(getProperty<bool>(sut->getPath(), "UpdateReport"),
67 Eq(triggerParams.updateReport()));
68 EXPECT_THAT((getProperty<std::vector<
69 std::pair<sdbusplus::message::object_path, std::string>>>(
70 sut->getPath(), "Sensors")),
71 Eq(triggerParams.sensors()));
72 EXPECT_THAT(
73 getProperty<std::vector<std::string>>(sut->getPath(), "ReportNames"),
74 Eq(triggerParams.reportNames()));
75 EXPECT_THAT(
76 getProperty<TriggerThresholdParams>(sut->getPath(), "Thresholds"),
77 Eq(triggerParams.thresholds()));
78}
79
80TEST_F(TestTrigger, deleteTrigger)
81{
82 EXPECT_CALL(*triggerManagerMockPtr, removeTrigger(sut.get()));
83 auto ec = deleteTrigger(sut->getPath());
84 EXPECT_THAT(ec, Eq(boost::system::errc::success));
85}
86
87TEST_F(TestTrigger, deletingNonExistingTriggerReturnInvalidRequestDescriptor)
88{
89 auto ec = deleteTrigger(Trigger::triggerDir + "NonExisting"s);
90 EXPECT_THAT(ec.value(), Eq(EBADR));
91}