summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2020-06-21 10:22:37 +0200
committerSébastien Helleu <flashcode@flashtux.org>2020-06-21 10:22:37 +0200
commit5b151d1639f4656f79b92b7b495251b51bc10d1d (patch)
tree0800b0827fcf77fcc4ddc2fa2a7c25a7c1b6bf0f /tests
parent4a42cda3a5f5b02d8ba9afae129499c26250d334 (diff)
downloadweechat-5b151d1639f4656f79b92b7b495251b51bc10d1d.zip
irc: check that the first nick char is not a prefix char or chantype in function irc_nick_is_nick
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/plugins/irc/test-irc-nick.cpp35
1 files changed, 32 insertions, 3 deletions
diff --git a/tests/unit/plugins/irc/test-irc-nick.cpp b/tests/unit/plugins/irc/test-irc-nick.cpp
index 8f0d7ea17..f06fadf0f 100644
--- a/tests/unit/plugins/irc/test-irc-nick.cpp
+++ b/tests/unit/plugins/irc/test-irc-nick.cpp
@@ -23,6 +23,7 @@
extern "C"
{
+#include <string.h>
#include "src/plugins/irc/irc-nick.h"
#include "src/plugins/irc/irc-server.h"
}
@@ -57,11 +58,19 @@ TEST(IrcNick, IsNick)
LONGS_EQUAL(0, irc_nick_is_nick (NULL, ""));
LONGS_EQUAL(0, irc_nick_is_nick (NULL, " "));
- /* invalid first char */
+ /* invalid first char (rfc1459) */
LONGS_EQUAL(0, irc_nick_is_nick (NULL, "0abc"));
LONGS_EQUAL(0, irc_nick_is_nick (NULL, "9abc"));
LONGS_EQUAL(0, irc_nick_is_nick (NULL, "-abc"));
+ /* invalid first char: prefix char */
+ LONGS_EQUAL(0, irc_nick_is_nick (NULL, "@abc"));
+ LONGS_EQUAL(0, irc_nick_is_nick (NULL, "+abc"));
+
+ /* invalid first char: chantypes */
+ LONGS_EQUAL(0, irc_nick_is_nick (NULL, "#abc"));
+ LONGS_EQUAL(0, irc_nick_is_nick (NULL, "&abc"));
+
/* invalid chars in nick */
LONGS_EQUAL(0, irc_nick_is_nick (NULL, "nick test"));
LONGS_EQUAL(0, irc_nick_is_nick (NULL, "nick,test"));
@@ -80,13 +89,23 @@ TEST(IrcNick, IsNick)
LONGS_EQUAL(1, irc_nick_is_nick (NULL, "alice"));
LONGS_EQUAL(1, irc_nick_is_nick (NULL, "very_long_nick_which_is_valid"));
- /* server with utf8mapping = rfc8265, nicklen = 20 */
+ /*
+ * server with:
+ * utf8mapping = rfc8265
+ * nicklen = 20
+ * prefix = (qaohv)~&@%+
+ * chantypes = #
+ */
server = irc_server_alloc ("my_ircd");
CHECK(server);
if (server->chantypes)
free (server->chantypes);
- server->utf8mapping =IRC_SERVER_UTF8MAPPING_RFC8265;
+ server->utf8mapping = IRC_SERVER_UTF8MAPPING_RFC8265;
server->nick_max_length = 20;
+ irc_server_set_prefix_modes_chars (server, "(qaohv)~&@%+");
+ if (server->chantypes)
+ free (server->chantypes);
+ server->chantypes = strdup ("#");
/* empty nick */
LONGS_EQUAL(0, irc_nick_is_nick (server, NULL));
@@ -101,6 +120,16 @@ TEST(IrcNick, IsNick)
LONGS_EQUAL(1, irc_nick_is_nick (server, "9abc"));
LONGS_EQUAL(1, irc_nick_is_nick (server, "-abc"));
+ /* invalid first char: prefix char */
+ LONGS_EQUAL(0, irc_nick_is_nick (server, "~abc"));
+ LONGS_EQUAL(0, irc_nick_is_nick (server, "&abc"));
+ LONGS_EQUAL(0, irc_nick_is_nick (server, "@abc"));
+ LONGS_EQUAL(0, irc_nick_is_nick (server, "%abc"));
+ LONGS_EQUAL(0, irc_nick_is_nick (server, "+abc"));
+
+ /* invalid first char: chantypes */
+ LONGS_EQUAL(0, irc_nick_is_nick (server, "#abc"));
+
/* invalid chars in nick */
LONGS_EQUAL(0, irc_nick_is_nick (server, "nick test"));
LONGS_EQUAL(0, irc_nick_is_nick (server, "nick,test"));