Mercurial > irccd
comparison tests/cmd-rule-move/main.cpp @ 557:c729f06c6f27
Tests: convert cmd-rule-*, #593
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 25 Nov 2017 14:34:20 +0100 |
parents | 7e273b7f4f92 |
children | 23fc81b1bd8f |
comparison
equal
deleted
inserted
replaced
556:c9b703f923d0 | 557:c729f06c6f27 |
---|---|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 */ | 17 */ |
18 | 18 |
19 #include <command.hpp> | 19 #define BOOST_TEST_MODULE "rule-move" |
20 #include <command-tester.hpp> | 20 #include <boost/test/unit_test.hpp> |
21 #include <service.hpp> | 21 |
22 | 22 #include <irccd/json_util.hpp> |
23 using namespace irccd; | 23 |
24 | 24 #include <irccd/command.hpp> |
25 class RuleMoveCommandTest : public CommandTester { | 25 #include <irccd/rule_service.hpp> |
26 protected: | 26 |
27 nlohmann::json m_result; | 27 #include <command_test.hpp> |
28 | 28 |
29 /* | 29 namespace irccd { |
30 * Rule sets are unordered so use this function to search a string in | 30 |
31 * the JSON array. | 31 namespace { |
32 */ | 32 |
33 inline bool contains(const nlohmann::json &array, const std::string &str) | 33 class rule_move_test : public command_test<rule_move_command> { |
34 { | |
35 for (const auto &v : array) | |
36 if (v.is_string() && v == str) | |
37 return true; | |
38 | |
39 return false; | |
40 } | |
41 | |
42 public: | 34 public: |
43 RuleMoveCommandTest() | 35 rule_move_test() |
44 : CommandTester(std::make_unique<rule_move_command>()) | 36 { |
45 { | 37 daemon_->commands().add(std::make_unique<rule_list_command>()); |
46 m_irccd.commands().add(std::make_unique<rule_list_command>()); | 38 daemon_->rules().add(rule( |
47 m_irccd.rules().add(rule( | |
48 { "s0" }, | 39 { "s0" }, |
49 { "c0" }, | 40 { "c0" }, |
50 { "o0" }, | 41 { "o0" }, |
51 { "p0" }, | 42 { "p0" }, |
52 { "onMessage" }, | 43 { "onMessage" }, |
53 rule::action_type::drop | 44 rule::action_type::drop |
54 )); | 45 )); |
55 m_irccd.rules().add(rule( | 46 daemon_->rules().add(rule( |
56 { "s1", }, | 47 { "s1", }, |
57 { "c1", }, | 48 { "c1", }, |
58 { "o1", }, | 49 { "o1", }, |
59 { "p1", }, | 50 { "p1", }, |
60 { "onMessage", }, | 51 { "onMessage", }, |
61 rule::action_type::accept | 52 rule::action_type::accept |
62 )); | 53 )); |
63 m_irccd.rules().add(rule( | 54 daemon_->rules().add(rule( |
64 { "s2", }, | 55 { "s2", }, |
65 { "c2", }, | 56 { "c2", }, |
66 { "o2", }, | 57 { "o2", }, |
67 { "p2", }, | 58 { "p2", }, |
68 { "onMessage", }, | 59 { "onMessage", }, |
69 rule::action_type::accept | 60 rule::action_type::accept |
70 )); | 61 )); |
71 m_irccdctl.client().onMessage.connect([&] (auto result) { | |
72 m_result = result; | |
73 }); | |
74 } | 62 } |
75 }; | 63 }; |
76 | 64 |
77 TEST_F(RuleMoveCommandTest, backward) | 65 } // !namespace |
78 { | 66 |
79 try { | 67 BOOST_FIXTURE_TEST_SUITE(rule_move_test_suite, rule_move_test) |
80 m_irccdctl.client().request({ | 68 |
81 { "command", "rule-move" }, | 69 BOOST_AUTO_TEST_CASE(backward) |
82 { "from", 2 }, | 70 { |
83 { "to", 0 } | 71 nlohmann::json result; |
84 }); | 72 |
85 | 73 ctl_->send({ |
86 poll([&] () { | 74 { "command", "rule-move" }, |
87 return m_result.is_object(); | 75 { "from", 2 }, |
88 }); | 76 { "to", 0 } |
89 | 77 }); |
90 ASSERT_TRUE(m_result.is_object()); | 78 ctl_->recv([&] (auto, auto msg) { |
91 ASSERT_TRUE(m_result["status"].get<bool>()); | 79 result = msg; |
92 | 80 }); |
93 m_result = nullptr; | 81 |
94 m_irccdctl.client().request({{ "command", "rule-list" }}); | 82 wait_for([&] () { |
95 | 83 return result.is_object(); |
96 poll([&] () { | 84 }); |
97 return m_result.is_object(); | 85 |
98 }); | 86 BOOST_TEST(result.is_object()); |
99 | 87 |
100 ASSERT_TRUE(m_result.is_object()); | 88 result = nullptr; |
101 ASSERT_TRUE(m_result["status"].get<bool>()); | 89 ctl_->send({{ "command", "rule-list" }}); |
102 | 90 ctl_->recv([&] (auto, auto msg) { |
103 // Rule 2. | 91 result = msg; |
104 { | 92 }); |
105 auto servers = m_result["list"][0]["servers"]; | 93 |
106 auto channels = m_result["list"][0]["channels"]; | 94 wait_for([&] () { |
107 auto plugins = m_result["list"][0]["plugins"]; | 95 return result.is_object(); |
108 auto events = m_result["list"][0]["events"]; | 96 }); |
109 | 97 |
110 ASSERT_TRUE(contains(servers, "s2")); | 98 BOOST_TEST(result.is_object()); |
111 ASSERT_TRUE(contains(channels, "c2")); | 99 |
112 ASSERT_TRUE(contains(plugins, "p2")); | 100 // Rule 2. |
113 ASSERT_TRUE(contains(events, "onMessage")); | 101 { |
114 ASSERT_EQ("accept", m_result["list"][0]["action"].get<std::string>()); | 102 auto servers = result["list"][0]["servers"]; |
115 } | 103 auto channels = result["list"][0]["channels"]; |
116 | 104 auto plugins = result["list"][0]["plugins"]; |
117 // Rule 0. | 105 auto events = result["list"][0]["events"]; |
118 { | 106 |
119 auto servers = m_result["list"][1]["servers"]; | 107 BOOST_TEST(json_util::contains(servers, "s2")); |
120 auto channels = m_result["list"][1]["channels"]; | 108 BOOST_TEST(json_util::contains(channels, "c2")); |
121 auto plugins = m_result["list"][1]["plugins"]; | 109 BOOST_TEST(json_util::contains(plugins, "p2")); |
122 auto events = m_result["list"][1]["events"]; | 110 BOOST_TEST(json_util::contains(events, "onMessage")); |
123 | 111 BOOST_TEST(result["list"][0]["action"].get<std::string>() == "accept"); |
124 ASSERT_TRUE(contains(servers, "s0")); | 112 } |
125 ASSERT_TRUE(contains(channels, "c0")); | 113 |
126 ASSERT_TRUE(contains(plugins, "p0")); | 114 // Rule 0. |
127 ASSERT_TRUE(contains(events, "onMessage")); | 115 { |
128 ASSERT_EQ("drop", m_result["list"][1]["action"].get<std::string>()); | 116 auto servers = result["list"][1]["servers"]; |
129 } | 117 auto channels = result["list"][1]["channels"]; |
130 | 118 auto plugins = result["list"][1]["plugins"]; |
131 // Rule 1. | 119 auto events = result["list"][1]["events"]; |
132 { | 120 |
133 auto servers = m_result["list"][2]["servers"]; | 121 BOOST_TEST(json_util::contains(servers, "s0")); |
134 auto channels = m_result["list"][2]["channels"]; | 122 BOOST_TEST(json_util::contains(channels, "c0")); |
135 auto plugins = m_result["list"][2]["plugins"]; | 123 BOOST_TEST(json_util::contains(plugins, "p0")); |
136 auto events = m_result["list"][2]["events"]; | 124 BOOST_TEST(json_util::contains(events, "onMessage")); |
137 | 125 BOOST_TEST(result["list"][1]["action"].get<std::string>() == "drop"); |
138 ASSERT_TRUE(contains(servers, "s1")); | 126 } |
139 ASSERT_TRUE(contains(channels, "c1")); | 127 |
140 ASSERT_TRUE(contains(plugins, "p1")); | 128 // Rule 1. |
141 ASSERT_TRUE(contains(events, "onMessage")); | 129 { |
142 ASSERT_EQ("accept", m_result["list"][2]["action"].get<std::string>()); | 130 auto servers = result["list"][2]["servers"]; |
143 } | 131 auto channels = result["list"][2]["channels"]; |
144 } catch (const std::exception& ex) { | 132 auto plugins = result["list"][2]["plugins"]; |
145 FAIL() << ex.what(); | 133 auto events = result["list"][2]["events"]; |
146 } | 134 |
147 } | 135 BOOST_TEST(json_util::contains(servers, "s1")); |
148 | 136 BOOST_TEST(json_util::contains(channels, "c1")); |
149 TEST_F(RuleMoveCommandTest, upward) | 137 BOOST_TEST(json_util::contains(plugins, "p1")); |
150 { | 138 BOOST_TEST(json_util::contains(events, "onMessage")); |
151 try { | 139 BOOST_TEST(result["list"][2]["action"].get<std::string>() == "accept"); |
152 m_irccdctl.client().request({ | 140 } |
153 { "command", "rule-move" }, | 141 } |
154 { "from", 0 }, | 142 |
155 { "to", 2 } | 143 BOOST_AUTO_TEST_CASE(upward) |
156 }); | 144 { |
157 | 145 nlohmann::json result; |
158 poll([&] () { | 146 |
159 return m_result.is_object(); | 147 ctl_->send({ |
160 }); | 148 { "command", "rule-move" }, |
161 | 149 { "from", 0 }, |
162 ASSERT_TRUE(m_result.is_object()); | 150 { "to", 2 } |
163 ASSERT_TRUE(m_result["status"].get<bool>()); | 151 }); |
164 | 152 ctl_->recv([&] (auto, auto msg) { |
165 m_result = nullptr; | 153 result = msg; |
166 m_irccdctl.client().request({{ "command", "rule-list" }}); | 154 }); |
167 | 155 |
168 poll([&] () { | 156 wait_for([&] () { |
169 return m_result.is_object(); | 157 return result.is_object(); |
170 }); | 158 }); |
171 | 159 |
172 ASSERT_TRUE(m_result.is_object()); | 160 BOOST_TEST(result.is_object()); |
173 ASSERT_TRUE(m_result["status"].get<bool>()); | 161 |
174 | 162 result = nullptr; |
175 // Rule 1. | 163 ctl_->send({{ "command", "rule-list" }}); |
176 { | 164 ctl_->recv([&] (auto, auto msg) { |
177 auto servers = m_result["list"][0]["servers"]; | 165 result = msg; |
178 auto channels = m_result["list"][0]["channels"]; | 166 }); |
179 auto plugins = m_result["list"][0]["plugins"]; | 167 |
180 auto events = m_result["list"][0]["events"]; | 168 wait_for([&] () { |
181 | 169 return result.is_object(); |
182 ASSERT_TRUE(contains(servers, "s1")); | 170 }); |
183 ASSERT_TRUE(contains(channels, "c1")); | 171 |
184 ASSERT_TRUE(contains(plugins, "p1")); | 172 BOOST_TEST(result.is_object()); |
185 ASSERT_TRUE(contains(events, "onMessage")); | 173 |
186 ASSERT_EQ("accept", m_result["list"][0]["action"].get<std::string>()); | 174 // Rule 1. |
187 } | 175 { |
188 | 176 auto servers = result["list"][0]["servers"]; |
189 // Rule 2. | 177 auto channels = result["list"][0]["channels"]; |
190 { | 178 auto plugins = result["list"][0]["plugins"]; |
191 auto servers = m_result["list"][1]["servers"]; | 179 auto events = result["list"][0]["events"]; |
192 auto channels = m_result["list"][1]["channels"]; | 180 |
193 auto plugins = m_result["list"][1]["plugins"]; | 181 BOOST_TEST(json_util::contains(servers, "s1")); |
194 auto events = m_result["list"][1]["events"]; | 182 BOOST_TEST(json_util::contains(channels, "c1")); |
195 | 183 BOOST_TEST(json_util::contains(plugins, "p1")); |
196 ASSERT_TRUE(contains(servers, "s2")); | 184 BOOST_TEST(json_util::contains(events, "onMessage")); |
197 ASSERT_TRUE(contains(channels, "c2")); | 185 BOOST_TEST(result["list"][0]["action"].get<std::string>() == "accept"); |
198 ASSERT_TRUE(contains(plugins, "p2")); | 186 } |
199 ASSERT_TRUE(contains(events, "onMessage")); | 187 |
200 ASSERT_EQ("accept", m_result["list"][1]["action"].get<std::string>()); | 188 // Rule 2. |
201 } | 189 { |
202 | 190 auto servers = result["list"][1]["servers"]; |
203 // Rule 0. | 191 auto channels = result["list"][1]["channels"]; |
204 { | 192 auto plugins = result["list"][1]["plugins"]; |
205 auto servers = m_result["list"][2]["servers"]; | 193 auto events = result["list"][1]["events"]; |
206 auto channels = m_result["list"][2]["channels"]; | 194 |
207 auto plugins = m_result["list"][2]["plugins"]; | 195 BOOST_TEST(json_util::contains(servers, "s2")); |
208 auto events = m_result["list"][2]["events"]; | 196 BOOST_TEST(json_util::contains(channels, "c2")); |
209 | 197 BOOST_TEST(json_util::contains(plugins, "p2")); |
210 ASSERT_TRUE(contains(servers, "s0")); | 198 BOOST_TEST(json_util::contains(events, "onMessage")); |
211 ASSERT_TRUE(contains(channels, "c0")); | 199 BOOST_TEST(result["list"][1]["action"].get<std::string>() == "accept"); |
212 ASSERT_TRUE(contains(plugins, "p0")); | 200 } |
213 ASSERT_TRUE(contains(events, "onMessage")); | 201 |
214 ASSERT_EQ("drop", m_result["list"][2]["action"].get<std::string>()); | 202 // Rule 0. |
215 } | 203 { |
216 } catch (const std::exception& ex) { | 204 auto servers = result["list"][2]["servers"]; |
217 FAIL() << ex.what(); | 205 auto channels = result["list"][2]["channels"]; |
218 } | 206 auto plugins = result["list"][2]["plugins"]; |
219 } | 207 auto events = result["list"][2]["events"]; |
220 | 208 |
221 TEST_F(RuleMoveCommandTest, same) | 209 BOOST_TEST(json_util::contains(servers, "s0")); |
222 { | 210 BOOST_TEST(json_util::contains(channels, "c0")); |
223 try { | 211 BOOST_TEST(json_util::contains(plugins, "p0")); |
224 m_irccdctl.client().request({ | 212 BOOST_TEST(json_util::contains(events, "onMessage")); |
225 { "command", "rule-move" }, | 213 BOOST_TEST(result["list"][2]["action"].get<std::string>() == "drop"); |
226 { "from", 1 }, | 214 } |
227 { "to", 1 } | 215 } |
228 }); | 216 |
229 | 217 BOOST_AUTO_TEST_CASE(same) |
230 poll([&] () { | 218 { |
231 return m_result.is_object(); | 219 nlohmann::json result; |
232 }); | 220 |
233 | 221 ctl_->send({ |
234 ASSERT_TRUE(m_result.is_object()); | 222 { "command", "rule-move" }, |
235 ASSERT_TRUE(m_result["status"].get<bool>()); | 223 { "from", 1 }, |
236 | 224 { "to", 1 } |
237 m_result = nullptr; | 225 }); |
238 m_irccdctl.client().request({{ "command", "rule-list" }}); | 226 ctl_->recv([&] (auto, auto msg) { |
239 | 227 result = msg; |
240 poll([&] () { | 228 }); |
241 return m_result.is_object(); | 229 |
242 }); | 230 wait_for([&] () { |
243 | 231 return result.is_object(); |
244 ASSERT_TRUE(m_result.is_object()); | 232 }); |
245 ASSERT_TRUE(m_result["status"].get<bool>()); | 233 |
246 | 234 BOOST_TEST(result.is_object()); |
247 // Rule 0. | 235 |
248 { | 236 result = nullptr; |
249 auto servers = m_result["list"][0]["servers"]; | 237 ctl_->send({{ "command", "rule-list" }}); |
250 auto channels = m_result["list"][0]["channels"]; | 238 ctl_->recv([&] (auto, auto msg) { |
251 auto plugins = m_result["list"][0]["plugins"]; | 239 result = msg; |
252 auto events = m_result["list"][0]["events"]; | 240 }); |
253 | 241 |
254 ASSERT_TRUE(contains(servers, "s0")); | 242 wait_for([&] () { |
255 ASSERT_TRUE(contains(channels, "c0")); | 243 return result.is_object(); |
256 ASSERT_TRUE(contains(plugins, "p0")); | 244 }); |
257 ASSERT_TRUE(contains(events, "onMessage")); | 245 |
258 ASSERT_EQ("drop", m_result["list"][0]["action"].get<std::string>()); | 246 BOOST_TEST(result.is_object()); |
259 } | 247 |
260 | 248 // Rule 0. |
261 // Rule 1. | 249 { |
262 { | 250 auto servers = result["list"][0]["servers"]; |
263 auto servers = m_result["list"][1]["servers"]; | 251 auto channels = result["list"][0]["channels"]; |
264 auto channels = m_result["list"][1]["channels"]; | 252 auto plugins = result["list"][0]["plugins"]; |
265 auto plugins = m_result["list"][1]["plugins"]; | 253 auto events = result["list"][0]["events"]; |
266 auto events = m_result["list"][1]["events"]; | 254 |
267 | 255 BOOST_TEST(json_util::contains(servers, "s0")); |
268 ASSERT_TRUE(contains(servers, "s1")); | 256 BOOST_TEST(json_util::contains(channels, "c0")); |
269 ASSERT_TRUE(contains(channels, "c1")); | 257 BOOST_TEST(json_util::contains(plugins, "p0")); |
270 ASSERT_TRUE(contains(plugins, "p1")); | 258 BOOST_TEST(json_util::contains(events, "onMessage")); |
271 ASSERT_TRUE(contains(events, "onMessage")); | 259 BOOST_TEST(result["list"][0]["action"].get<std::string>() == "drop"); |
272 ASSERT_EQ("accept", m_result["list"][1]["action"].get<std::string>()); | 260 } |
273 } | 261 |
274 | 262 // Rule 1. |
275 // Rule 2. | 263 { |
276 { | 264 auto servers = result["list"][1]["servers"]; |
277 auto servers = m_result["list"][2]["servers"]; | 265 auto channels = result["list"][1]["channels"]; |
278 auto channels = m_result["list"][2]["channels"]; | 266 auto plugins = result["list"][1]["plugins"]; |
279 auto plugins = m_result["list"][2]["plugins"]; | 267 auto events = result["list"][1]["events"]; |
280 auto events = m_result["list"][2]["events"]; | 268 |
281 | 269 BOOST_TEST(json_util::contains(servers, "s1")); |
282 ASSERT_TRUE(contains(servers, "s2")); | 270 BOOST_TEST(json_util::contains(channels, "c1")); |
283 ASSERT_TRUE(contains(channels, "c2")); | 271 BOOST_TEST(json_util::contains(plugins, "p1")); |
284 ASSERT_TRUE(contains(plugins, "p2")); | 272 BOOST_TEST(json_util::contains(events, "onMessage")); |
285 ASSERT_TRUE(contains(events, "onMessage")); | 273 BOOST_TEST(result["list"][1]["action"].get<std::string>() == "accept"); |
286 ASSERT_EQ("accept", m_result["list"][2]["action"].get<std::string>()); | 274 } |
287 } | 275 |
288 } catch (const std::exception& ex) { | 276 // Rule 2. |
289 FAIL() << ex.what(); | 277 { |
290 } | 278 auto servers = result["list"][2]["servers"]; |
291 } | 279 auto channels = result["list"][2]["channels"]; |
292 | 280 auto plugins = result["list"][2]["plugins"]; |
293 TEST_F(RuleMoveCommandTest, beyond) | 281 auto events = result["list"][2]["events"]; |
294 { | 282 |
295 try { | 283 BOOST_TEST(json_util::contains(servers, "s2")); |
296 m_irccdctl.client().request({ | 284 BOOST_TEST(json_util::contains(channels, "c2")); |
297 { "command", "rule-move" }, | 285 BOOST_TEST(json_util::contains(plugins, "p2")); |
298 { "from", 0 }, | 286 BOOST_TEST(json_util::contains(events, "onMessage")); |
299 { "to", 123 } | 287 BOOST_TEST(result["list"][2]["action"].get<std::string>() == "accept"); |
300 }); | 288 } |
301 | 289 } |
302 poll([&] () { | 290 |
303 return m_result.is_object(); | 291 BOOST_AUTO_TEST_CASE(beyond) |
304 }); | 292 { |
305 | 293 nlohmann::json result; |
306 ASSERT_TRUE(m_result.is_object()); | 294 |
307 ASSERT_TRUE(m_result["status"].get<bool>()); | 295 ctl_->send({ |
308 | 296 { "command", "rule-move" }, |
309 m_result = nullptr; | 297 { "from", 0 }, |
310 m_irccdctl.client().request({{ "command", "rule-list" }}); | 298 { "to", 123 } |
311 | 299 }); |
312 poll([&] () { | 300 ctl_->recv([&] (auto, auto msg) { |
313 return m_result.is_object(); | 301 result = msg; |
314 }); | 302 }); |
315 | 303 |
316 ASSERT_TRUE(m_result.is_object()); | 304 wait_for([&] () { |
317 ASSERT_TRUE(m_result["status"].get<bool>()); | 305 return result.is_object(); |
318 | 306 }); |
319 // Rule 1. | 307 |
320 { | 308 BOOST_TEST(result.is_object()); |
321 auto servers = m_result["list"][0]["servers"]; | 309 |
322 auto channels = m_result["list"][0]["channels"]; | 310 result = nullptr; |
323 auto plugins = m_result["list"][0]["plugins"]; | 311 ctl_->send({{ "command", "rule-list" }}); |
324 auto events = m_result["list"][0]["events"]; | 312 ctl_->recv([&] (auto, auto msg) { |
325 | 313 result = msg; |
326 ASSERT_TRUE(contains(servers, "s1")); | 314 }); |
327 ASSERT_TRUE(contains(channels, "c1")); | 315 |
328 ASSERT_TRUE(contains(plugins, "p1")); | 316 wait_for([&] () { |
329 ASSERT_TRUE(contains(events, "onMessage")); | 317 return result.is_object(); |
330 ASSERT_EQ("accept", m_result["list"][0]["action"].get<std::string>()); | 318 }); |
331 } | 319 |
332 | 320 BOOST_TEST(result.is_object()); |
333 // Rule 2. | 321 |
334 { | 322 // Rule 1. |
335 auto servers = m_result["list"][1]["servers"]; | 323 { |
336 auto channels = m_result["list"][1]["channels"]; | 324 auto servers = result["list"][0]["servers"]; |
337 auto plugins = m_result["list"][1]["plugins"]; | 325 auto channels = result["list"][0]["channels"]; |
338 auto events = m_result["list"][1]["events"]; | 326 auto plugins = result["list"][0]["plugins"]; |
339 | 327 auto events = result["list"][0]["events"]; |
340 ASSERT_TRUE(contains(servers, "s2")); | 328 |
341 ASSERT_TRUE(contains(channels, "c2")); | 329 BOOST_TEST(json_util::contains(servers, "s1")); |
342 ASSERT_TRUE(contains(plugins, "p2")); | 330 BOOST_TEST(json_util::contains(channels, "c1")); |
343 ASSERT_TRUE(contains(events, "onMessage")); | 331 BOOST_TEST(json_util::contains(plugins, "p1")); |
344 ASSERT_EQ("accept", m_result["list"][1]["action"].get<std::string>()); | 332 BOOST_TEST(json_util::contains(events, "onMessage")); |
345 } | 333 BOOST_TEST(result["list"][0]["action"].get<std::string>() == "accept"); |
346 | 334 } |
347 // Rule 0. | 335 |
348 { | 336 // Rule 2. |
349 auto servers = m_result["list"][2]["servers"]; | 337 { |
350 auto channels = m_result["list"][2]["channels"]; | 338 auto servers = result["list"][1]["servers"]; |
351 auto plugins = m_result["list"][2]["plugins"]; | 339 auto channels = result["list"][1]["channels"]; |
352 auto events = m_result["list"][2]["events"]; | 340 auto plugins = result["list"][1]["plugins"]; |
353 | 341 auto events = result["list"][1]["events"]; |
354 ASSERT_TRUE(contains(servers, "s0")); | 342 |
355 ASSERT_TRUE(contains(channels, "c0")); | 343 BOOST_TEST(json_util::contains(servers, "s2")); |
356 ASSERT_TRUE(contains(plugins, "p0")); | 344 BOOST_TEST(json_util::contains(channels, "c2")); |
357 ASSERT_TRUE(contains(events, "onMessage")); | 345 BOOST_TEST(json_util::contains(plugins, "p2")); |
358 ASSERT_EQ("drop", m_result["list"][2]["action"].get<std::string>()); | 346 BOOST_TEST(json_util::contains(events, "onMessage")); |
359 } | 347 BOOST_TEST(result["list"][1]["action"].get<std::string>() == "accept"); |
360 } catch (const std::exception& ex) { | 348 } |
361 FAIL() << ex.what(); | 349 |
362 } | 350 // Rule 0. |
363 } | 351 { |
364 | 352 auto servers = result["list"][2]["servers"]; |
365 TEST_F(RuleMoveCommandTest, outOfBounds) | 353 auto channels = result["list"][2]["channels"]; |
366 { | 354 auto plugins = result["list"][2]["plugins"]; |
367 try { | 355 auto events = result["list"][2]["events"]; |
368 m_irccdctl.client().request({ | 356 |
369 { "command", "rule-move" }, | 357 BOOST_TEST(json_util::contains(servers, "s0")); |
370 { "from", 1024 }, | 358 BOOST_TEST(json_util::contains(channels, "c0")); |
371 { "to", 0 } | 359 BOOST_TEST(json_util::contains(plugins, "p0")); |
372 }); | 360 BOOST_TEST(json_util::contains(events, "onMessage")); |
373 | 361 BOOST_TEST(result["list"][2]["action"].get<std::string>() == "drop"); |
374 poll([&] () { | 362 } |
375 return m_result.is_object(); | 363 } |
376 }); | 364 |
377 | 365 BOOST_AUTO_TEST_CASE(out_of_bounds) |
378 ASSERT_TRUE(m_result.is_object()); | 366 { |
379 ASSERT_FALSE(m_result["status"].get<bool>()); | 367 nlohmann::json result; |
380 } catch (const std::exception& ex) { | 368 |
381 FAIL() << ex.what(); | 369 ctl_->send({ |
382 } | 370 { "command", "rule-move" }, |
383 } | 371 { "from", 1024 }, |
384 | 372 { "to", 0 } |
385 int main(int argc, char **argv) | 373 }); |
386 { | 374 ctl_->recv([&] (auto, auto msg) { |
387 testing::InitGoogleTest(&argc, argv); | 375 result = msg; |
388 | 376 }); |
389 return RUN_ALL_TESTS(); | 377 |
390 } | 378 wait_for([&] () { |
379 return result.is_object(); | |
380 }); | |
381 | |
382 // TODO: error code | |
383 BOOST_TEST(result.is_object()); | |
384 BOOST_TEST(result.count("error")); | |
385 } | |
386 | |
387 BOOST_AUTO_TEST_SUITE_END() | |
388 | |
389 } // !irccd |