comparison tests/src/libirccd/rules/main.cpp @ 773:8c44bbcbbab9

Misc: style, cleanup and update
author David Demelier <markand@malikania.fr>
date Fri, 26 Oct 2018 13:01:00 +0200
parents c216d148558d
children 292482f36454
comparison
equal deleted inserted replaced
772:f5ccf65ae929 773:8c44bbcbbab9
67 * events = "onMessage onCommand" 67 * events = "onMessage onCommand"
68 * action = accept 68 * action = accept
69 */ 69 */
70 class rules_test { 70 class rules_test {
71 protected: 71 protected:
72 boost::asio::io_service service_; 72 boost::asio::io_service service_;
73 irccd daemon_{service_}; 73 irccd daemon_{service_};
74 rule_service rules_{daemon_}; 74 rule_service rules_{daemon_};
75 75
76 rules_test() 76 rules_test()
77 { 77 {
78 daemon_.set_log(std::make_unique<logger::silent_sink>()); 78 daemon_.set_log(std::make_unique<logger::silent_sink>());
79 79
80 // #1 80 // #1
81 { 81 {
82 rules_.add({ 82 rules_.add({
83 rule::set{ }, // Servers 83 rule::set{ }, // Servers
84 rule::set{ "#staff" }, // Channels 84 rule::set{ "#staff" }, // Channels
85 rule::set{ }, // Origins 85 rule::set{ }, // Origins
86 rule::set{ }, // Plugins 86 rule::set{ }, // Plugins
87 rule::set{ "onCommand" }, // Events 87 rule::set{ "onCommand" }, // Events
88 rule::action::drop 88 rule::action_type::drop
89 }); 89 });
90 } 90 }
91 91
92 // #2 92 // #2
93 { 93 {
94 rules_.add({ 94 rules_.add({
95 rule::set{ "unsafe" }, 95 rule::set{ "unsafe" },
96 rule::set{ "#staff" }, 96 rule::set{ "#staff" },
97 rule::set{ }, 97 rule::set{ },
98 rule::set{ }, 98 rule::set{ },
99 rule::set{ "onCommand" }, 99 rule::set{ "onCommand" },
100 rule::action::accept 100 rule::action_type::accept
101 }); 101 });
102 } 102 }
103 103
104 // #3-1 104 // #3-1
105 { 105 {
106 rules_.add({ 106 rules_.add({
107 rule::set{}, 107 rule::set{},
108 rule::set{}, 108 rule::set{},
109 rule::set{}, 109 rule::set{},
110 rule::set{"game"}, 110 rule::set{"game"},
111 rule::set{}, 111 rule::set{},
112 rule::action::drop 112 rule::action_type::drop
113 }); 113 });
114 } 114 }
115 115
116 // #3-2 116 // #3-2
117 { 117 {
118 rules_.add({ 118 rules_.add({
119 rule::set{ "malikania", "localhost" }, 119 rule::set{ "malikania", "localhost" },
120 rule::set{ "#games" }, 120 rule::set{ "#games" },
121 rule::set{ }, 121 rule::set{ },
122 rule::set{ "game" }, 122 rule::set{ "game" },
123 rule::set{ "onCommand", "onMessage" }, 123 rule::set{ "onCommand", "onMessage" },
124 rule::action::accept 124 rule::action_type::accept
125 }); 125 });
126 } 126 }
127 } 127 }
128 }; 128 };
129 129
130 BOOST_FIXTURE_TEST_SUITE(rules_test_suite, rules_test) 130 BOOST_FIXTURE_TEST_SUITE(rules_test_suite, rules_test)
131 131
132 BOOST_AUTO_TEST_CASE(basic_match1) 132 BOOST_AUTO_TEST_CASE(basic_match1)
133 { 133 {
134 rule m; 134 rule m;
135 135
136 /* 136 /*
137 * [rule] 137 * [rule]
138 */ 138 */
139 BOOST_REQUIRE(m.match("freenode", "#test", "a", "", "")); 139 BOOST_REQUIRE(m.match("freenode", "#test", "a", "", ""));
140 BOOST_REQUIRE(m.match("", "", "", "", "")); 140 BOOST_REQUIRE(m.match("", "", "", "", ""));
141 } 141 }
142 142
143 BOOST_AUTO_TEST_CASE(basic_match2) 143 BOOST_AUTO_TEST_CASE(basic_match2)
144 { 144 {
145 rule m(rule::set{"freenode"}); 145 rule m{rule::set{"freenode"}};
146 146
147 /* 147 /*
148 * [rule] 148 * [rule]
149 * servers = "freenode" 149 * servers = "freenode"
150 */ 150 */
151 151
152 BOOST_REQUIRE(m.match("freenode", "#test", "a", "", "")); 152 BOOST_REQUIRE(m.match("freenode", "#test", "a", "", ""));
153 BOOST_REQUIRE(!m.match("malikania", "#test", "a", "", "")); 153 BOOST_REQUIRE(!m.match("malikania", "#test", "a", "", ""));
154 BOOST_REQUIRE(m.match("freenode", "", "jean", "", "onMessage")); 154 BOOST_REQUIRE(m.match("freenode", "", "jean", "", "onMessage"));
155 } 155 }
156 156
157 BOOST_AUTO_TEST_CASE(basic_match3) 157 BOOST_AUTO_TEST_CASE(basic_match3)
158 { 158 {
159 rule m(rule::set{"freenode"}, rule::set{"#staff"}); 159 rule m{rule::set{"freenode"}, rule::set{"#staff"}};
160 160
161 /* 161 /*
162 * [rule] 162 * [rule]
163 * servers = "freenode" 163 * servers = "freenode"
164 * channels = "#staff" 164 * channels = "#staff"
165 */ 165 */
166 166
167 BOOST_REQUIRE(m.match("freenode", "#staff", "a", "", "")); 167 BOOST_REQUIRE(m.match("freenode", "#staff", "a", "", ""));
168 BOOST_REQUIRE(!m.match("freenode", "#test", "a", "", "")); 168 BOOST_REQUIRE(!m.match("freenode", "#test", "a", "", ""));
169 BOOST_REQUIRE(!m.match("malikania", "#staff", "a", "", "")); 169 BOOST_REQUIRE(!m.match("malikania", "#staff", "a", "", ""));
170 } 170 }
171 171
172 BOOST_AUTO_TEST_CASE(basic_match4) 172 BOOST_AUTO_TEST_CASE(basic_match4)
173 { 173 {
174 rule m(rule::set{"malikania"}, rule::set{"#staff"}, rule::set{"a"}); 174 rule m{rule::set{"malikania"}, rule::set{"#staff"}, rule::set{"a"}};
175 175
176 /* 176 /*
177 * [rule] 177 * [rule]
178 * servers = "malikania" 178 * servers = "malikania"
179 * channels = "#staff" 179 * channels = "#staff"
180 * plugins = "a" 180 * plugins = "a"
181 */ 181 */
182 182
183 BOOST_REQUIRE(m.match("malikania", "#staff", "a", "","")); 183 BOOST_REQUIRE(m.match("malikania", "#staff", "a", "",""));
184 BOOST_REQUIRE(!m.match("malikania", "#staff", "b", "", "")); 184 BOOST_REQUIRE(!m.match("malikania", "#staff", "b", "", ""));
185 BOOST_REQUIRE(!m.match("freenode", "#staff", "a", "", "")); 185 BOOST_REQUIRE(!m.match("freenode", "#staff", "a", "", ""));
186 } 186 }
187 187
188 BOOST_AUTO_TEST_CASE(complex_match1) 188 BOOST_AUTO_TEST_CASE(complex_match1)
189 { 189 {
190 rule m(rule::set{"malikania", "freenode"}); 190 rule m{rule::set{"malikania", "freenode"}};
191 191
192 /* 192 /*
193 * [rule] 193 * [rule]
194 * servers = "malikania freenode" 194 * servers = "malikania freenode"
195 */ 195 */
196 196
197 BOOST_REQUIRE(m.match("malikania", "", "", "", "")); 197 BOOST_REQUIRE(m.match("malikania", "", "", "", ""));
198 BOOST_REQUIRE(m.match("freenode", "", "", "", "")); 198 BOOST_REQUIRE(m.match("freenode", "", "", "", ""));
199 BOOST_REQUIRE(!m.match("no", "", "", "", "")); 199 BOOST_REQUIRE(!m.match("no", "", "", "", ""));
200 } 200 }
201 201
202 BOOST_AUTO_TEST_CASE(basic_solve) 202 BOOST_AUTO_TEST_CASE(basic_solve)
203 { 203 {
204 /* Allowed */ 204 /* Allowed */
205 BOOST_REQUIRE(rules_.solve("malikania", "#staff", "", "a", "onMessage")); 205 BOOST_REQUIRE(rules_.solve("malikania", "#staff", "", "a", "onMessage"));
206 206
207 /* Allowed */ 207 /* Allowed */
208 BOOST_REQUIRE(rules_.solve("freenode", "#staff", "", "b", "onTopic")); 208 BOOST_REQUIRE(rules_.solve("freenode", "#staff", "", "b", "onTopic"));
209 209
210 /* Not allowed */ 210 /* Not allowed */
211 BOOST_REQUIRE(!rules_.solve("malikania", "#staff", "", "", "onCommand")); 211 BOOST_REQUIRE(!rules_.solve("malikania", "#staff", "", "", "onCommand"));
212 212
213 /* Not allowed */ 213 /* Not allowed */
214 BOOST_REQUIRE(!rules_.solve("freenode", "#staff", "", "c", "onCommand")); 214 BOOST_REQUIRE(!rules_.solve("freenode", "#staff", "", "c", "onCommand"));
215 215
216 /* Allowed */ 216 /* Allowed */
217 BOOST_REQUIRE(rules_.solve("unsafe", "#staff", "", "c", "onCommand")); 217 BOOST_REQUIRE(rules_.solve("unsafe", "#staff", "", "c", "onCommand"));
218 } 218 }
219 219
220 BOOST_AUTO_TEST_CASE(games_solve) 220 BOOST_AUTO_TEST_CASE(games_solve)
221 { 221 {
222 /* Allowed */ 222 /* Allowed */
223 BOOST_REQUIRE(rules_.solve("malikania", "#games", "", "game", "onMessage")); 223 BOOST_REQUIRE(rules_.solve("malikania", "#games", "", "game", "onMessage"));
224 224
225 /* Allowed */ 225 /* Allowed */
226 BOOST_REQUIRE(rules_.solve("localhost", "#games", "", "game", "onMessage")); 226 BOOST_REQUIRE(rules_.solve("localhost", "#games", "", "game", "onMessage"));
227 227
228 /* Allowed */ 228 /* Allowed */
229 BOOST_REQUIRE(rules_.solve("malikania", "#games", "", "game", "onCommand")); 229 BOOST_REQUIRE(rules_.solve("malikania", "#games", "", "game", "onCommand"));
230 230
231 /* Not allowed */ 231 /* Not allowed */
232 BOOST_REQUIRE(!rules_.solve("malikania", "#games", "", "game", "onQuery")); 232 BOOST_REQUIRE(!rules_.solve("malikania", "#games", "", "game", "onQuery"));
233 233
234 /* Not allowed */ 234 /* Not allowed */
235 BOOST_REQUIRE(!rules_.solve("freenode", "#no", "", "game", "onMessage")); 235 BOOST_REQUIRE(!rules_.solve("freenode", "#no", "", "game", "onMessage"));
236 236
237 /* Not allowed */ 237 /* Not allowed */
238 BOOST_REQUIRE(!rules_.solve("malikania", "#test", "", "game", "onMessage")); 238 BOOST_REQUIRE(!rules_.solve("malikania", "#test", "", "game", "onMessage"));
239 } 239 }
240 240
241 BOOST_AUTO_TEST_CASE(fix_645) 241 BOOST_AUTO_TEST_CASE(fix_645)
242 { 242 {
243 BOOST_REQUIRE(!rules_.solve("MALIKANIA", "#STAFF", "", "SYSTEM", "onCommand")); 243 BOOST_REQUIRE(!rules_.solve("MALIKANIA", "#STAFF", "", "SYSTEM", "onCommand"));
244 } 244 }
245 245
246 BOOST_AUTO_TEST_SUITE_END() 246 BOOST_AUTO_TEST_SUITE_END()
247 247
248 } // !namespace 248 } // !namespace