diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2020-06-21 10:22:37 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2020-06-21 10:22:37 +0200 |
commit | 5b151d1639f4656f79b92b7b495251b51bc10d1d (patch) | |
tree | 0800b0827fcf77fcc4ddc2fa2a7c25a7c1b6bf0f /tests | |
parent | 4a42cda3a5f5b02d8ba9afae129499c26250d334 (diff) | |
download | weechat-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.cpp | 35 |
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")); |