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