Mercurial > irccd
annotate tests/src/libirccd/command-server-part/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 |
---|---|
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- test server-part remote command |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
628
27587ff92a64
Misc: update copyrights
David Demelier <markand@malikania.fr>
parents:
624
diff
changeset
|
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
8 * copyright part and this permission part appear in all copies. |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
19 #define BOOST_TEST_MODULE "server-part" |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
20 #include <boost/test/unit_test.hpp> |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
21 |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
22 #include <irccd/test/command_fixture.hpp> |
303
ca5bc0624fb5
Tests: add test for server-part, #559
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 namespace irccd::test { |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 namespace { |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
28 BOOST_FIXTURE_TEST_SUITE(server_part_fixture_suite, command_fixture) |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
30 BOOST_AUTO_TEST_CASE(basic) |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
31 { |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
32 const auto [json, code] = request({ |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
33 { "command", "server-part" }, |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
34 { "server", "test" }, |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
35 { "channel", "#staff" }, |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
36 { "reason", "too noisy" } |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
37 }); |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 |
735
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
733
diff
changeset
|
39 const auto cmd = server_->find("part").back(); |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
40 |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
41 BOOST_TEST(!code); |
735
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
733
diff
changeset
|
42 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#staff"); |
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
733
diff
changeset
|
43 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "too noisy"); |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 } |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
46 BOOST_AUTO_TEST_CASE(noreason) |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 { |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
48 const auto [json, code] = request({ |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
49 { "command", "server-part" }, |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
50 { "server", "test" }, |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
51 { "channel", "#staff" } |
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
52 }); |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
735
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
733
diff
changeset
|
54 const auto cmd = server_->find("part").back(); |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
56 BOOST_TEST(!code); |
735
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
733
diff
changeset
|
57 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#staff"); |
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
733
diff
changeset
|
58 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == ""); |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 } |
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
61 BOOST_AUTO_TEST_SUITE(errors) |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
62 |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
63 BOOST_AUTO_TEST_CASE(invalid_identifier_1) |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
64 { |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
65 const auto [json, code] = request({ |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
66 { "command", "server-part" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
67 { "server", 123456 }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
68 { "channel", "#music" } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
69 }); |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
70 |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
71 BOOST_TEST(code == server_error::invalid_identifier); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
72 BOOST_TEST(json["error"].get<int>() == server_error::invalid_identifier); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
73 BOOST_TEST(json["errorCategory"].get<std::string>() == "server"); |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
74 } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
75 |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
76 BOOST_AUTO_TEST_CASE(invalid_identifier_2) |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
77 { |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
78 const auto [json, code] = request({ |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
79 { "command", "server-part" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
80 { "server", "" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
81 { "channel", "#music" } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
82 }); |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
83 |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
84 BOOST_TEST(code == server_error::invalid_identifier); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
85 BOOST_TEST(json["error"].get<int>() == server_error::invalid_identifier); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
86 BOOST_TEST(json["errorCategory"].get<std::string>() == "server"); |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
87 } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
88 |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
89 BOOST_AUTO_TEST_CASE(invalid_channel_1) |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
90 { |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
91 const auto [json, code] = request({ |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
92 { "command", "server-part" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
93 { "server", "test" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
94 { "channel", "" } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
95 }); |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
96 |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
97 BOOST_TEST(code == server_error::invalid_channel); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
98 BOOST_TEST(json["error"].get<int>() == server_error::invalid_channel); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
99 BOOST_TEST(json["errorCategory"].get<std::string>() == "server"); |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
100 } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
101 |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
102 BOOST_AUTO_TEST_CASE(invalid_channel_2) |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
103 { |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
104 const auto [json, code] = request({ |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
105 { "command", "server-part" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
106 { "server", "test" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
107 { "channel", 123456 } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
108 }); |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
109 |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
110 BOOST_TEST(code == server_error::invalid_channel); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
111 BOOST_TEST(json["error"].get<int>() == server_error::invalid_channel); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
112 BOOST_TEST(json["errorCategory"].get<std::string>() == "server"); |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
113 } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
114 |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
115 BOOST_AUTO_TEST_CASE(not_found) |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
116 { |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
117 const auto [json, code] = request({ |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
118 { "command", "server-part" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
119 { "server", "unknown" }, |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
120 { "channel", "#music" } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
121 }); |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
122 |
737
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
123 BOOST_TEST(code == server_error::not_found); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
124 BOOST_TEST(json["error"].get<int>() == server_error::not_found); |
190b16cfa848
Tests: improve command tests readability
David Demelier <markand@malikania.fr>
parents:
735
diff
changeset
|
125 BOOST_TEST(json["errorCategory"].get<std::string>() == "server"); |
578
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
126 } |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
127 |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
128 BOOST_AUTO_TEST_SUITE_END() |
a8b892177909
Tests: add error code support in cmd-server-* tests
David Demelier <markand@malikania.fr>
parents:
558
diff
changeset
|
129 |
558
f1ad428208d3
Tests: convert cmd-server-*, #593
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
130 BOOST_AUTO_TEST_SUITE_END() |
303
ca5bc0624fb5
Tests: add test for server-part, #559
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 |
723
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
132 } // !namespace |
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
670
diff
changeset
|
133 |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
134 } // !irccd::test |