annotate tests/src/libirccd/command-rule-list/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 c216d148558d
children 35c1517d705d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test rule-list remote command
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 626
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
19 #define BOOST_TEST_MODULE "rule-list"
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
20 #include <boost/test/unit_test.hpp>
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
21
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
22 #include <irccd/json_util.hpp>
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
24 #include <irccd/test/command_fixture.hpp>
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
26 namespace irccd::test {
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
27
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
28 namespace {
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
29
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
30 class rule_list_fixture : public command_fixture {
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
31 public:
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
32 rule_list_fixture()
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
34 irccd_.rules().add(rule(
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 { "s1", "s2" },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 { "c1", "c2" },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 { "o1", "o2" },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 { "p1", "p2" },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 { "onMessage", "onCommand" },
626
c6000e13ab02 Irccd: prefix get_ (rule)
David Demelier <markand@malikania.fr>
parents: 624
diff changeset
40 rule::action::drop
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 ));
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
42 irccd_.rules().add(rule(
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 { "s1", },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 { "c1", },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 { "o1", },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 { "p1", },
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 { "onMessage", },
626
c6000e13ab02 Irccd: prefix get_ (rule)
David Demelier <markand@malikania.fr>
parents: 624
diff changeset
48 rule::action::accept
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 ));
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 }
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 };
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
53 BOOST_FIXTURE_TEST_SUITE(rule_list_fixture_suite, rule_list_fixture)
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
54
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
55 BOOST_AUTO_TEST_CASE(basic)
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 {
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
57 const auto [json, code] = request({{ "command", "rule-list" }});
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
59 BOOST_TEST(!code);
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
60 BOOST_TEST(json.is_object());
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
61 BOOST_TEST(json["list"].is_array());
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
62 BOOST_TEST(json["list"].size() == 2U);
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
64 // Rule 0.
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
65 {
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
66 auto servers = json["list"][0]["servers"];
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
67 auto channels = json["list"][0]["channels"];
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
68 auto plugins = json["list"][0]["plugins"];
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
69 auto events = json["list"][0]["events"];
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
71 BOOST_TEST(json_util::contains(servers, "s1"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
72 BOOST_TEST(json_util::contains(servers, "s2"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
73 BOOST_TEST(json_util::contains(channels, "c1"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
74 BOOST_TEST(json_util::contains(channels, "c2"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
75 BOOST_TEST(json_util::contains(plugins, "p1"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
76 BOOST_TEST(json_util::contains(plugins, "p2"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
77 BOOST_TEST(json_util::contains(events, "onMessage"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
78 BOOST_TEST(json_util::contains(events, "onCommand"));
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
79 BOOST_TEST(json["list"][0]["action"].get<std::string>() == "drop");
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
80 }
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
82 // Rule 1.
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
83 {
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
84 auto servers = json["list"][1]["servers"];
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
85 auto channels = json["list"][1]["channels"];
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
86 auto plugins = json["list"][1]["plugins"];
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
87 auto events = json["list"][1]["events"];
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
88
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
89 BOOST_TEST(json_util::contains(servers, "s1"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
90 BOOST_TEST(json_util::contains(channels, "c1"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
91 BOOST_TEST(json_util::contains(plugins, "p1"));
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
92 BOOST_TEST(json_util::contains(events, "onMessage"));
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
93 BOOST_TEST(json["list"][1]["action"].get<std::string>() == "accept");
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 }
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 }
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
97 BOOST_AUTO_TEST_CASE(empty)
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 {
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
99 irccd_.rules().remove(0);
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
100 irccd_.rules().remove(0);
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
102 const auto [json, code] = request({{ "command", "rule-list" }});
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
737
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
104 BOOST_TEST(!code);
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
105 BOOST_TEST(json.is_object());
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
106 BOOST_TEST(json["list"].is_array());
190b16cfa848 Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
107 BOOST_TEST(json["list"].empty());
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 }
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
557
c729f06c6f27 Tests: convert cmd-rule-*, #593
David Demelier <markand@malikania.fr>
parents: 488
diff changeset
110 BOOST_AUTO_TEST_SUITE_END()
448
9be4f8a5cf1a Irccdctl: implement rule-list
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 651
diff changeset
112 } // !namespace
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 651
diff changeset
113
757
97b356010785 Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents: 754
diff changeset
114 } // !irccd::test