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 }