Mercurial > dovecot > core-2.2
view src/auth/test-username-filter.c @ 22614:cf66220d281e
doveadm proxy: Don't crash if remote doesn't support log proxying
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sat, 14 Oct 2017 12:54:18 +0300 |
parents | 220da21b7f80 |
children | cb108f786fb4 |
line wrap: on
line source
/* Copyright (c) 2017 Dovecot authors, see the included COPYING file */ #include "lib.h" #include "test-common.h" #include "auth-common.h" #include "auth-request.h" struct auth_penalty *auth_penalty; time_t process_start_time; bool worker, worker_restart_request; void auth_module_load(const char *names ATTR_UNUSED) { } void auth_refresh_proctitle(void) { } static void test_username_filter(void) { const struct { const char *filter; const char *input; bool accepted; } cases[] = { { "", "", TRUE }, { "*", "", TRUE }, { "", "testuser1", TRUE }, { "*", "testuser1", TRUE }, { "!*", "testuser1", FALSE }, { "!*", "", FALSE }, { "*@*", "", FALSE }, { "*@*", "@", TRUE }, { "!*@*", "@", FALSE }, { "!*@*", "", TRUE }, { "*@*", "testuser1", FALSE }, { "!*@*", "testuser1", TRUE }, { "*@*", "testuser1@testdomain", TRUE }, { "!*@*", "testuser1@testdomain", FALSE }, { "*@testdomain *@testdomain2", "testuser1@testdomain", TRUE }, { "*@testdomain *@testdomain2", "testuser1@testdomain2", TRUE }, { "*@testdomain *@testdomain2", "testuser1@testdomain3", FALSE }, { "!testuser@testdomain *@testdomain", "testuser@testdomain", FALSE }, { "!testuser@testdomain *@testdomain", "testuser2@testdomain", TRUE }, { "*@testdomain !testuser@testdomain !testuser2@testdomain", "testuser@testdomain", FALSE }, { "*@testdomain !testuser@testdomain !testuser2@testdomain", "testuser3@testdomain", TRUE }, { "!testuser@testdomain !testuser2@testdomain", "testuser", TRUE }, { "!testuser@testdomain !testuser2@testdomain", "testuser@testdomain", FALSE }, { "!testuser@testdomain *@testdomain !testuser2@testdomain", "testuser3@testdomain", TRUE }, { "!testuser@testdomain *@testdomain !testuser2@testdomain", "testuser@testdomain", FALSE }, }; test_begin("test username_filter"); for(size_t i = 0; i < N_ELEMENTS(cases); i++) { const char *const *filter = t_strsplit_spaces(cases[i].filter, " ,"); test_assert_idx(auth_request_username_accepted(filter, cases[i].input) == cases[i].accepted, i); } test_end(); } int main(void) { static void (*test_functions[])(void) = { test_username_filter, NULL }; return test_run(test_functions); }