>From 5bd6a51b595872f0a2a7fc9b28a49c1bff5b32ee Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 21 Jul 2014 20:31:15 +0200 Subject: [PATCH] TESTS: Add unit tests for the GPO interface --- Makefile.am | 3 +- src/tests/sysdb-tests.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index f60926cc90c729b3c57c20c135c88de66836ee59..984d139d13e7e45ebfbe2bccb5d9d6cc6f8c3835 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1178,7 +1178,8 @@ dlopen_tests_LDADD = \ EXTRA_sysdb_tests_DEPENDENCIES = \ $(ldblib_LTLIBRARIES) sysdb_tests_SOURCES = \ - src/tests/sysdb-tests.c + src/tests/sysdb-tests.c \ + src/db/sysdb_gpo.c sysdb_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) diff --git a/src/tests/sysdb-tests.c b/src/tests/sysdb-tests.c index d24bd4f7d4f0e8f85afa7c98da8edc0635b2e328..032ec84c0cc0d2d75640204875b154222ed3f16d 100644 --- a/src/tests/sysdb-tests.c +++ b/src/tests/sysdb-tests.c @@ -5535,6 +5535,97 @@ START_TEST(test_upn_dup) } END_TEST +START_TEST(test_gpo_store_retrieve) +{ + struct sysdb_test_ctx *test_ctx; + errno_t ret; + struct ldb_result *result = NULL; + const char *guid; + int version; + static const char *test_guid = "3610EDA5-77EF-11D2-8DC5-00C04FA31A66"; + + ret = setup_sysdb_tests(&test_ctx); + fail_if(ret != EOK, "Could not set up the test"); + + ret = sysdb_gpo_get_gpo(test_ctx, test_ctx->domain, + test_guid, + &result); + fail_if(ret != ENOENT, "GPO present in cache before store op"); + + ret = sysdb_gpo_store_gpo(test_ctx->domain, + test_guid, 1); + fail_if(ret != EOK, "Could not store a test GPO"); + + ret = sysdb_gpo_get_gpo(test_ctx, test_ctx->domain, + test_guid, &result); + fail_if(ret != EOK, "GPO not in cache after store op"); + fail_if(result == NULL); + fail_if(result->count != 1); + + guid = ldb_msg_find_attr_as_string(result->msgs[0], + SYSDB_GPO_GUID_ATTR, NULL); + ck_assert_str_eq(guid, test_guid); + + version = ldb_msg_find_attr_as_uint(result->msgs[0], + SYSDB_GPO_VERSION_ATTR, 0); + ck_assert_int_eq(version, 1); +} +END_TEST + +START_TEST(test_gpo_replace) +{ + struct sysdb_test_ctx *test_ctx; + errno_t ret; + struct ldb_result *result = NULL; + const char *guid; + int version; + static const char *test_guid = "3610EDA5-77EF-11D2-8DC5-00C04FA31A66"; + + ret = setup_sysdb_tests(&test_ctx); + fail_if(ret != EOK, "Could not setup the test"); + + ret = sysdb_gpo_get_gpo(test_ctx, test_ctx->domain, + test_guid, &result); + fail_if(ret != EOK, "GPO not in cache after store op"); + fail_if(result == NULL); + fail_if(result->count != 1); + + guid = ldb_msg_find_attr_as_string(result->msgs[0], + SYSDB_GPO_GUID_ATTR, NULL); + ck_assert_str_eq(guid, test_guid); + + version = ldb_msg_find_attr_as_uint(result->msgs[0], + SYSDB_GPO_VERSION_ATTR, 0); + ck_assert_int_eq(version, 1); + + /* Modify the version */ + ret = sysdb_gpo_store_gpo(test_ctx->domain, + test_guid, 2); + fail_if(ret != EOK, "Could not store a test GPO"); + + ret = sysdb_gpo_get_gpo(test_ctx, test_ctx->domain, + test_guid, &result); + fail_if(ret != EOK, "GPO not in cache after modify op"); + fail_if(result == NULL); + fail_if(result->count != 1); + + ret = sysdb_gpo_get_gpo(test_ctx, test_ctx->domain, + test_guid, &result); + fail_if(ret != EOK, "GPO not in cache after store op"); + fail_if(result == NULL); + fail_if(result->count != 1); + + guid = ldb_msg_find_attr_as_string(result->msgs[0], + SYSDB_GPO_GUID_ATTR, NULL); + ck_assert_str_eq(guid, test_guid); + + version = ldb_msg_find_attr_as_uint(result->msgs[0], + SYSDB_GPO_VERSION_ATTR, 0); + ck_assert_int_eq(version, 2); + +} +END_TEST + START_TEST(test_confdb_list_all_domain_names_multi_dom) { int ret; @@ -5944,6 +6035,11 @@ Suite *create_sysdb_suite(void) suite_add_tcase(s, tc_upn); + TCase *tc_gpo = tcase_create("SYSDB GPO tests"); + tcase_add_test(tc_gpo, test_gpo_store_retrieve); + tcase_add_test(tc_gpo, test_gpo_replace); + suite_add_tcase(s, tc_gpo); + /* ConfDB tests -- modify confdb, must always be last!! */ TCase *tc_confdb = tcase_create("confDB tests"); -- 1.9.3