995
|
1 /* |
|
2 * test-plugin-auth.c -- test auth plugin |
|
3 * |
|
4 * Copyright (c) 2013-2021 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 #include <err.h> |
|
20 |
|
21 #define GREATEST_USE_ABBREVS 0 |
|
22 #include <greatest.h> |
|
23 |
|
24 #include <irccd/compat.h> |
|
25 #include <irccd/js-plugin.h> |
|
26 #include <irccd/plugin.h> |
|
27 #include <irccd/server.h> |
|
28 |
|
29 /* |
|
30 * 0 -> nickserv without nickname |
|
31 * 1 -> nickserv with nickname |
|
32 * 2 -> quakenet |
|
33 */ |
|
34 static struct irc_server *servers[3]; |
|
35 static struct irc_plugin *plugin; |
|
36 |
|
37 static void |
|
38 setup(void *udata) |
|
39 { |
|
40 (void)udata; |
|
41 |
|
42 servers[0] = irc_server_new("nickserv1", "t", "t", "t", "127.0.0.1", 6667); |
|
43 servers[1] = irc_server_new("nickserv2", "t", "t", "t", "127.0.0.1", 6667); |
|
44 servers[2] = irc_server_new("quakenet", "t", "t", "t", "127.0.0.1", 6667); |
|
45 plugin = js_plugin_open("test", CMAKE_SOURCE_DIR "/plugins/auth/auth.js"); |
|
46 |
|
47 if (!plugin) |
|
48 errx(1, "could not load plugin"); |
|
49 |
|
50 irc_server_incref(servers[0]); |
|
51 irc_server_incref(servers[1]); |
|
52 irc_server_incref(servers[2]); |
|
53 irc_plugin_set_option(plugin, "nickserv1.type", "nickserv"); |
|
54 irc_plugin_set_option(plugin, "nickserv1.password", "plopation"); |
|
55 irc_plugin_set_option(plugin, "nickserv2.type", "nickserv"); |
|
56 irc_plugin_set_option(plugin, "nickserv2.password", "something"); |
|
57 irc_plugin_set_option(plugin, "nickserv2.username", "jean"); |
|
58 irc_plugin_set_option(plugin, "quakenet.type", "quakenet"); |
|
59 irc_plugin_set_option(plugin, "quakenet.password", "hello"); |
|
60 irc_plugin_set_option(plugin, "quakenet.username", "mario"); |
|
61 irc_plugin_load(plugin); |
|
62 |
|
63 /* Fake server connected to send data. */ |
|
64 servers[0]->state = servers[1]->state = servers[2]->state = IRC_SERVER_STATE_CONNECTED; |
|
65 } |
|
66 |
|
67 static void |
|
68 teardown(void *udata) |
|
69 { |
|
70 (void)udata; |
|
71 |
|
72 irc_plugin_finish(plugin); |
|
73 irc_server_decref(servers[0]); |
|
74 irc_server_decref(servers[1]); |
|
75 irc_server_decref(servers[2]); |
|
76 } |
|
77 |
|
78 GREATEST_TEST |
|
79 basics_nickserv1(void) |
|
80 { |
|
81 irc_plugin_handle(plugin, &(const struct irc_event) { |
|
82 .type = IRC_EVENT_CONNECT, |
|
83 .server = servers[0] |
|
84 }); |
|
85 |
|
86 GREATEST_ASSERT_STR_EQ("PRIVMSG NickServ :identify plopation\r\n", servers[0]->conn.out); |
|
87 GREATEST_PASS(); |
|
88 } |
|
89 |
|
90 GREATEST_TEST |
|
91 basics_nickserv2(void) |
|
92 { |
|
93 irc_plugin_handle(plugin, &(const struct irc_event) { |
|
94 .type = IRC_EVENT_CONNECT, |
|
95 .server = servers[1] |
|
96 }); |
|
97 |
|
98 GREATEST_ASSERT_STR_EQ("PRIVMSG NickServ :identify jean something\r\n", servers[1]->conn.out); |
|
99 GREATEST_PASS(); |
|
100 } |
|
101 |
|
102 GREATEST_TEST |
|
103 basics_quakenet(void) |
|
104 { |
|
105 irc_plugin_handle(plugin, &(const struct irc_event) { |
|
106 .type = IRC_EVENT_CONNECT, |
|
107 .server = servers[2] |
|
108 }); |
|
109 |
|
110 GREATEST_ASSERT_STR_EQ("PRIVMSG Q@CServe.quakenet.org :AUTH mario hello\r\n", servers[2]->conn.out); |
|
111 GREATEST_PASS(); |
|
112 } |
|
113 |
|
114 GREATEST_SUITE(suite_basics) |
|
115 { |
|
116 GREATEST_SET_SETUP_CB(setup, NULL); |
|
117 GREATEST_SET_TEARDOWN_CB(teardown, NULL); |
|
118 GREATEST_RUN_TEST(basics_nickserv1); |
|
119 GREATEST_RUN_TEST(basics_nickserv2); |
|
120 GREATEST_RUN_TEST(basics_quakenet); |
|
121 } |
|
122 |
|
123 GREATEST_MAIN_DEFS(); |
|
124 |
|
125 int |
|
126 main(int argc, char **argv) |
|
127 { |
|
128 GREATEST_MAIN_BEGIN(); |
|
129 GREATEST_RUN_SUITE(suite_basics); |
|
130 GREATEST_MAIN_END(); |
|
131 |
|
132 return 0; |
|
133 } |