comparison tests/src/server-join-command/main.cpp @ 581:a51b5dd5b761

Tests: put everything in src/
author David Demelier <markand@malikania.fr>
date Mon, 04 Dec 2017 14:12:13 +0100
parents tests/server-join-command/main.cpp@84ea13c850f4
children 35832b7f4f9d
comparison
equal deleted inserted replaced
580:2e16c3623531 581:a51b5dd5b761
1 /*
2 * main.cpp -- test server-join remote command
3 *
4 * Copyright (c) 2013-2017 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 "server-join"
20 #include <boost/test/unit_test.hpp>
21
22 #include <irccd/server_service.hpp>
23
24 #include <journal_server.hpp>
25 #include <command_test.hpp>
26
27 namespace irccd {
28
29 namespace {
30
31 class server_join_test : public command_test<server_join_command> {
32 protected:
33 std::shared_ptr<journal_server> server_{new journal_server(service_, "test")};
34
35 server_join_test()
36 {
37 daemon_->servers().add(server_);
38 }
39 };
40
41 } // !namespace
42
43 BOOST_FIXTURE_TEST_SUITE(server_join_test_suite, server_join_test)
44
45 BOOST_AUTO_TEST_CASE(basic)
46 {
47 ctl_->send({
48 { "command", "server-join" },
49 { "server", "test" },
50 { "channel", "#music" },
51 { "password", "plop" }
52 });
53
54 wait_for([this] () {
55 return !server_->cqueue().empty();
56 });
57
58 auto cmd = server_->cqueue().back();
59
60 BOOST_TEST(cmd["command"].get<std::string>() == "join");
61 BOOST_TEST(cmd["channel"].get<std::string>() == "#music");
62 BOOST_TEST(cmd["password"].get<std::string>() == "plop");
63 }
64
65 BOOST_AUTO_TEST_CASE(nopassword)
66 {
67 ctl_->send({
68 { "command", "server-join" },
69 { "server", "test" },
70 { "channel", "#music" }
71 });
72
73 wait_for([this] () {
74 return !server_->cqueue().empty();
75 });
76
77 auto cmd = server_->cqueue().back();
78
79 BOOST_TEST(cmd["command"].get<std::string>() == "join");
80 BOOST_TEST(cmd["channel"].get<std::string>() == "#music");
81 BOOST_TEST(cmd["password"].get<std::string>() == "");
82 }
83
84 BOOST_AUTO_TEST_SUITE(errors)
85
86 BOOST_AUTO_TEST_CASE(invalid_identifier_1)
87 {
88 boost::system::error_code result;
89
90 ctl_->send({
91 { "command", "server-join" },
92 { "server", 123456 },
93 { "channel", "#music" }
94 });
95 ctl_->recv([&] (auto code, auto) {
96 result = code;
97 });
98
99 wait_for([&] {
100 return result;
101 });
102
103 BOOST_ASSERT(result == server_error::invalid_identifier);
104 }
105
106 BOOST_AUTO_TEST_CASE(invalid_identifier_2)
107 {
108 boost::system::error_code result;
109
110 ctl_->send({
111 { "command", "server-join" },
112 { "server", "" },
113 { "channel", "#music" }
114 });
115 ctl_->recv([&] (auto code, auto) {
116 result = code;
117 });
118
119 wait_for([&] {
120 return result;
121 });
122
123 BOOST_ASSERT(result == server_error::invalid_identifier);
124 }
125
126 BOOST_AUTO_TEST_CASE(invalid_channel_1)
127 {
128 boost::system::error_code result;
129
130 ctl_->send({
131 { "command", "server-join" },
132 { "server", "test" },
133 { "channel", "" }
134 });
135 ctl_->recv([&] (auto code, auto) {
136 result = code;
137 });
138
139 wait_for([&] {
140 return result;
141 });
142
143 BOOST_ASSERT(result == server_error::invalid_channel);
144 }
145
146 BOOST_AUTO_TEST_CASE(invalid_channel_2)
147 {
148 boost::system::error_code result;
149
150 ctl_->send({
151 { "command", "server-join" },
152 { "server", "test" },
153 { "channel", 123456 }
154 });
155 ctl_->recv([&] (auto code, auto) {
156 result = code;
157 });
158
159 wait_for([&] {
160 return result;
161 });
162
163 BOOST_ASSERT(result == server_error::invalid_channel);
164 }
165
166 BOOST_AUTO_TEST_CASE(not_found)
167 {
168 boost::system::error_code result;
169
170 ctl_->send({
171 { "command", "server-join" },
172 { "server", "unknown" },
173 { "channel", "#music" }
174 });
175 ctl_->recv([&] (auto code, auto) {
176 result = code;
177 });
178
179 wait_for([&] {
180 return result;
181 });
182
183 BOOST_ASSERT(result == server_error::not_found);
184 }
185
186 BOOST_AUTO_TEST_SUITE_END()
187
188 BOOST_AUTO_TEST_SUITE_END()
189
190 } // !irccd