xref: /openbmc/sdbusplus/include/sdbusplus/test/sdbus_mock.hpp (revision 9737e15ff1628fb8fdb80da525594789cc1918e4)
1 #pragma once
2 
3 #include <sdbusplus/bus.hpp>
4 #include <sdbusplus/sdbus.hpp>
5 
6 #include "gmock/gmock.h"
7 
8 namespace sdbusplus
9 {
10 
11 class SdBusMock : public SdBusInterface
12 {
13   public:
~SdBusMock()14     virtual ~SdBusMock() override {}
15 
16     MOCK_METHOD(int, sd_bus_add_object_manager,
17                 (sd_bus*, sd_bus_slot**, const char*), (override));
18 
19     MOCK_METHOD(int, sd_bus_add_object_vtable,
20                 (sd_bus*, sd_bus_slot**, const char*, const char*,
21                  const sd_bus_vtable*, void*),
22                 (override));
23 
24     MOCK_METHOD(int, sd_bus_add_match,
25                 (sd_bus*, sd_bus_slot**, const char*, sd_bus_message_handler_t,
26                  void*),
27                 (override));
28     MOCK_METHOD(int, sd_bus_attach_event, (sd_bus*, sd_event*, int),
29                 (override));
30     MOCK_METHOD(int, sd_bus_call,
31                 (sd_bus*, sd_bus_message*, uint64_t, sd_bus_error*,
32                  sd_bus_message**),
33                 (override));
34     MOCK_METHOD(int, sd_bus_call_async,
35                 (sd_bus*, sd_bus_slot**, sd_bus_message*,
36                  sd_bus_message_handler_t, void*, uint64_t),
37                 (override));
38     MOCK_METHOD(int, sd_bus_detach_event, (sd_bus*), (override));
39 
40     MOCK_METHOD(int, sd_bus_emit_interfaces_added_strv,
41                 (sd_bus*, const char*, char**), (override));
42     MOCK_METHOD(int, sd_bus_emit_interfaces_removed_strv,
43                 (sd_bus*, const char*, char**), (override));
44     MOCK_METHOD(int, sd_bus_emit_object_added, (sd_bus*, const char*),
45                 (override));
46     MOCK_METHOD(int, sd_bus_emit_object_removed, (sd_bus*, const char*),
47                 (override));
48     MOCK_METHOD(int, sd_bus_emit_properties_changed_strv,
49                 (sd_bus*, const char*, const char*, const char**), (override));
50 
51     MOCK_METHOD(int, sd_bus_error_set,
52                 (sd_bus_error*, const char*, const char*), (override));
53     MOCK_METHOD(int, sd_bus_error_set_const,
54                 (sd_bus_error*, const char*, const char*), (override));
55     MOCK_METHOD(int, sd_bus_error_get_errno, (const sd_bus_error*), (override));
56     MOCK_METHOD(int, sd_bus_error_set_errno, (sd_bus_error*, int), (override));
57     MOCK_METHOD(int, sd_bus_error_is_set, (const sd_bus_error*), (override));
58     MOCK_METHOD(void, sd_bus_error_free, (sd_bus_error*), (override));
59 
60     MOCK_METHOD(sd_event*, sd_bus_get_event, (sd_bus*), (override));
61     MOCK_METHOD(int, sd_bus_get_fd, (sd_bus*), (override));
62     MOCK_METHOD(int, sd_bus_get_events, (sd_bus*), (override));
63     MOCK_METHOD(int, sd_bus_get_timeout, (sd_bus*, uint64_t* timeout_usec),
64                 (override));
65     MOCK_METHOD(int, sd_bus_get_unique_name, (sd_bus*, const char**),
66                 (override));
67 
68     MOCK_METHOD(int, sd_bus_list_names, (sd_bus*, char***, char***),
69                 (override));
70 
71     MOCK_METHOD(int, sd_bus_message_append_basic,
72                 (sd_bus_message*, char, const void*), (override));
73     MOCK_METHOD(int, sd_bus_message_append_string_iovec,
74                 (sd_bus_message*, const struct iovec* iov, int iovcnt),
75                 (override));
76     MOCK_METHOD(int, sd_bus_message_at_end, (sd_bus_message*, int), (override));
77     MOCK_METHOD(int, sd_bus_message_close_container, (sd_bus_message*),
78                 (override));
79     MOCK_METHOD(int, sd_bus_message_enter_container,
80                 (sd_bus_message*, char, const char*), (override));
81     MOCK_METHOD(int, sd_bus_message_exit_container, (sd_bus_message*),
82                 (override));
83 
84     MOCK_METHOD(sd_bus*, sd_bus_message_get_bus, (sd_bus_message*), (override));
85     MOCK_METHOD(int, sd_bus_message_get_type, (sd_bus_message*, uint8_t*),
86                 (override));
87     MOCK_METHOD(int, sd_bus_message_get_cookie, (sd_bus_message*, uint64_t*),
88                 (override));
89     MOCK_METHOD(int, sd_bus_message_get_reply_cookie,
90                 (sd_bus_message*, uint64_t*), (override));
91     MOCK_METHOD(const char*, sd_bus_message_get_destination, (sd_bus_message*),
92                 (override));
93     MOCK_METHOD(const char*, sd_bus_message_get_interface, (sd_bus_message*),
94                 (override));
95     MOCK_METHOD(const char*, sd_bus_message_get_member, (sd_bus_message*),
96                 (override));
97     MOCK_METHOD(const char*, sd_bus_message_get_path, (sd_bus_message*),
98                 (override));
99     MOCK_METHOD(const char*, sd_bus_message_get_sender, (sd_bus_message*),
100                 (override));
101     MOCK_METHOD(const char*, sd_bus_message_get_signature,
102                 (sd_bus_message*, int), (override));
103     MOCK_METHOD(int, sd_bus_message_get_errno, (sd_bus_message*), (override));
104     MOCK_METHOD(const sd_bus_error*, sd_bus_message_get_error,
105                 (sd_bus_message*), (override));
106 
107     MOCK_METHOD(int, sd_bus_message_is_method_call,
108                 (sd_bus_message*, const char*, const char*), (override));
109     MOCK_METHOD(int, sd_bus_message_is_method_error,
110                 (sd_bus_message*, const char*), (override));
111     MOCK_METHOD(int, sd_bus_message_is_signal,
112                 (sd_bus_message*, const char*, const char*), (override));
113 
114     MOCK_METHOD(int, sd_bus_message_new_method_call,
115                 (sd_bus*, sd_bus_message**, const char*, const char*,
116                  const char*, const char*),
117                 (override));
118 
119     MOCK_METHOD(int, sd_bus_message_new_method_return,
120                 (sd_bus_message*, sd_bus_message**), (override));
121 
122     MOCK_METHOD(int, sd_bus_message_new_method_error,
123                 (sd_bus_message * call, sd_bus_message** m, sd_bus_error* e),
124                 (override));
125 
126     MOCK_METHOD(int, sd_bus_message_new_method_errno,
127                 (sd_bus_message * call, sd_bus_message** m, int error,
128                  const sd_bus_error* p),
129                 (override));
130 
131     MOCK_METHOD(int, sd_bus_message_new_signal,
132                 (sd_bus*, sd_bus_message**, const char*, const char*,
133                  const char*),
134                 (override));
135 
136     MOCK_METHOD(int, sd_bus_message_open_container,
137                 (sd_bus_message*, char, const char*), (override));
138 
139     MOCK_METHOD(int, sd_bus_message_read_basic, (sd_bus_message*, char, void*),
140                 (override));
141     MOCK_METHOD(sd_bus_message*, sd_bus_message_ref, (sd_bus_message*),
142                 (override));
143 
144     MOCK_METHOD(int, sd_bus_message_skip, (sd_bus_message*, const char*),
145                 (override));
146     MOCK_METHOD(int, sd_bus_message_verify_type,
147                 (sd_bus_message*, char, const char*), (override));
148 
149     MOCK_METHOD(int, sd_bus_slot_set_destroy_callback,
150                 (sd_bus_slot*, sd_bus_destroy_t), (override));
151     MOCK_METHOD(void*, sd_bus_slot_set_userdata, (sd_bus_slot*, void*),
152                 (override));
153 
154     MOCK_METHOD(int, sd_bus_process, (sd_bus*, sd_bus_message**), (override));
155     MOCK_METHOD(sd_bus*, sd_bus_ref, (sd_bus*), (override));
156     MOCK_METHOD(int, sd_bus_request_name, (sd_bus*, const char*, uint64_t),
157                 (override));
158     MOCK_METHOD(int, sd_bus_send, (sd_bus*, sd_bus_message*, uint64_t*),
159                 (override));
160     MOCK_METHOD(sd_bus*, sd_bus_unref, (sd_bus*), (override));
161     MOCK_METHOD(sd_bus_slot*, sd_bus_slot_unref, (sd_bus_slot*), (override));
162     MOCK_METHOD(sd_bus*, sd_bus_flush_close_unref, (sd_bus*), (override));
163     MOCK_METHOD(int, sd_bus_flush, (sd_bus*), (override));
164     MOCK_METHOD(void, sd_bus_close, (sd_bus*), (override));
165     MOCK_METHOD(int, sd_bus_is_open, (sd_bus*), (override));
166     MOCK_METHOD(int, sd_bus_wait, (sd_bus*, uint64_t), (override));
167 
SdBusMock()168     SdBusMock()
169     {
170         auto slotcb = [](sd_bus*, sd_bus_slot** slot, auto&&...) {
171             *slot = reinterpret_cast<sd_bus_slot*>(0xdefa);
172             return 0;
173         };
174         ON_CALL(*this, sd_bus_add_object_manager).WillByDefault(slotcb);
175         ON_CALL(*this, sd_bus_add_object_vtable).WillByDefault(slotcb);
176         ON_CALL(*this, sd_bus_add_match).WillByDefault(slotcb);
177         ON_CALL(*this, sd_bus_call_async).WillByDefault(slotcb);
178     }
179 };
180 
get_mocked_new(SdBusMock * sdbus)181 inline bus_t get_mocked_new(SdBusMock* sdbus)
182 {
183     using ::testing::IsNull;
184     using ::testing::Return;
185 
186     EXPECT_CALL(*sdbus, sd_bus_ref(IsNull())).WillRepeatedly(Return(nullptr));
187     bus_t bus_mock(nullptr, sdbus);
188 
189     return bus_mock;
190 }
191 
192 } // namespace sdbusplus
193