From e5543d89a31c2ae543465a95e5617425e4dc59e5 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Wed, 28 Oct 2015 11:57:04 +0100 Subject: [PATCH] tests: more libpamtest tests --- tests/test_pam_wrapper.c | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/tests/test_pam_wrapper.c b/tests/test_pam_wrapper.c index d62957e..62672be 100644 --- a/tests/test_pam_wrapper.c +++ b/tests/test_pam_wrapper.c @@ -733,6 +733,61 @@ static void test_get_set(void **state) test_getenv(tests[1].case_out.envlist, "PAM_AUTHTOK_TYPE"); } +static void test_libpamtest_keepopen(void **state) +{ + int rv; + enum pamtest_err perr; + struct pamtest_conv_data conv_data; + const char *trinity_authtoks[] = { + "secret", + NULL, + }; + struct pamtest_case tests[] = { + { PAMTEST_AUTHENTICATE, PAM_SUCCESS, PAMTEST_CASE_INIT }, + { PAMTEST_KEEPHANDLE, PAM_SUCCESS, PAMTEST_CASE_INIT }, + { PAMTEST_CASE_SENTINEL }, + }; + + (void) state; /* unused */ + + ZERO_STRUCT(conv_data); + conv_data.in_echo_off = trinity_authtoks; + + perr = pamtest("matrix", "trinity", &conv_data, tests); + assert_int_equal(perr, PAMTEST_ERR_OK); + + assert_non_null(tests[1].case_out.ph); + + rv = pam_end(tests[1].case_out.ph, PAM_SUCCESS); + assert_int_equal(rv, PAM_SUCCESS); +} + +static void test_libpamtest_get_failed_test(void **state) +{ + enum pamtest_err perr; + struct pamtest_conv_data conv_data; + const char *trinity_authtoks[] = { + "secret", + NULL, + }; + struct pamtest_case tests[] = { + { PAMTEST_AUTHENTICATE, PAM_AUTH_ERR, PAMTEST_CASE_INIT }, + { PAMTEST_CASE_SENTINEL }, + }; + const struct pamtest_case *failed_tc; + + (void) state; /* unused */ + + ZERO_STRUCT(conv_data); + conv_data.in_echo_off = trinity_authtoks; + + perr = pamtest("matrix", "trinity", &conv_data, tests); + assert_int_not_equal(perr, PAMTEST_ERR_OK); + + failed_tc = pamtest_failed_case(tests); + assert_true(failed_tc == &tests[0]); +} + int main(void) { int rc; @@ -786,6 +841,12 @@ int main(void) { cmocka_unit_test_setup_teardown(test_pam_vsyslog, setup_noconv, teardown), + cmocka_unit_test_setup_teardown(test_libpamtest_keepopen, + setup_passdb, + teardown_passdb), + cmocka_unit_test_setup_teardown(test_libpamtest_get_failed_test, + setup_passdb, + teardown_passdb), cmocka_unit_test(test_get_set), }; -- 2.34.1