Mercurial > irccd
comparison tests/plugin-auth/main.cpp @ 489:349fe29d86d5
Tests: switch to Boost, closes #680
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 20 Aug 2017 08:16:39 +0200 |
parents | 7e273b7f4f92 |
children | 68032209609d |
comparison
equal
deleted
inserted
replaced
488:7e273b7f4f92 | 489:349fe29d86d5 |
---|---|
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 <gtest/gtest.h> | 19 #define BOOST_TEST_MODULE "Auth plugin" |
20 #include <boost/test/unit_test.hpp> | |
20 | 21 |
21 #include <irccd/irccd.hpp> | 22 #include <irccd/irccd.hpp> |
22 #include <irccd/server.hpp> | 23 #include <irccd/server.hpp> |
23 #include <irccd/service.hpp> | 24 #include <irccd/service.hpp> |
24 | 25 |
25 #include "plugin_test.hpp" | 26 #include "plugin_test.hpp" |
26 | 27 |
27 using namespace irccd; | 28 namespace irccd { |
28 | |
29 class server_test : public server { | |
30 private: | |
31 std::string last_; | |
32 | |
33 public: | |
34 inline server_test(std::string name) | |
35 : server(std::move(name)) | |
36 { | |
37 } | |
38 | |
39 inline const std::string& last() const noexcept | |
40 { | |
41 return last_; | |
42 } | |
43 | |
44 void message(std::string target, std::string message) override | |
45 { | |
46 last_ = util::join({target, message}); | |
47 } | |
48 }; | |
49 | 29 |
50 class auth_test : public plugin_test { | 30 class auth_test : public plugin_test { |
51 protected: | 31 protected: |
52 std::shared_ptr<server_test> nickserv1_; | 32 std::shared_ptr<journal_server> nickserv1_; |
53 std::shared_ptr<server_test> nickserv2_; | 33 std::shared_ptr<journal_server> nickserv2_; |
54 std::shared_ptr<server_test> quakenet_; | 34 std::shared_ptr<journal_server> quakenet_; |
55 | 35 |
56 public: | 36 public: |
57 auth_test() | 37 auth_test() |
58 : plugin_test(PLUGIN_NAME, PLUGIN_PATH) | 38 : plugin_test(PLUGIN_NAME, PLUGIN_PATH) |
59 , nickserv1_(std::make_shared<server_test>("nickserv1")) | 39 , nickserv1_(std::make_shared<journal_server>("nickserv1")) |
60 , nickserv2_(std::make_shared<server_test>("nickserv2")) | 40 , nickserv2_(std::make_shared<journal_server>("nickserv2")) |
61 , quakenet_(std::make_shared<server_test>("quakenet")) | 41 , quakenet_(std::make_shared<journal_server>("quakenet")) |
62 { | 42 { |
63 plugin_->set_config({ | 43 plugin_->set_config({ |
64 { "nickserv1.type", "nickserv" }, | 44 { "nickserv1.type", "nickserv" }, |
65 { "nickserv1.password", "plopation" }, | 45 { "nickserv1.password", "plopation" }, |
66 { "nickserv2.type", "nickserv" }, | 46 { "nickserv2.type", "nickserv" }, |
72 }); | 52 }); |
73 plugin_->on_load(irccd_); | 53 plugin_->on_load(irccd_); |
74 } | 54 } |
75 }; | 55 }; |
76 | 56 |
77 TEST_F(auth_test, nickserv1) | 57 BOOST_FIXTURE_TEST_SUITE(auth_test_suite, auth_test) |
58 | |
59 BOOST_AUTO_TEST_CASE(nickserv1) | |
78 { | 60 { |
79 plugin_->on_connect(irccd_, {nickserv1_}); | 61 plugin_->on_connect(irccd_, {nickserv1_}); |
80 | 62 |
81 ASSERT_EQ("NickServ:identify plopation", nickserv1_->last()); | 63 auto cmd = nickserv1_->cqueue().front(); |
64 | |
65 BOOST_REQUIRE_EQUAL(cmd["command"].get<std::string>(), "message"); | |
66 BOOST_REQUIRE_EQUAL(cmd["target"].get<std::string>(), "NickServ"); | |
67 BOOST_REQUIRE_EQUAL(cmd["message"].get<std::string>(), "identify plopation"); | |
82 } | 68 } |
83 | 69 |
84 TEST_F(auth_test, nickserv2) | 70 BOOST_AUTO_TEST_CASE(nickserv2) |
85 { | 71 { |
86 plugin_->on_connect(irccd_, {nickserv2_}); | 72 plugin_->on_connect(irccd_, {nickserv2_}); |
87 | 73 |
88 ASSERT_EQ("NickServ:identify jean something", nickserv2_->last()); | 74 auto cmd = nickserv2_->cqueue().front(); |
75 | |
76 BOOST_REQUIRE_EQUAL(cmd["command"].get<std::string>(), "message"); | |
77 BOOST_REQUIRE_EQUAL(cmd["target"].get<std::string>(), "NickServ"); | |
78 BOOST_REQUIRE_EQUAL(cmd["message"].get<std::string>(), "identify jean something"); | |
89 } | 79 } |
90 | 80 |
91 TEST_F(auth_test, quakenet) | 81 BOOST_AUTO_TEST_CASE(quakenet) |
92 { | 82 { |
93 plugin_->on_connect(irccd_, {quakenet_}); | 83 plugin_->on_connect(irccd_, {quakenet_}); |
94 | 84 |
95 ASSERT_EQ("Q@CServe.quakenet.org:AUTH mario hello", quakenet_->last()); | 85 auto cmd = quakenet_->cqueue().front(); |
86 | |
87 BOOST_REQUIRE_EQUAL(cmd["command"].get<std::string>(), "message"); | |
88 BOOST_REQUIRE_EQUAL(cmd["target"].get<std::string>(), "Q@CServe.quakenet.org"); | |
89 BOOST_REQUIRE_EQUAL(cmd["message"].get<std::string>(), "AUTH mario hello"); | |
96 } | 90 } |
97 | 91 |
98 int main(int argc, char** argv) | 92 BOOST_AUTO_TEST_SUITE_END() |
99 { | |
100 testing::InitGoogleTest(&argc, argv); | |
101 | 93 |
102 return RUN_ALL_TESTS(); | 94 } // !irccd |
103 } |