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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }