More libpamtest tests
authorJakub Hrozek <jakub.hrozek@posteo.se>
Wed, 28 Oct 2015 13:44:05 +0000 (14:44 +0100)
committerAndreas Schneider <asn@samba.org>
Thu, 10 Dec 2015 12:31:19 +0000 (13:31 +0100)
tests/test_pam_wrapper.c

index 2d5c01735cb4d0550a3a9c960793ff7823016e2d..2c2c4ee96441087f1ad4cf8d485637266bd455cb 100644 (file)
@@ -714,6 +714,7 @@ static void test_get_set(void **state)
 {
        const char *svc;
        enum pamtest_err perr;
+       const struct pamtest_case *failed_tc;
        struct pamtest_case tests[] = {
                { PAMTEST_OPEN_SESSION, PAM_SUCCESS, PAMTEST_CASE_INIT },
                { PAMTEST_GETENVLIST, PAM_SUCCESS, PAMTEST_CASE_INIT },
@@ -741,6 +742,9 @@ static void test_get_set(void **state)
        assert_non_null(svc);
        assert_string_equal(svc, "test_pam_service");
 
+       failed_tc = pamtest_failed_case(tests);
+       assert_null(failed_tc);
+
        //test_getenv(tests[1].case_out.envlist, "PAM_SERVICE");
        test_getenv(tests[1].case_out.envlist, "PAM_USER");
        test_getenv(tests[1].case_out.envlist, "PAM_USER_PROMPT");
@@ -810,6 +814,31 @@ static void test_libpamtest_get_failed_test(void **state)
        assert_true(failed_tc == &tests[0]);
 }
 
+static void test_libpamtest_neg(void **state)
+{
+       enum pamtest_err perr;
+       struct pamtest_conv_data conv_data;
+       const char *trinity_authtoks[] = {
+               "secret",
+               NULL,
+       };
+       struct pamtest_case tests[] = {
+               { PAMTEST_START, 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_INTERNAL);
+
+       perr = pamtest("matrix", "trinity", &conv_data, NULL);
+       assert_int_equal(perr, PAMTEST_ERR_INTERNAL);
+}
+
 int main(void) {
        int rc;
 
@@ -872,6 +901,9 @@ int main(void) {
                cmocka_unit_test_setup_teardown(test_libpamtest_get_failed_test,
                                                setup_passdb,
                                                teardown_passdb),
+               cmocka_unit_test_setup_teardown(test_libpamtest_neg,
+                                               setup_passdb,
+                                               teardown_passdb),
                cmocka_unit_test(test_get_set),
        };