diff --git a/GNUmakefile b/GNUmakefile index de55a68..b0a6cf7 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -183,6 +183,7 @@ adcrush_SOURCES := src/tools/adcrush.c admin_SOURCES := src/tools/admin.c autotest_SOURCES := \ + autotest/test_credentials.tcc \ autotest/test_eventqueue.tcc \ autotest/test_hub.tcc \ autotest/test_inf.tcc \ diff --git a/autotest/test_credentials.tcc b/autotest/test_credentials.tcc new file mode 100644 index 0000000..6b31304 --- /dev/null +++ b/autotest/test_credentials.tcc @@ -0,0 +1,24 @@ +#include + +EXO_TEST(cred_to_string_1, { return !strcmp(auth_cred_to_string(auth_cred_none), "none"); }); +EXO_TEST(cred_to_string_2, { return !strcmp(auth_cred_to_string(auth_cred_bot), "bot"); }); +EXO_TEST(cred_to_string_3, { return !strcmp(auth_cred_to_string(auth_cred_guest), "guest"); }); +EXO_TEST(cred_to_string_4, { return !strcmp(auth_cred_to_string(auth_cred_user), "user"); }); +EXO_TEST(cred_to_string_5, { return !strcmp(auth_cred_to_string(auth_cred_operator), "operator"); }); +EXO_TEST(cred_to_string_6, { return !strcmp(auth_cred_to_string(auth_cred_super), "super"); }); +EXO_TEST(cred_to_string_7, { return !strcmp(auth_cred_to_string(auth_cred_link), "link"); }); +EXO_TEST(cred_to_string_8, { return !strcmp(auth_cred_to_string(auth_cred_admin), "admin"); }); + +#define CRED_FROM_STRING(STR, EXPECT) enum auth_credentials cred; return auth_string_to_cred(STR, &cred) && cred == EXPECT; + +EXO_TEST(cred_from_string_1, { CRED_FROM_STRING("none", auth_cred_none); }); +EXO_TEST(cred_from_string_2, { CRED_FROM_STRING("bot", auth_cred_bot); }); +EXO_TEST(cred_from_string_3, { CRED_FROM_STRING("guest", auth_cred_guest); }); +EXO_TEST(cred_from_string_4, { CRED_FROM_STRING("user", auth_cred_user); }); +EXO_TEST(cred_from_string_5, { CRED_FROM_STRING("reg", auth_cred_user); }); +EXO_TEST(cred_from_string_6, { CRED_FROM_STRING("operator", auth_cred_operator); }); +EXO_TEST(cred_from_string_7, { CRED_FROM_STRING("op", auth_cred_operator); }); +EXO_TEST(cred_from_string_8, { CRED_FROM_STRING("super", auth_cred_super); }); +EXO_TEST(cred_from_string_9, { CRED_FROM_STRING("link", auth_cred_link); }); +EXO_TEST(cred_from_string_10, { CRED_FROM_STRING("admin", auth_cred_admin); }); + diff --git a/src/util/credentials.c b/src/util/credentials.c index b8d6faf..46ce076 100644 --- a/src/util/credentials.c +++ b/src/util/credentials.c @@ -92,6 +92,7 @@ int auth_string_to_cred(const char* str, enum auth_credentials* out) return 0; case 4: + if (!strcasecmp(str, "none")) { *out = auth_cred_none; return 1; } if (!strcasecmp(str, "user")) { *out = auth_cred_user; return 1; } if (!strcasecmp(str, "link")) { *out = auth_cred_link; return 1; } return 0;