summaryrefslogtreecommitdiffstats
path: root/src/tests
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2012-03-28 12:02:45 -0400
committerStephen Gallagher <sgallagh@redhat.com>2012-03-28 15:07:05 -0400
commit4ed94554593e8a20fa361ea8d7a7f223dc6ee4e8 (patch)
tree10bebb463468f92c3af3e484537a2edf2ec5de87 /src/tests
parente980f8b95f2fb89e872babffdd94b3ccb2d42ccf (diff)
downloadsssd-4ed94554593e8a20fa361ea8d7a7f223dc6ee4e8.tar.gz
sssd-4ed94554593e8a20fa361ea8d7a7f223dc6ee4e8.tar.xz
sssd-4ed94554593e8a20fa361ea8d7a7f223dc6ee4e8.zip
Add better tests for sdap_attr compability
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/common.c26
-rw-r--r--src/tests/common.h5
-rw-r--r--src/tests/ipa_ldap_opt-tests.c38
3 files changed, 69 insertions, 0 deletions
diff --git a/src/tests/common.c b/src/tests/common.c
index 118684ddb..3e4753e08 100644
--- a/src/tests/common.c
+++ b/src/tests/common.c
@@ -67,3 +67,29 @@ compare_dp_options(struct dp_option *map1, size_t size1,
return EOK;
}
+
+/* Check that the option names of the two maps are the same
+ * and appear in the same order.
+ */
+errno_t
+compare_sdap_attr_maps(struct sdap_attr_map *map1, size_t size1,
+ struct sdap_attr_map *map2)
+{
+ size_t i;
+
+ for (i = 0; i < size1; i++) {
+ /* Check for a valid option */
+ if (map1[i].opt_name == NULL) return EINVAL;
+
+ /* Check whether we've gone past the end of map2 */
+ if (map2[i].opt_name == NULL) return ERANGE;
+
+ /* Ensure that the option names are the same */
+ if(strcmp(map1[i].opt_name, map2[i].opt_name) != 0) return EINVAL;
+ }
+
+ /* Leftover options in map2 */
+ if (map2[i].opt_name != NULL) return ERANGE;
+
+ return EOK;
+}
diff --git a/src/tests/common.h b/src/tests/common.h
index d0c9abbe1..f13181b75 100644
--- a/src/tests/common.h
+++ b/src/tests/common.h
@@ -28,6 +28,7 @@
#include <talloc.h>
#include "util/util.h"
#include "providers/data_provider.h"
+#include "providers/ldap/sdap.h"
extern TALLOC_CTX *global_talloc_context;
@@ -50,4 +51,8 @@ errno_t
compare_dp_options(struct dp_option *map1, size_t size1,
struct dp_option *map2);
+errno_t
+compare_sdap_attr_maps(struct sdap_attr_map *map1, size_t size1,
+ struct sdap_attr_map *map2);
+
#endif /* !__TESTS_COMMON_H__ */
diff --git a/src/tests/ipa_ldap_opt-tests.c b/src/tests/ipa_ldap_opt-tests.c
index c66a4738f..3f94d6815 100644
--- a/src/tests/ipa_ldap_opt-tests.c
+++ b/src/tests/ipa_ldap_opt-tests.c
@@ -100,6 +100,43 @@ START_TEST(test_compare_opts)
}
END_TEST
+START_TEST(test_compare_sdap_attrs)
+{
+ errno_t ret;
+
+ /* General Attributes */
+ ret = compare_sdap_attr_maps(generic_attr_map, SDAP_AT_GENERAL,
+ ipa_attr_map);
+ fail_unless(ret == EOK, "[%s]", strerror(ret));
+
+ /* User Attributes */
+ ret = compare_sdap_attr_maps(rfc2307_user_map, SDAP_OPTS_USER,
+ ipa_user_map);
+ fail_unless(ret == EOK, "[%s]", strerror(ret));
+
+ /* Group Attributes */
+ ret = compare_sdap_attr_maps(rfc2307_group_map, SDAP_OPTS_GROUP,
+ ipa_group_map);
+ fail_unless(ret == EOK, "[%s]", strerror(ret));
+
+ /* Service Attributes */
+ ret = compare_sdap_attr_maps(service_map, SDAP_OPTS_SERVICES,
+ ipa_service_map);
+ fail_unless(ret == EOK, "[%s]", strerror(ret));
+
+ /* AutoFS Attributes */
+ ret = compare_sdap_attr_maps(rfc2307_autofs_mobject_map,
+ SDAP_OPTS_AUTOFS_MAP,
+ ipa_autofs_mobject_map);
+ fail_unless(ret == EOK, "[%s]", strerror(ret));
+
+ ret = compare_sdap_attr_maps(rfc2307_autofs_entry_map,
+ SDAP_OPTS_AUTOFS_ENTRY,
+ ipa_autofs_entry_map);
+ fail_unless(ret == EOK, "[%s]", strerror(ret));
+}
+END_TEST
+
Suite *ipa_ldap_opt_suite (void)
{
Suite *s = suite_create ("ipa_ldap_opt");
@@ -108,6 +145,7 @@ Suite *ipa_ldap_opt_suite (void)
tcase_add_test (tc_ipa_ldap_opt, test_check_num_opts);
tcase_add_test (tc_ipa_ldap_opt, test_compare_opts);
+ tcase_add_test (tc_ipa_ldap_opt, test_compare_sdap_attrs);
suite_add_tcase (s, tc_ipa_ldap_opt);
TCase *tc_ipa_utils = tcase_create ("ipa_utils");