[SSSD] [PATCH] TESTS: Check if option maps have the right number of members

Lukas Slebodnik lslebodn at redhat.com
Mon Aug 11 15:48:02 UTC 2014


On (11/08/14 14:55), Jakub Hrozek wrote:
>Hi,
>
>in order to prevent mistakes like the sudo options misalignment, I wrote
>a unit test that fails of the last entry in the list is not a
>sentinel.
Test failed without patch "LDAP SUDO: sudo provider doesn't fetch 'EntryUSN'"

>From 250d5e526d16a6eac31da1e5f7db57bd52b2318a Mon Sep 17 00:00:00 2001
>From: Jakub Hrozek <jhrozek at redhat.com>
>Date: Mon, 11 Aug 2014 14:21:28 +0200
>Subject: [PATCH] TESTS: Check if option maps have the right number of members
>
>---
> src/tests/ipa_ldap_opt-tests.c | 84 ++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 84 insertions(+)
>
>diff --git a/src/tests/ipa_ldap_opt-tests.c b/src/tests/ipa_ldap_opt-tests.c
>index fffdc7e739fe5d7f9a0a52ffb2574958472eadef..3504092d444d89ab59e074237a3f8589aeebbcda 100644
>--- a/src/tests/ipa_ldap_opt-tests.c
>+++ b/src/tests/ipa_ldap_opt-tests.c
>@@ -169,6 +169,88 @@ START_TEST(test_compare_2307_with_2307bis)
> }
> END_TEST
> 
>+static void fail_unless_dp_opt_is_terminator(struct dp_option *o)
>+{
>+    fail_unless(o->opt_name == NULL);
>+    fail_unless(o->type == 0);
>+    fail_unless(o->def_val.string == NULL);
>+    fail_unless(o->val.string == NULL);
>+}
>+
>+static void fail_unless_sdap_opt_is_terminator(struct sdap_attr_map *m)
>+{
>+    fail_unless(m->name == NULL);
>+    fail_unless(m->def_name == NULL);
>+    fail_unless(m->sys_name == NULL);
>+    fail_unless(m->opt_name == NULL);
>+}
>+
>+START_TEST(test_dp_opt_sentinel)
>+{
>+    fail_unless_dp_opt_is_terminator(&default_basic_opts[SDAP_OPTS_BASIC]);
>+
>+    fail_unless_dp_opt_is_terminator(&default_krb5_opts[KRB5_OPTS]);
>+
>+    fail_unless_dp_opt_is_terminator(&ad_basic_opts[AD_OPTS_BASIC]);
>+    fail_unless_dp_opt_is_terminator(&ad_def_ldap_opts[SDAP_OPTS_BASIC]);
>+    fail_unless_dp_opt_is_terminator(&ad_def_krb5_opts[KRB5_OPTS]);
>+
>+    fail_unless_dp_opt_is_terminator(&ipa_basic_opts[IPA_OPTS_BASIC]);
>+    fail_unless_dp_opt_is_terminator(&ipa_def_ldap_opts[SDAP_OPTS_BASIC]);
>+    fail_unless_dp_opt_is_terminator(&ipa_def_krb5_opts[KRB5_OPTS]);
>+
>+    fail_unless_dp_opt_is_terminator(&ad_dyndns_opts[DP_OPT_DYNDNS]);
>+    fail_unless_dp_opt_is_terminator(&ipa_dyndns_opts[DP_OPT_DYNDNS]);

All "struct dp_option" arrays are tested.
Compared with output of command: git grep "^struct dp_option.*\["

>+
>+START_TEST(test_sdap_opt_sentinel)
>+{
>+    fail_unless_sdap_opt_is_terminator(&generic_attr_map[SDAP_AT_GENERAL]);
>+    fail_unless_sdap_opt_is_terminator(&gen_ipa_attr_map[SDAP_AT_GENERAL]);
>+    fail_unless_sdap_opt_is_terminator(&gen_ad_attr_map[SDAP_AT_GENERAL]);
>+    fail_unless_sdap_opt_is_terminator(&ad_2008r2_attr_map[SDAP_AT_GENERAL]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_attr_map[SDAP_AT_GENERAL]);
>+
>+    fail_unless_sdap_opt_is_terminator(&rfc2307_user_map[SDAP_OPTS_USER]);
>+    fail_unless_sdap_opt_is_terminator(&rfc2307bis_user_map[SDAP_OPTS_USER]);
>+    fail_unless_sdap_opt_is_terminator(&gen_ad2008r2_user_map[SDAP_OPTS_USER]);
>+    fail_unless_sdap_opt_is_terminator(&ad_2008r2_user_map[SDAP_OPTS_USER]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_user_map[SDAP_OPTS_USER]);
>+
>+    fail_unless_sdap_opt_is_terminator(&rfc2307_group_map[SDAP_OPTS_GROUP]);
>+    fail_unless_sdap_opt_is_terminator(&rfc2307bis_group_map[SDAP_OPTS_GROUP]);
>+    fail_unless_sdap_opt_is_terminator(&gen_ad2008r2_group_map[SDAP_OPTS_GROUP]);
>+    fail_unless_sdap_opt_is_terminator(&ad_2008r2_group_map[SDAP_OPTS_GROUP]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_group_map[SDAP_OPTS_GROUP]);
>+
>+    fail_unless_sdap_opt_is_terminator(&native_sudorule_map[SDAP_OPTS_SUDO]);
>+
>+    fail_unless_sdap_opt_is_terminator(&netgroup_map[SDAP_OPTS_NETGROUP]);
>+    fail_unless_sdap_opt_is_terminator(&ad_netgroup_map[SDAP_OPTS_NETGROUP]);
>+
>+    fail_unless_sdap_opt_is_terminator(&ipa_netgroup_map[IPA_OPTS_NETGROUP]);
>+
>+    fail_unless_sdap_opt_is_terminator(&ipa_host_map[IPA_OPTS_HOST]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_hostgroup_map[IPA_OPTS_HOSTGROUP]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_selinux_user_map[IPA_OPTS_SELINUX_USERMAP]);
>+
>+    fail_unless_sdap_opt_is_terminator(&service_map[SDAP_OPTS_SERVICES]);
>+    fail_unless_sdap_opt_is_terminator(&ad_service_map[SDAP_OPTS_SERVICES]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_service_map[SDAP_OPTS_SERVICES]);
>+
>+    fail_unless_sdap_opt_is_terminator(&rfc2307_autofs_mobject_map[SDAP_OPTS_AUTOFS_MAP]);
>+    fail_unless_sdap_opt_is_terminator(&rfc2307bis_autofs_mobject_map[SDAP_OPTS_AUTOFS_MAP]);
>+    fail_unless_sdap_opt_is_terminator(&ad_autofs_mobject_map[SDAP_OPTS_AUTOFS_MAP]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_autofs_mobject_map[SDAP_OPTS_AUTOFS_MAP]);
>+
>+    fail_unless_sdap_opt_is_terminator(&rfc2307_autofs_entry_map[SDAP_OPTS_AUTOFS_ENTRY]);
>+    fail_unless_sdap_opt_is_terminator(&rfc2307bis_autofs_entry_map[SDAP_OPTS_AUTOFS_ENTRY]);
>+    fail_unless_sdap_opt_is_terminator(&ad_autofs_entry_map[SDAP_OPTS_AUTOFS_ENTRY]);
>+    fail_unless_sdap_opt_is_terminator(&ipa_autofs_entry_map[SDAP_OPTS_AUTOFS_ENTRY]);

All "struct sdap_attr_ma" arrays are tested.
Compared with output of command: git grep "struct sdap_attr_map.*\["

> START_TEST(test_copy_opts)
> {
>     errno_t ret;
>@@ -396,6 +478,8 @@ Suite *ipa_ldap_opt_suite (void)
>     tcase_add_test (tc_ipa_ldap_opt, test_compare_opts);
>     tcase_add_test (tc_ipa_ldap_opt, test_compare_sdap_attrs);
>     tcase_add_test (tc_ipa_ldap_opt, test_compare_2307_with_2307bis);
>+    tcase_add_test (tc_ipa_ldap_opt, test_dp_opt_sentinel);
>+    tcase_add_test (tc_ipa_ldap_opt, test_sdap_opt_sentinel);
>     suite_add_tcase (s, tc_ipa_ldap_opt);

ACK

LS



More information about the sssd-devel mailing list