Branch data Line data Source code
1 : : /*
2 : : SSSD
3 : :
4 : : Tests if IPA and LDAP backend options are in sync
5 : :
6 : : Authors:
7 : : Jakub Hrozek <jhrozek@redhat.com>
8 : :
9 : : Copyright (C) 2010 Red Hat
10 : :
11 : : This program is free software; you can redistribute it and/or modify
12 : : it under the terms of the GNU General Public License as published by
13 : : the Free Software Foundation; either version 3 of the License, or
14 : : (at your option) any later version.
15 : :
16 : : This program is distributed in the hope that it will be useful,
17 : : but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : GNU General Public License for more details.
20 : :
21 : : You should have received a copy of the GNU General Public License
22 : : along with this program. If not, see <http://www.gnu.org/licenses/>.
23 : : */
24 : :
25 : : #include <check.h>
26 : : #include <stdlib.h>
27 : : #include <talloc.h>
28 : :
29 : : #include "providers/ipa/ipa_common.h"
30 : : #include "providers/ipa/ipa_opts.h"
31 : : #include "providers/ldap/sdap.h"
32 : : #include "providers/ldap/ldap_opts.h"
33 : : #include "providers/krb5/krb5_opts.h"
34 : : #include "providers/krb5/krb5_common.h"
35 : : #include "tests/common.h"
36 : :
37 : : struct test_domain {
38 : : const char *domain;
39 : : const char *basedn;
40 : : };
41 : :
42 : : struct test_domain test_domains[] = {
43 : : { "abc", "dc=abc"},
44 : : { "a.b.c", "dc=a,dc=b,dc=c"},
45 : : { "A.B.C", "dc=a,dc=b,dc=c"},
46 : : { NULL, NULL}
47 : : };
48 : :
49 : 1 : START_TEST(test_domain_to_basedn)
50 : : {
51 : : int ret;
52 : : int i;
53 : : TALLOC_CTX *tmp_ctx;
54 : : char *basedn;
55 : :
56 : 1 : tmp_ctx = talloc_new(NULL);
57 : 1 : fail_unless(tmp_ctx != NULL, "talloc_new failed");
58 : :
59 : 1 : ret = domain_to_basedn(tmp_ctx, NULL, &basedn);
60 : 1 : fail_unless(ret == EINVAL,
61 : : "domain_to_basedn does not fail with EINVAL if domain is NULL");
62 : :
63 : 1 : ret = domain_to_basedn(tmp_ctx, "abc", NULL);
64 : 1 : fail_unless(ret == EINVAL,
65 : : "domain_to_basedn does not fail with EINVAL if basedn is NULL");
66 : :
67 [ + + ]: 4 : for(i=0; test_domains[i].domain != NULL; i++) {
68 : 3 : ret = domain_to_basedn(tmp_ctx, test_domains[i].domain, &basedn);
69 : 3 : fail_unless(ret == EOK, "domain_to_basedn failed");
70 : 3 : fail_unless(strcmp(basedn, test_domains[i].basedn) == 0,
71 : : "domain_to_basedn returned wrong basedn, "
72 : : "get [%s], expected [%s]", basedn, test_domains[i].basedn);
73 : 3 : talloc_free(basedn);
74 : : }
75 : :
76 : 1 : talloc_free(tmp_ctx);
77 : : }
78 : 1 : END_TEST
79 : :
80 : 1 : START_TEST(test_compare_opts)
81 : : {
82 : : errno_t ret;
83 : :
84 : 1 : ret = compare_dp_options(default_basic_opts, SDAP_OPTS_BASIC,
85 : : ipa_def_ldap_opts);
86 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
87 : :
88 : 1 : ret = compare_dp_options(default_krb5_opts, KRB5_OPTS,
89 : : ipa_def_krb5_opts);
90 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
91 : : }
92 : 1 : END_TEST
93 : :
94 : 1 : START_TEST(test_compare_sdap_attrs)
95 : : {
96 : : errno_t ret;
97 : :
98 : : /* General Attributes */
99 : 1 : ret = compare_sdap_attr_maps(generic_attr_map, SDAP_AT_GENERAL,
100 : : ipa_attr_map);
101 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
102 : :
103 : : /* User Attributes */
104 : 1 : ret = compare_sdap_attr_maps(rfc2307_user_map, SDAP_OPTS_USER,
105 : : ipa_user_map);
106 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
107 : :
108 : : /* Group Attributes */
109 : 1 : ret = compare_sdap_attr_maps(rfc2307_group_map, SDAP_OPTS_GROUP,
110 : : ipa_group_map);
111 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
112 : :
113 : : /* Service Attributes */
114 : 1 : ret = compare_sdap_attr_maps(service_map, SDAP_OPTS_SERVICES,
115 : : ipa_service_map);
116 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
117 : :
118 : : /* AutoFS Attributes */
119 : 1 : ret = compare_sdap_attr_maps(rfc2307_autofs_mobject_map,
120 : : SDAP_OPTS_AUTOFS_MAP,
121 : : ipa_autofs_mobject_map);
122 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
123 : :
124 : 1 : ret = compare_sdap_attr_maps(rfc2307_autofs_entry_map,
125 : : SDAP_OPTS_AUTOFS_ENTRY,
126 : : ipa_autofs_entry_map);
127 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
128 : : }
129 : 1 : END_TEST
130 : :
131 : 1 : START_TEST(test_compare_2307_with_2307bis)
132 : : {
133 : : errno_t ret;
134 : :
135 : : /* User Attributes */
136 : 1 : ret = compare_sdap_attr_maps(rfc2307_user_map, SDAP_OPTS_USER,
137 : : rfc2307bis_user_map);
138 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
139 : :
140 : : /* Group Attributes */
141 : 1 : ret = compare_sdap_attr_maps(rfc2307_group_map, SDAP_OPTS_GROUP,
142 : : rfc2307bis_group_map);
143 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
144 : :
145 : : /* AutoFS Attributes */
146 : 1 : ret = compare_sdap_attr_maps(rfc2307_autofs_mobject_map,
147 : : SDAP_OPTS_AUTOFS_MAP,
148 : : rfc2307bis_autofs_mobject_map);
149 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
150 : :
151 : 1 : ret = compare_sdap_attr_maps(rfc2307_autofs_entry_map,
152 : : SDAP_OPTS_AUTOFS_ENTRY,
153 : : rfc2307bis_autofs_entry_map);
154 : 1 : fail_unless(ret == EOK, "[%s]", strerror(ret));
155 : : }
156 : 1 : END_TEST
157 : :
158 : 5 : Suite *ipa_ldap_opt_suite (void)
159 : : {
160 : 5 : Suite *s = suite_create ("ipa_ldap_opt");
161 : :
162 : 5 : TCase *tc_ipa_ldap_opt = tcase_create ("ipa_ldap_opt");
163 : :
164 : 5 : tcase_add_test (tc_ipa_ldap_opt, test_compare_opts);
165 : 5 : tcase_add_test (tc_ipa_ldap_opt, test_compare_sdap_attrs);
166 : 5 : tcase_add_test (tc_ipa_ldap_opt, test_compare_2307_with_2307bis);
167 : 5 : suite_add_tcase (s, tc_ipa_ldap_opt);
168 : :
169 : 5 : TCase *tc_ipa_utils = tcase_create ("ipa_utils");
170 : 5 : tcase_add_test (tc_ipa_utils, test_domain_to_basedn);
171 : 5 : suite_add_tcase (s, tc_ipa_utils);
172 : :
173 : 5 : return s;
174 : : }
175 : :
176 : 5 : int main(void)
177 : : {
178 : : int number_failed;
179 : :
180 : 5 : tests_set_cwd();
181 : :
182 : 5 : Suite *s = ipa_ldap_opt_suite ();
183 : 5 : SRunner *sr = srunner_create (s);
184 : : /* If CK_VERBOSITY is set, use that, otherwise it defaults to CK_NORMAL */
185 : 5 : srunner_run_all(sr, CK_ENV);
186 : 1 : number_failed = srunner_ntests_failed (sr);
187 : 1 : srunner_free (sr);
188 : 1 : return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
189 : : }
|