annotate tests/src/libirccd/rule-util/main.cpp @ 687:84537e43b352

Tests: add [rule] load tests, continue #779
author David Demelier <markand@malikania.fr>
date Fri, 13 Apr 2018 22:32:30 +0200
parents
children e8c4ba5ed1c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
687
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test rule_util functions
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define BOOST_TEST_MODULE "rule_util"
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <boost/test/unit_test.hpp>
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <boost/filesystem.hpp>
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <irccd/ini.hpp>
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <irccd/daemon/rule.hpp>
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include <irccd/daemon/rule_util.hpp>
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 namespace irccd {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 namespace {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 ini::document open(const std::string& config)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 boost::filesystem::path path;
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 path /= CMAKE_CURRENT_SOURCE_DIR;
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 path /= config;
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 return ini::read_file(path.string());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 } // !namespace
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 BOOST_AUTO_TEST_SUITE(from_config)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 BOOST_AUTO_TEST_SUITE(valid)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 BOOST_AUTO_TEST_CASE(servers)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 const auto rule = rule_util::from_config(open("simple.conf")[0]);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 BOOST_TEST(rule.get_servers().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 BOOST_TEST(rule.get_servers().count("s1"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 BOOST_TEST(rule.get_channels().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 BOOST_TEST(rule.get_plugins().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 BOOST_TEST(rule.get_events().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 BOOST_AUTO_TEST_CASE(channels)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 const auto rule = rule_util::from_config(open("simple.conf")[1]);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 BOOST_TEST(rule.get_servers().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 BOOST_TEST(rule.get_channels().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 BOOST_TEST(rule.get_channels().count("#c1"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 BOOST_TEST(rule.get_plugins().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 BOOST_TEST(rule.get_events().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 BOOST_AUTO_TEST_CASE(plugins)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 const auto rule = rule_util::from_config(open("simple.conf")[2]);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 BOOST_TEST(rule.get_servers().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 BOOST_TEST(rule.get_channels().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 BOOST_TEST(rule.get_plugins().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 BOOST_TEST(rule.get_plugins().count("hangman"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 BOOST_TEST(rule.get_events().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 BOOST_AUTO_TEST_CASE(events)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 const auto rule = rule_util::from_config(open("simple.conf")[3]);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 BOOST_TEST(rule.get_servers().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 BOOST_TEST(rule.get_channels().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 BOOST_TEST(rule.get_plugins().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 BOOST_TEST(rule.get_events().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 BOOST_TEST(rule.get_events().count("onCommand"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 BOOST_AUTO_TEST_SUITE(errors)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 BOOST_AUTO_TEST_CASE(invalid_action)
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 BOOST_REQUIRE_THROW(rule_util::from_config(open("error-invalid-action.conf")[0]), rule_error);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 try {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 rule_util::from_config(open("error-invalid-action.conf")[0]);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 } catch (const rule_error& ex) {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 BOOST_TEST(ex.code() == rule_error::invalid_action);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
104
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 BOOST_AUTO_TEST_SUITE_END()
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 BOOST_AUTO_TEST_SUITE_END()
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 BOOST_AUTO_TEST_SUITE_END()
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 } // !irccd