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 }