]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: test-auth-master - Add support for retrying userdb lookups.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Wed, 6 Mar 2019 21:15:50 +0000 (22:15 +0100)
committerStephan Bosch <stephan.bosch@dovecot.fi>
Fri, 8 Mar 2019 11:59:27 +0000 (12:59 +0100)
src/master/test-auth-master.c

index 5e2a65e9640658ea142069a39026f3dee4416730..5a76d4e3e05a234ff7ed445687001358596bb389 100644 (file)
@@ -77,7 +77,8 @@ static int
 test_client_passdb_lookup_simple(const char *user, bool retry,
                                 const char **error_r);
 static int
-test_client_userdb_lookup_simple(const char *user, const char **error_r);
+test_client_userdb_lookup_simple(const char *user, bool retry,
+                                const char **error_r);
 static int test_client_user_list_simple(void);
 
 /* test*/
@@ -576,7 +577,7 @@ test_client_userdb_fail(void)
        const char *error;
        int ret;
 
-       ret = test_client_userdb_lookup_simple("harrie", &error);
+       ret = test_client_userdb_lookup_simple("harrie", FALSE, &error);
        test_out("run (ret == -2)", ret == -2);
        test_assert(error != NULL &&
                    strcmp(error, "It is no use!") == 0);
@@ -590,7 +591,7 @@ test_client_userdb_notfound(void)
        const char *error;
        int ret;
 
-       ret = test_client_userdb_lookup_simple("henk", &error);
+       ret = test_client_userdb_lookup_simple("henk", FALSE, &error);
        test_out("run (ret == 0)", ret == 0);
        test_assert(error == NULL);
 
@@ -603,7 +604,7 @@ test_client_userdb_timeout(void)
        const char *error;
        int ret;
 
-       ret = test_client_userdb_lookup_simple("holger", &error);
+       ret = test_client_userdb_lookup_simple("holger", FALSE, &error);
        test_out("run (ret == -1)", ret == -1);
        test_assert(error == NULL);
 
@@ -925,7 +926,7 @@ test_client_userdb_lookup(void)
        const char *error;
        int ret;
 
-       ret = test_client_userdb_lookup_simple("harrie", &error);
+       ret = test_client_userdb_lookup_simple("harrie", FALSE, &error);
        test_out("run (ret > 0)", ret > 0);
 
        return FALSE;
@@ -1113,12 +1114,14 @@ test_client_passdb_lookup_simple(const char *username, bool retry,
 }
 
 static int
-test_client_userdb_lookup_simple(const char *username, const char **error_r)
+test_client_userdb_lookup_simple(const char *username, bool retry,
+                                const char **error_r)
 {
        struct auth_master_connection *auth_conn;
        enum auth_master_flags flags = 0;
        struct auth_user_info info;
        const char *const *fields;
+       const char *username_out;
        pool_t pool;
        int ret;
 
@@ -1134,7 +1137,11 @@ test_client_userdb_lookup_simple(const char *username, const char **error_r)
        auth_conn = auth_master_init(TEST_SOCKET, flags);
        auth_master_set_timeout(auth_conn, 1000);
        ret = auth_master_user_lookup(auth_conn, username, &info,
-                                     pool, &username, &fields);
+                                     pool, &username_out, &fields);
+       if (ret < 0 && retry) {
+               ret = auth_master_user_lookup(auth_conn, username, &info,
+                                             pool, &username_out, &fields);
+       }
        auth_master_deinit(&auth_conn);
 
        *error_r = (ret < 0 ? t_strdup(fields[0]) : NULL);