annotate tests/src/libirccd/rule-util/main.cpp @ 757:97b356010785

Irccd: create (command|jsapi)::registry Make two list of constructor functions to initialize all command and all Javascript modules to avoid duplicating efforts in case of change. While here, update test fixtures to load all of them for simplicity.
author David Demelier <markand@malikania.fr>
date Mon, 06 Aug 2018 21:27:00 +0200
parents e8c4ba5ed1c6
children 35c1517d705d
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 BOOST_AUTO_TEST_SUITE(from_config)
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(valid)
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_CASE(servers)
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 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
49
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 BOOST_TEST(rule.get_servers().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 BOOST_TEST(rule.get_servers().count("s1"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 BOOST_TEST(rule.get_channels().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 BOOST_TEST(rule.get_plugins().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 BOOST_TEST(rule.get_events().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 BOOST_AUTO_TEST_CASE(channels)
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 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
60
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 BOOST_TEST(rule.get_servers().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 BOOST_TEST(rule.get_channels().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 BOOST_TEST(rule.get_channels().count("#c1"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 BOOST_TEST(rule.get_plugins().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 BOOST_TEST(rule.get_events().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 BOOST_AUTO_TEST_CASE(plugins)
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 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
71
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 BOOST_TEST(rule.get_servers().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 BOOST_TEST(rule.get_channels().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 BOOST_TEST(rule.get_plugins().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 BOOST_TEST(rule.get_plugins().count("hangman"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 BOOST_TEST(rule.get_events().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 BOOST_AUTO_TEST_CASE(events)
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 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
82
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 BOOST_TEST(rule.get_servers().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 BOOST_TEST(rule.get_channels().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 BOOST_TEST(rule.get_plugins().empty());
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 BOOST_TEST(rule.get_events().size() == 1U);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 BOOST_TEST(rule.get_events().count("onCommand"));
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 BOOST_AUTO_TEST_SUITE(errors)
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_CASE(invalid_action)
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_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
95
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 try {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 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
98 } catch (const rule_error& ex) {
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 BOOST_TEST(ex.code() == rule_error::invalid_action);
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 }
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 BOOST_AUTO_TEST_SUITE_END()
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
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 687
diff changeset
109 } // !namespace
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 687
diff changeset
110
687
84537e43b352 Tests: add [rule] load tests, continue #779
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 } // !irccd