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