summaryrefslogtreecommitdiffstats
path: root/src/tests/cmocka/test_copy_keytab.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/cmocka/test_copy_keytab.c')
-rw-r--r--src/tests/cmocka/test_copy_keytab.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/tests/cmocka/test_copy_keytab.c b/src/tests/cmocka/test_copy_keytab.c
index 9d2b80156..f46e32195 100644
--- a/src/tests/cmocka/test_copy_keytab.c
+++ b/src/tests/cmocka/test_copy_keytab.c
@@ -29,6 +29,7 @@
#define KEYTAB_TEST_PRINC "test/keytab@TEST.KEYTAB"
#define KEYTAB_PATH TEST_DIR "/keytab_test.keytab"
+#define EMPTY_KEYTAB_PATH TEST_DIR "/empty_keytab_test.keytab"
struct keytab_test_ctx {
krb5_context kctx;
@@ -170,6 +171,36 @@ void test_copy_keytab(void **state)
assert_int_equal(kerr, 0);
}
+void test_sss_krb5_kt_have_content(void **state)
+{
+ krb5_error_code kerr;
+ krb5_keytab keytab;
+ struct keytab_test_ctx *test_ctx = talloc_get_type(*state,
+ struct keytab_test_ctx);
+ assert_non_null(test_ctx);
+
+ kerr = krb5_kt_resolve(test_ctx->kctx, test_ctx->keytab_file_name, &keytab);
+ assert_int_equal(kerr, 0);
+
+ kerr = sss_krb5_kt_have_content(test_ctx->kctx, keytab);
+ assert_int_equal(kerr, 0);
+
+ kerr = krb5_kt_close(test_ctx->kctx, keytab);
+ assert_int_equal(kerr, 0);
+
+ kerr = krb5_kt_resolve(test_ctx->kctx, "FILE:" EMPTY_KEYTAB_PATH, &keytab);
+ assert_int_equal(kerr, 0);
+
+ kerr = sss_krb5_kt_have_content(test_ctx->kctx, keytab);
+ assert_int_equal(kerr, KRB5_KT_NOTFOUND);
+
+ kerr = krb5_kt_close(test_ctx->kctx, keytab);
+ assert_int_equal(kerr, 0);
+
+ /* no need to remove EMPTY_KEYTAB_PATH because krb5_kt_close() does not
+ * create empty keytab files */
+}
+
int main(int argc, const char *argv[])
{
poptContext pc;
@@ -184,6 +215,8 @@ int main(int argc, const char *argv[])
const UnitTest tests[] = {
unit_test_setup_teardown(test_copy_keytab,
setup_keytab, teardown_keytab),
+ unit_test_setup_teardown(test_sss_krb5_kt_have_content,
+ setup_keytab, teardown_keytab),
};
/* Set debug level to invalid value so we can deside if -d 0 was used. */