Mercurial > irccd
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 |