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