Mercurial > irccd
comparison tests/cmd-server-kick/main.cpp @ 558:f1ad428208d3
Tests: convert cmd-server-*, #593
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 25 Nov 2017 17:00:24 +0100 |
parents | 7e273b7f4f92 |
children | a8b892177909 |
comparison
equal
deleted
inserted
replaced
557:c729f06c6f27 | 558:f1ad428208d3 |
---|---|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 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 | 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 */ | 17 */ |
18 | 18 |
19 #include <command.hpp> | 19 #define BOOST_TEST_MODULE "server-kick" |
20 #include <command-tester.hpp> | 20 #include <boost/test/unit_test.hpp> |
21 #include <server-tester.hpp> | |
22 | 21 |
23 using namespace irccd; | 22 #include <irccd/server_service.hpp> |
23 | |
24 #include <journal_server.hpp> | |
25 #include <command_test.hpp> | |
26 | |
27 namespace irccd { | |
24 | 28 |
25 namespace { | 29 namespace { |
26 | 30 |
27 std::string cmd_target; | 31 class server_kick_test : public command_test<server_kick_command> { |
28 std::string cmd_channel; | 32 protected: |
29 std::string cmd_reason; | 33 std::shared_ptr<journal_server> server_{new journal_server(service_, "test")}; |
34 | |
35 server_kick_test() | |
36 { | |
37 daemon_->servers().add(server_); | |
38 } | |
39 }; | |
30 | 40 |
31 } // !namespace | 41 } // !namespace |
32 | 42 |
33 class ServerKickTest : public ServerTester { | 43 BOOST_FIXTURE_TEST_SUITE(server_kick_test_suite, server_kick_test) |
34 public: | |
35 void kick(std::string target, std::string channel, std::string reason) override | |
36 { | |
37 ::cmd_target = target; | |
38 ::cmd_channel = channel; | |
39 ::cmd_reason = reason; | |
40 } | |
41 }; | |
42 | 44 |
43 class ServerKickCommandTest : public CommandTester { | 45 BOOST_AUTO_TEST_CASE(basic) |
44 public: | 46 { |
45 ServerKickCommandTest() | 47 ctl_->send({ |
46 : CommandTester(std::make_unique<server_kick_command>(), | 48 { "command", "server-kick" }, |
47 std::make_unique<ServerKickTest>()) | 49 { "server", "test" }, |
48 { | 50 { "target", "francis" }, |
49 cmd_target.clear(); | 51 { "channel", "#staff" }, |
50 cmd_channel.clear(); | 52 { "reason", "too noisy" } |
51 cmd_reason.clear(); | 53 }); |
52 } | |
53 }; | |
54 | 54 |
55 TEST_F(ServerKickCommandTest, basic) | 55 wait_for([this] () { |
56 { | 56 return !server_->cqueue().empty(); |
57 try { | 57 }); |
58 m_irccdctl.client().request({ | |
59 { "command", "server-kick" }, | |
60 { "server", "test" }, | |
61 { "target", "francis" }, | |
62 { "channel", "#staff" }, | |
63 { "reason", "too noisy" } | |
64 }); | |
65 | 58 |
66 poll([&] () { | 59 auto cmd = server_->cqueue().back(); |
67 return !cmd_target.empty() && !cmd_channel.empty(); | |
68 }); | |
69 | 60 |
70 ASSERT_EQ("francis", cmd_target); | 61 BOOST_TEST(cmd["command"].get<std::string>() == "kick"); |
71 ASSERT_EQ("#staff", cmd_channel); | 62 BOOST_TEST(cmd["channel"].get<std::string>() == "#staff"); |
72 ASSERT_EQ("too noisy", cmd_reason); | 63 BOOST_TEST(cmd["target"].get<std::string>() == "francis"); |
73 } catch (const std::exception &ex) { | 64 BOOST_TEST(cmd["reason"].get<std::string>() == "too noisy"); |
74 FAIL() << ex.what(); | |
75 } | |
76 } | 65 } |
77 | 66 |
78 TEST_F(ServerKickCommandTest, noreason) | 67 BOOST_AUTO_TEST_CASE(noreason) |
79 { | 68 { |
80 try { | 69 ctl_->send({ |
81 m_irccdctl.client().request({ | 70 { "command", "server-kick" }, |
82 { "command", "server-kick" }, | 71 { "server", "test" }, |
83 { "server", "test" }, | 72 { "target", "francis" }, |
84 { "target", "francis" }, | 73 { "channel", "#staff" } |
85 { "channel", "#staff" } | 74 }); |
86 }); | |
87 | 75 |
88 poll([&] () { | 76 wait_for([this] () { |
89 return !cmd_target.empty() && !cmd_channel.empty(); | 77 return !server_->cqueue().empty(); |
90 }); | 78 }); |
91 | 79 |
92 ASSERT_EQ("francis", cmd_target); | 80 auto cmd = server_->cqueue().back(); |
93 ASSERT_EQ("#staff", cmd_channel); | 81 |
94 ASSERT_EQ("", cmd_reason); | 82 BOOST_TEST(cmd["command"].get<std::string>() == "kick"); |
95 } catch (const std::exception &ex) { | 83 BOOST_TEST(cmd["channel"].get<std::string>() == "#staff"); |
96 FAIL() << ex.what(); | 84 BOOST_TEST(cmd["target"].get<std::string>() == "francis"); |
97 } | 85 BOOST_TEST(cmd["reason"].get<std::string>() == ""); |
98 } | 86 } |
99 | 87 |
100 int main(int argc, char **argv) | 88 BOOST_AUTO_TEST_SUITE_END() |
101 { | |
102 testing::InitGoogleTest(&argc, argv); | |
103 | 89 |
104 return RUN_ALL_TESTS(); | 90 } // !irccd |
105 } |