From ab4b25964a43a1ef550f10580ad395e178fe647e Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 6 Dec 2023 13:16:26 +0100 Subject: [PATCH] auth:creds:tests: Add test for password callback BUG: https://bugzilla.samba.org/show_bug.cgi?id=15532 Signed-off-by: Andreas Schneider Reviewed-by: Andrew Bartlett --- auth/credentials/tests/test_creds.c | 32 +++++++++++++++++++++++++++++ selftest/knownfail.d/creds | 1 + 2 files changed, 33 insertions(+) create mode 100644 selftest/knownfail.d/creds diff --git a/auth/credentials/tests/test_creds.c b/auth/credentials/tests/test_creds.c index a2f9642bfe0..414dd46a6b0 100644 --- a/auth/credentials/tests/test_creds.c +++ b/auth/credentials/tests/test_creds.c @@ -285,6 +285,37 @@ static void torture_creds_gensec_feature(void **state) assert_int_equal(creds->gensec_features, GENSEC_FEATURE_SIGN); } +static const char *torture_get_password(struct cli_credentials *creds) +{ + return talloc_strdup(creds, "SECRET"); +} + +static void torture_creds_password_callback(void **state) +{ + TALLOC_CTX *mem_ctx = *state; + struct cli_credentials *creds = NULL; + const char *password = NULL; + enum credentials_obtained pwd_obtained = CRED_UNINITIALISED; + bool ok; + + creds = cli_credentials_init(mem_ctx); + assert_non_null(creds); + + ok = cli_credentials_set_domain(creds, "WURST", CRED_SPECIFIED); + assert_true(ok); + ok = cli_credentials_set_username(creds, "brot", CRED_SPECIFIED); + assert_true(ok); + + ok = cli_credentials_set_password_callback(creds, torture_get_password); + assert_true(ok); + assert_int_equal(creds->password_obtained, CRED_CALLBACK); + + password = cli_credentials_get_password_and_obtained(creds, + &pwd_obtained); + assert_int_equal(pwd_obtained, CRED_CALLBACK_RESULT); + assert_string_equal(password, "SECRET"); +} + int main(int argc, char *argv[]) { int rc; @@ -296,6 +327,7 @@ int main(int argc, char *argv[]) cmocka_unit_test(torture_creds_parse_string), cmocka_unit_test(torture_creds_krb5_state), cmocka_unit_test(torture_creds_gensec_feature), + cmocka_unit_test(torture_creds_password_callback) }; if (argc == 2) { diff --git a/selftest/knownfail.d/creds b/selftest/knownfail.d/creds new file mode 100644 index 00000000000..09491f22c65 --- /dev/null +++ b/selftest/knownfail.d/creds @@ -0,0 +1 @@ +^samba.unittests.credentials.torture_creds_password_callback.none -- 2.47.2