Line data Source code
1 : /*
2 : Authors:
3 : Pavel Březina <pbrezina@redhat.com>
4 :
5 : Copyright (C) 2014 Red Hat
6 :
7 : This program is free software; you can redistribute it and/or modify
8 : it under the terms of the GNU General Public License as published by
9 : the Free Software Foundation; either version 3 of the License, or
10 : (at your option) any later version.
11 :
12 : This program is distributed in the hope that it will be useful,
13 : but WITHOUT ANY WARRANTY; without even the implied warranty of
14 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 : GNU General Public License for more details.
16 :
17 : You should have received a copy of the GNU General Public License
18 : along with this program. If not, see <http://www.gnu.org/licenses/>.
19 : */
20 :
21 : #include <check.h>
22 : #include <stdio.h>
23 : #include <talloc.h>
24 : #include <errno.h>
25 : #include <string.h>
26 : #include <sys/stat.h>
27 : #include "util/util.h"
28 : #include "util/sss_config.h"
29 : #include "tests/common.h"
30 : #include "tests/common_check.h"
31 :
32 : #define TEST_SUBDIR "test_sss_config"
33 : #define TEST_FILE TEST_SUBDIR "/sss_config_test.conf"
34 : #define TEST_FILE_BACKUP TEST_FILE ".augsave"
35 :
36 : /* input files */
37 :
38 : const char *test_orig =
39 : "[sssd]\n\
40 : services = nss, pam\n\
41 : domains = LDAP\n\
42 : debug_level = 0x0ff0\n\
43 : [domain/LDAP]\n\
44 : debug_level = 0x0ff0\n\
45 : [domain/IPA]\n\
46 : debug_level = 0x0ff0\n";
47 :
48 : const char *test_svc_one =
49 : "[sssd]\n\
50 : services = nss\n\
51 : domains = LDAP\n\
52 : debug_level = 0x0ff0\n\
53 : [domain/LDAP]\n\
54 : debug_level = 0x0ff0\n\
55 : [domain/IPA]\n\
56 : debug_level = 0x0ff0\n";
57 :
58 : const char *test_svc_empty =
59 : "[sssd]\n\
60 : services =\n\
61 : domains = LDAP\n\
62 : debug_level = 0x0ff0\n\
63 : [domain/LDAP]\n\
64 : debug_level = 0x0ff0\n\
65 : [domain/IPA]\n\
66 : debug_level = 0x0ff0\n";
67 :
68 : const char *test_svc_missing =
69 : "[sssd]\n\
70 : domains = LDAP\n\
71 : debug_level = 0x0ff0\n\
72 : [domain/LDAP]\n\
73 : debug_level = 0x0ff0\n\
74 : [domain/IPA]\n\
75 : debug_level = 0x0ff0\n";
76 :
77 : const char *test_dom_empty =
78 : "[sssd]\n\
79 : services = nss, pam\n\
80 : domains =\n\
81 : debug_level = 0x0ff0\n\
82 : [domain/LDAP]\n\
83 : debug_level = 0x0ff0\n\
84 : [domain/IPA]\n\
85 : debug_level = 0x0ff0\n";
86 :
87 : const char *test_dom_missing =
88 : "[sssd]\n\
89 : services = nss, pam\n\
90 : debug_level = 0x0ff0\n\
91 : [domain/LDAP]\n\
92 : debug_level = 0x0ff0\n\
93 : [domain/IPA]\n\
94 : debug_level = 0x0ff0\n";
95 :
96 : const char *test_dom_two =
97 : "[sssd]\n\
98 : services = nss, pam\n\
99 : domains = LDAP, IPA\n\
100 : debug_level = 0x0ff0\n\
101 : [domain/LDAP]\n\
102 : debug_level = 0x0ff0\n\
103 : [domain/IPA]\n\
104 : debug_level = 0x0ff0\n";
105 :
106 : /* expected */
107 :
108 : const char *exp_debug_level_exist =
109 : "[sssd]\n\
110 : services = nss, pam\n\
111 : domains = LDAP\n\
112 : debug_level = 0x0ff0\n\
113 : [domain/LDAP]\n\
114 : debug_level = 0x0330\n\
115 : [domain/IPA]\n\
116 : debug_level = 0x0ff0\n";
117 :
118 : const char *exp_debug_level_notexist =
119 : "[sssd]\n\
120 : services = nss, pam\n\
121 : domains = LDAP\n\
122 : debug_level = 0x0ff0\n\
123 : [domain/LDAP]\n\
124 : debug_level = 0x0ff0\n\
125 : [domain/IPA]\n\
126 : debug_level = 0x0ff0\n\
127 : [nss]\n\
128 : debug_level=0x0330\n";
129 :
130 : const char *exp_svc =
131 : "[sssd]\n\
132 : services = nss, pam, pac\n\
133 : domains = LDAP\n\
134 : debug_level = 0x0ff0\n\
135 : [domain/LDAP]\n\
136 : debug_level = 0x0ff0\n\
137 : [domain/IPA]\n\
138 : debug_level = 0x0ff0\n";
139 :
140 : const char *exp_svc_empty =
141 : "[sssd]\n\
142 : services =pac\n\
143 : domains = LDAP\n\
144 : debug_level = 0x0ff0\n\
145 : [domain/LDAP]\n\
146 : debug_level = 0x0ff0\n\
147 : [domain/IPA]\n\
148 : debug_level = 0x0ff0\n";
149 :
150 : const char *exp_svc_missing =
151 : "[sssd]\n\
152 : domains = LDAP\n\
153 : debug_level = 0x0ff0\n\
154 : services=pac\n\
155 : [domain/LDAP]\n\
156 : debug_level = 0x0ff0\n\
157 : [domain/IPA]\n\
158 : debug_level = 0x0ff0\n";
159 :
160 : const char *exp_svc_disable =
161 : "[sssd]\n\
162 : services = pam\n\
163 : domains = LDAP\n\
164 : debug_level = 0x0ff0\n\
165 : [domain/LDAP]\n\
166 : debug_level = 0x0ff0\n\
167 : [domain/IPA]\n\
168 : debug_level = 0x0ff0\n";
169 :
170 : const char *exp_svc_disable_one =
171 : "[sssd]\n\
172 : domains = LDAP\n\
173 : debug_level = 0x0ff0\n\
174 : [domain/LDAP]\n\
175 : debug_level = 0x0ff0\n\
176 : [domain/IPA]\n\
177 : debug_level = 0x0ff0\n";
178 :
179 : const char *exp_svc_disable_empty =
180 : "[sssd]\n\
181 : services =\n\
182 : domains = LDAP\n\
183 : debug_level = 0x0ff0\n\
184 : [domain/LDAP]\n\
185 : debug_level = 0x0ff0\n\
186 : [domain/IPA]\n\
187 : debug_level = 0x0ff0\n";
188 :
189 : const char *exp_svc_disable_missing =
190 : "[sssd]\n\
191 : domains = LDAP\n\
192 : debug_level = 0x0ff0\n\
193 : [domain/LDAP]\n\
194 : debug_level = 0x0ff0\n\
195 : [domain/IPA]\n\
196 : debug_level = 0x0ff0\n";
197 :
198 : const char *exp_dom =
199 : "[sssd]\n\
200 : services = nss, pam\n\
201 : domains = LDAP, IPA\n\
202 : debug_level = 0x0ff0\n\
203 : [domain/LDAP]\n\
204 : debug_level = 0x0ff0\n\
205 : [domain/IPA]\n\
206 : debug_level = 0x0ff0\n";
207 :
208 : const char *exp_dom_empty =
209 : "[sssd]\n\
210 : services = nss, pam\n\
211 : domains =IPA\n\
212 : debug_level = 0x0ff0\n\
213 : [domain/LDAP]\n\
214 : debug_level = 0x0ff0\n\
215 : [domain/IPA]\n\
216 : debug_level = 0x0ff0\n";
217 :
218 : const char *exp_dom_missing =
219 : "[sssd]\n\
220 : services = nss, pam\n\
221 : debug_level = 0x0ff0\n\
222 : domains=IPA\n\
223 : [domain/LDAP]\n\
224 : debug_level = 0x0ff0\n\
225 : [domain/IPA]\n\
226 : debug_level = 0x0ff0\n";
227 :
228 : const char *exp_dom_disable =
229 : "[sssd]\n\
230 : services = nss, pam\n\
231 : debug_level = 0x0ff0\n\
232 : [domain/LDAP]\n\
233 : debug_level = 0x0ff0\n\
234 : [domain/IPA]\n\
235 : debug_level = 0x0ff0\n";
236 :
237 : const char *exp_dom_disable_two =
238 : "[sssd]\n\
239 : services = nss, pam\n\
240 : domains = IPA\n\
241 : debug_level = 0x0ff0\n\
242 : [domain/LDAP]\n\
243 : debug_level = 0x0ff0\n\
244 : [domain/IPA]\n\
245 : debug_level = 0x0ff0\n";
246 :
247 : const char *exp_dom_disable_empty =
248 : "[sssd]\n\
249 : services = nss, pam\n\
250 : domains =\n\
251 : debug_level = 0x0ff0\n\
252 : [domain/LDAP]\n\
253 : debug_level = 0x0ff0\n\
254 : [domain/IPA]\n\
255 : debug_level = 0x0ff0\n";
256 :
257 : struct sss_config_ctx *config_ctx;
258 :
259 : static bool
260 28 : check_file_content(const char *filename, const char *expected)
261 : {
262 28 : FILE *file = NULL;
263 : size_t i;
264 : int c;
265 : bool result;
266 :
267 28 : file = fopen(filename, "r");
268 28 : fail_if(file == NULL, "unable to open test file");
269 :
270 28 : i = 0;
271 3630 : while ((c = fgetc(file)) != EOF) {
272 3574 : if (c != expected[i]) {
273 0 : printf("\nnot match: %d %c == %d %c\n", c, c, expected[i], expected[i]);
274 0 : result = false;
275 0 : goto done;
276 : }
277 :
278 3574 : i++;
279 : }
280 :
281 28 : if (expected[i] != '\0') {
282 0 : printf("\nnot end: %d %c == %d %c\n", c, c, expected[i], expected[i]);
283 0 : result = false;
284 0 : goto done;
285 : }
286 :
287 28 : result = true;
288 :
289 : done:
290 28 : fclose(file);
291 28 : return result;
292 : }
293 :
294 24 : static void test_setup(const char *configuration)
295 : {
296 24 : FILE *file = NULL;
297 : size_t ret;
298 :
299 24 : file = fopen(TEST_FILE, "w+");
300 24 : fail_if(file == NULL, "unable to create test file");
301 :
302 24 : ret = fputs(configuration, file);
303 24 : fail_if(ret == EOF, "unable to write test file");
304 :
305 24 : fail_if(fclose(file) != 0, "unable to close test file");
306 :
307 24 : config_ctx = sss_config_open(NULL, TEST_DIR, TEST_FILE);
308 24 : fail_if(config_ctx == NULL, "config_ctx is NULL");
309 24 : }
310 :
311 24 : static void setup(void)
312 : {
313 : errno_t ret;
314 :
315 24 : ret = mkdir(TEST_SUBDIR, S_IRWXU);
316 24 : if (ret != EOK) {
317 0 : ret = errno;
318 0 : fail("unable to create test dir [%d]: %s", ret, strerror(ret));
319 : }
320 :
321 24 : ck_leak_check_setup();
322 24 : }
323 :
324 24 : static void teardown(void)
325 : {
326 : errno_t ret;
327 :
328 24 : sss_config_close(&config_ctx);
329 24 : fail_if(config_ctx != NULL, "config_ctx is not NULL");
330 :
331 24 : unlink(TEST_FILE);
332 24 : unlink(TEST_FILE_BACKUP);
333 :
334 24 : ret = rmdir(TEST_SUBDIR);
335 24 : if (ret != EOK) {
336 0 : ret = errno;
337 0 : fail("unable to remove test dir [%d]: %s", ret, strerror(ret));
338 : }
339 :
340 24 : ck_leak_check_teardown();
341 24 : }
342 :
343 1 : START_TEST(test_sss_config_set_debug_level_exist)
344 : {
345 : errno_t ret;
346 : bool result;
347 :
348 1 : test_setup(test_orig);
349 :
350 1 : ret = sss_config_set_debug_level(config_ctx, "domain/LDAP", 0x0330);
351 1 : fail_if(ret != EOK, "unable change configuration");
352 :
353 1 : ret = sss_config_save(config_ctx);
354 1 : fail_if(ret != EOK, "unable save configuration");
355 :
356 1 : result = check_file_content(TEST_FILE, exp_debug_level_exist);
357 1 : fail_if(result == false, "file does not match");
358 :
359 1 : result = check_file_content(TEST_FILE_BACKUP, test_orig);
360 1 : fail_if(result == false, "backup file does not match");
361 : }
362 1 : END_TEST
363 :
364 1 : START_TEST(test_sss_config_set_debug_level_notexist)
365 : {
366 : errno_t ret;
367 : bool result;
368 :
369 1 : test_setup(test_orig);
370 :
371 1 : ret = sss_config_set_debug_level(config_ctx, "nss", 0x0330);
372 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
373 : ret, strerror(ret));
374 :
375 1 : ret = sss_config_save(config_ctx);
376 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
377 : ret, strerror(ret));
378 :
379 1 : result = check_file_content(TEST_FILE, exp_debug_level_notexist);
380 1 : fail_if(result == false, "file does not match");
381 :
382 1 : result = check_file_content(TEST_FILE_BACKUP, test_orig);
383 1 : fail_if(result == false, "backup file does not match");
384 : }
385 1 : END_TEST
386 :
387 1 : START_TEST(test_sss_config_service_enabled)
388 : {
389 : errno_t ret;
390 : bool result;
391 :
392 1 : test_setup(test_orig);
393 :
394 1 : ret = sss_config_service_is_enabled(config_ctx, "nss", &result);
395 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
396 : ret, strerror(ret));
397 :
398 1 : fail_if(result == false, "wrong result");
399 : }
400 1 : END_TEST
401 :
402 1 : START_TEST(test_sss_config_service_disabled)
403 : {
404 : errno_t ret;
405 : bool result;
406 :
407 1 : test_setup(test_orig);
408 :
409 1 : ret = sss_config_service_is_enabled(config_ctx, "pac", &result);
410 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
411 : ret, strerror(ret));
412 :
413 1 : fail_if(result == true, "wrong result");
414 : }
415 1 : END_TEST
416 :
417 1 : START_TEST(test_sss_config_service_disabled_empty)
418 : {
419 : errno_t ret;
420 : bool result;
421 :
422 1 : test_setup(test_svc_empty);
423 :
424 1 : ret = sss_config_service_is_enabled(config_ctx, "pac", &result);
425 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
426 : ret, strerror(ret));
427 :
428 1 : fail_if(result == true, "wrong result");
429 : }
430 1 : END_TEST
431 :
432 1 : START_TEST(test_sss_config_service_disabled_missing)
433 : {
434 : errno_t ret;
435 : bool result;
436 :
437 1 : test_setup(test_svc_missing);
438 :
439 1 : ret = sss_config_service_is_enabled(config_ctx, "pac", &result);
440 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
441 : ret, strerror(ret));
442 :
443 1 : fail_if(result == true, "wrong result");
444 : }
445 1 : END_TEST
446 :
447 1 : START_TEST(test_sss_config_service_enable)
448 : {
449 : errno_t ret;
450 : bool result;
451 :
452 1 : test_setup(test_orig);
453 :
454 1 : ret = sss_config_service_enable(config_ctx, "pac");
455 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
456 : ret, strerror(ret));
457 :
458 1 : ret = sss_config_save(config_ctx);
459 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
460 : ret, strerror(ret));
461 :
462 1 : result = check_file_content(TEST_FILE, exp_svc);
463 1 : fail_if(result == false, "file does not match");
464 :
465 1 : result = check_file_content(TEST_FILE_BACKUP, test_orig);
466 1 : fail_if(result == false, "backup file does not match");
467 : }
468 1 : END_TEST
469 :
470 1 : START_TEST(test_sss_config_service_enable_empty)
471 : {
472 : errno_t ret;
473 : bool result;
474 :
475 1 : test_setup(test_svc_empty);
476 :
477 1 : ret = sss_config_service_enable(config_ctx, "pac");
478 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
479 : ret, strerror(ret));
480 :
481 1 : ret = sss_config_save(config_ctx);
482 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
483 : ret, strerror(ret));
484 :
485 1 : result = check_file_content(TEST_FILE, exp_svc_empty);
486 1 : fail_if(result == false, "file does not match");
487 :
488 1 : result = check_file_content(TEST_FILE_BACKUP, test_svc_empty);
489 1 : fail_if(result == false, "backup file does not match");
490 : }
491 1 : END_TEST
492 :
493 1 : START_TEST(test_sss_config_service_enable_missing)
494 : {
495 : errno_t ret;
496 : bool result;
497 :
498 1 : test_setup(test_svc_missing);
499 :
500 1 : ret = sss_config_service_enable(config_ctx, "pac");
501 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
502 : ret, strerror(ret));
503 :
504 1 : ret = sss_config_save(config_ctx);
505 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
506 : ret, strerror(ret));
507 :
508 1 : result = check_file_content(TEST_FILE, exp_svc_missing);
509 1 : fail_if(result == false, "file does not match");
510 :
511 1 : result = check_file_content(TEST_FILE_BACKUP, test_svc_missing);
512 1 : fail_if(result == false, "backup file does not match");
513 : }
514 1 : END_TEST
515 :
516 1 : START_TEST(test_sss_config_service_disable)
517 : {
518 : errno_t ret;
519 : bool result;
520 :
521 1 : test_setup(test_orig);
522 :
523 1 : ret = sss_config_service_disable(config_ctx, "nss");
524 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
525 : ret, strerror(ret));
526 :
527 1 : ret = sss_config_save(config_ctx);
528 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
529 : ret, strerror(ret));
530 :
531 1 : result = check_file_content(TEST_FILE, exp_svc_disable);
532 1 : fail_if(result == false, "file does not match");
533 :
534 1 : result = check_file_content(TEST_FILE_BACKUP, test_orig);
535 1 : fail_if(result == false, "backup file does not match");
536 : }
537 1 : END_TEST
538 :
539 1 : START_TEST(test_sss_config_service_disable_one)
540 : {
541 : errno_t ret;
542 : bool result;
543 :
544 1 : test_setup(test_svc_one);
545 :
546 1 : ret = sss_config_service_disable(config_ctx, "nss");
547 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
548 : ret, strerror(ret));
549 :
550 1 : ret = sss_config_save(config_ctx);
551 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
552 : ret, strerror(ret));
553 :
554 1 : result = check_file_content(TEST_FILE, exp_svc_disable_one);
555 1 : fail_if(result == false, "file does not match");
556 :
557 1 : result = check_file_content(TEST_FILE_BACKUP, test_svc_one);
558 1 : fail_if(result == false, "backup file does not match");
559 : }
560 1 : END_TEST
561 :
562 1 : START_TEST(test_sss_config_service_disable_empty)
563 : {
564 : errno_t ret;
565 : bool result;
566 :
567 1 : test_setup(test_svc_empty);
568 :
569 1 : ret = sss_config_service_disable(config_ctx, "nss");
570 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
571 : ret, strerror(ret));
572 :
573 1 : ret = sss_config_save(config_ctx);
574 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
575 : ret, strerror(ret));
576 :
577 1 : result = check_file_content(TEST_FILE, exp_svc_disable_empty);
578 1 : fail_if(result == false, "file does not match");
579 :
580 : /* no backup file created */
581 : }
582 1 : END_TEST
583 :
584 1 : START_TEST(test_sss_config_service_disable_missing)
585 : {
586 : errno_t ret;
587 : bool result;
588 :
589 1 : test_setup(test_svc_missing);
590 :
591 1 : ret = sss_config_service_disable(config_ctx, "nss");
592 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
593 : ret, strerror(ret));
594 :
595 1 : ret = sss_config_save(config_ctx);
596 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
597 : ret, strerror(ret));
598 :
599 1 : result = check_file_content(TEST_FILE, exp_svc_disable_missing);
600 1 : fail_if(result == false, "file does not match");
601 :
602 : /* no backup file created */
603 : }
604 1 : END_TEST
605 :
606 1 : START_TEST(test_sss_config_domain_enabled)
607 : {
608 : errno_t ret;
609 : bool result;
610 :
611 1 : test_setup(test_orig);
612 :
613 1 : ret = sss_config_domain_is_enabled(config_ctx, "LDAP", &result);
614 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
615 : ret, strerror(ret));
616 :
617 1 : fail_if(result == false, "wrong result");
618 : }
619 1 : END_TEST
620 :
621 1 : START_TEST(test_sss_config_domain_disabled)
622 : {
623 : errno_t ret;
624 : bool result;
625 :
626 1 : test_setup(test_orig);
627 :
628 1 : ret = sss_config_domain_is_enabled(config_ctx, "AD", &result);
629 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
630 : ret, strerror(ret));
631 :
632 1 : fail_if(result == true, "wrong result");
633 : }
634 1 : END_TEST
635 :
636 1 : START_TEST(test_sss_config_domain_disabled_empty)
637 : {
638 : errno_t ret;
639 : bool result;
640 :
641 1 : test_setup(test_dom_empty);
642 :
643 1 : ret = sss_config_domain_is_enabled(config_ctx, "LDAP", &result);
644 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
645 : ret, strerror(ret));
646 :
647 1 : fail_if(result == true, "wrong result");
648 : }
649 1 : END_TEST
650 :
651 1 : START_TEST(test_sss_config_domain_disabled_missing)
652 : {
653 : errno_t ret;
654 : bool result;
655 :
656 1 : test_setup(test_dom_missing);
657 :
658 1 : ret = sss_config_domain_is_enabled(config_ctx, "LDAP", &result);
659 1 : fail_if(ret != EOK, "unable to read configuration [%d]: %s",
660 : ret, strerror(ret));
661 :
662 1 : fail_if(result == true, "wrong result");
663 : }
664 1 : END_TEST
665 :
666 1 : START_TEST(test_sss_config_domain_enable)
667 : {
668 : errno_t ret;
669 : bool result;
670 :
671 1 : test_setup(test_orig);
672 :
673 1 : ret = sss_config_domain_enable(config_ctx, "IPA");
674 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
675 : ret, strerror(ret));
676 :
677 1 : ret = sss_config_save(config_ctx);
678 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
679 : ret, strerror(ret));
680 :
681 1 : result = check_file_content(TEST_FILE, exp_dom);
682 1 : fail_if(result == false, "file does not match");
683 :
684 1 : result = check_file_content(TEST_FILE_BACKUP, test_orig);
685 1 : fail_if(result == false, "backup file does not match");
686 : }
687 1 : END_TEST
688 :
689 1 : START_TEST(test_sss_config_domain_enable_empty)
690 : {
691 : errno_t ret;
692 : bool result;
693 :
694 1 : test_setup(test_dom_empty);
695 :
696 1 : ret = sss_config_domain_enable(config_ctx, "IPA");
697 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
698 : ret, strerror(ret));
699 :
700 1 : ret = sss_config_save(config_ctx);
701 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
702 : ret, strerror(ret));
703 :
704 1 : result = check_file_content(TEST_FILE, exp_dom_empty);
705 1 : fail_if(result == false, "file does not match");
706 :
707 1 : result = check_file_content(TEST_FILE_BACKUP, test_dom_empty);
708 1 : fail_if(result == false, "backup file does not match");
709 : }
710 1 : END_TEST
711 :
712 1 : START_TEST(test_sss_config_domain_enable_missing)
713 : {
714 : errno_t ret;
715 : bool result;
716 :
717 1 : test_setup(test_dom_missing);
718 :
719 1 : ret = sss_config_domain_enable(config_ctx, "IPA");
720 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
721 : ret, strerror(ret));
722 :
723 1 : ret = sss_config_save(config_ctx);
724 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
725 : ret, strerror(ret));
726 :
727 1 : result = check_file_content(TEST_FILE, exp_dom_missing);
728 1 : fail_if(result == false, "file does not match");
729 :
730 1 : result = check_file_content(TEST_FILE_BACKUP, test_dom_missing);
731 1 : fail_if(result == false, "backup file does not match");
732 : }
733 1 : END_TEST
734 :
735 1 : START_TEST(test_sss_config_domain_disable)
736 : {
737 : errno_t ret;
738 : bool result;
739 :
740 1 : test_setup(test_orig);
741 :
742 1 : ret = sss_config_domain_disable(config_ctx, "LDAP");
743 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
744 : ret, strerror(ret));
745 :
746 1 : ret = sss_config_save(config_ctx);
747 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
748 : ret, strerror(ret));
749 :
750 1 : result = check_file_content(TEST_FILE, exp_dom_disable);
751 1 : fail_if(result == false, "file does not match");
752 :
753 1 : result = check_file_content(TEST_FILE_BACKUP, test_orig);
754 1 : fail_if(result == false, "backup file does not match");
755 : }
756 1 : END_TEST
757 :
758 1 : START_TEST(test_sss_config_domain_disable_two)
759 : {
760 : errno_t ret;
761 : bool result;
762 :
763 1 : test_setup(test_dom_two);
764 :
765 1 : ret = sss_config_domain_disable(config_ctx, "LDAP");
766 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
767 : ret, strerror(ret));
768 :
769 1 : ret = sss_config_save(config_ctx);
770 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
771 : ret, strerror(ret));
772 :
773 1 : result = check_file_content(TEST_FILE, exp_dom_disable_two);
774 1 : fail_if(result == false, "file does not match");
775 :
776 1 : result = check_file_content(TEST_FILE_BACKUP, test_dom_two);
777 1 : fail_if(result == false, "backup file does not match");
778 : }
779 1 : END_TEST
780 :
781 1 : START_TEST(test_sss_config_domain_disable_empty)
782 : {
783 : errno_t ret;
784 : bool result;
785 :
786 1 : test_setup(test_dom_empty);
787 :
788 1 : ret = sss_config_domain_disable(config_ctx, "LDAP");
789 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
790 : ret, strerror(ret));
791 :
792 1 : ret = sss_config_save(config_ctx);
793 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
794 : ret, strerror(ret));
795 :
796 1 : result = check_file_content(TEST_FILE, exp_dom_disable_empty);
797 1 : fail_if(result == false, "file does not match");
798 :
799 : /* no backup file created */
800 : }
801 1 : END_TEST
802 :
803 1 : START_TEST(test_sss_config_domain_disable_missing)
804 : {
805 : errno_t ret;
806 : bool result;
807 :
808 1 : test_setup(test_dom_missing);
809 :
810 1 : ret = sss_config_domain_disable(config_ctx, "LDAP");
811 1 : fail_if(ret != EOK, "unable change configuration [%d]: %s",
812 : ret, strerror(ret));
813 :
814 1 : ret = sss_config_save(config_ctx);
815 1 : fail_if(ret != EOK, "unable save configuration [%d]: %s",
816 : ret, strerror(ret));
817 :
818 1 : result = check_file_content(TEST_FILE, exp_dom_disable);
819 1 : fail_if(result == false, "file does not match");
820 :
821 : /* no backup file created */
822 : }
823 1 : END_TEST
824 :
825 1 : Suite *sss_config_suite(void)
826 : {
827 1 : Suite *s = suite_create("sss_config");
828 1 : TCase *tc = tcase_create("sss_config");
829 :
830 1 : tcase_add_checked_fixture(tc, setup, teardown);
831 :
832 1 : tcase_add_test(tc, test_sss_config_set_debug_level_exist);
833 1 : tcase_add_test(tc, test_sss_config_set_debug_level_notexist);
834 1 : tcase_add_test(tc, test_sss_config_service_enabled);
835 1 : tcase_add_test(tc, test_sss_config_service_disabled);
836 1 : tcase_add_test(tc, test_sss_config_service_disabled_empty);
837 1 : tcase_add_test(tc, test_sss_config_service_disabled_missing);
838 1 : tcase_add_test(tc, test_sss_config_service_enable);
839 1 : tcase_add_test(tc, test_sss_config_service_enable_empty);
840 1 : tcase_add_test(tc, test_sss_config_service_enable_missing);
841 1 : tcase_add_test(tc, test_sss_config_service_disable);
842 1 : tcase_add_test(tc, test_sss_config_service_disable_one);
843 1 : tcase_add_test(tc, test_sss_config_service_disable_empty);
844 1 : tcase_add_test(tc, test_sss_config_service_disable_missing);
845 1 : tcase_add_test(tc, test_sss_config_domain_enabled);
846 1 : tcase_add_test(tc, test_sss_config_domain_disabled);
847 1 : tcase_add_test(tc, test_sss_config_domain_disabled_empty);
848 1 : tcase_add_test(tc, test_sss_config_domain_disabled_missing);
849 1 : tcase_add_test(tc, test_sss_config_domain_enable);
850 1 : tcase_add_test(tc, test_sss_config_domain_enable_empty);
851 1 : tcase_add_test(tc, test_sss_config_domain_enable_missing);
852 1 : tcase_add_test(tc, test_sss_config_domain_disable);
853 1 : tcase_add_test(tc, test_sss_config_domain_disable_two);
854 1 : tcase_add_test(tc, test_sss_config_domain_disable_empty);
855 1 : tcase_add_test(tc, test_sss_config_domain_disable_missing);
856 :
857 :
858 :
859 1 : tcase_set_timeout(tc, 60);
860 :
861 1 : suite_add_tcase(s, tc);
862 :
863 1 : return s;
864 : }
865 :
866 1 : int main(int argc, const char *argv[])
867 : {
868 : int number_failed;
869 :
870 1 : tests_set_cwd();
871 :
872 1 : Suite *s = sss_config_suite();
873 1 : SRunner *sr = srunner_create(s);
874 :
875 1 : srunner_run_all(sr, CK_NORMAL);
876 1 : number_failed = srunner_ntests_failed(sr);
877 1 : srunner_free(sr);
878 :
879 1 : if (number_failed == 0) {
880 1 : return EXIT_SUCCESS;
881 : }
882 :
883 0 : return EXIT_FAILURE;
884 : }
|