1 #define _GNU_SOURCE
2 #include <stdio.h>
3 #include <string.h>
4 #include <cgreen/cgreen.h>
5 #include <cgreen/mocks.h>
6 
7 #include <config.c>
8 
9 #include "config_cf_p_tests.h"
10 
11 #include "mock-config.c"
12 
13 #include "test-config-api.c"
14 
15 char key1[] = "ConfigVar1";
16 char val1[] = "Value1";
17 char key2[] = "ConfigVar2";
18 char val2[] = "Value2";
19 char key3[] = "ConfigVar3";
20 char val3[] = "Value3";
21 char key_unexisting[] = "Some Key";
22 
fill_config(void)23 void fill_config(void)
24 {
25     cf_add_string(key1, val1);
26     cf_add_string(key2, val2);
27     cf_add_string(key3, val3);
28     cf_add_string(key1, val2); /* Different value */
29     cf_add_string(key3, val2); /* Different value, end */
30     /* leak the momory */
31 }
32 
33 
Ensure(config_inits)34 Ensure(config_inits)
35 {
36     int env_owr = 1;
37 
38     setenv("FIDOGATE", "/tmp/mock-fidogate-dir", env_owr);
39     expect(cf_s_configdir);
40 
41     cf_initialize();
42 }
43 
44 GEN_CF_P_TESTS(origin, "FIDOGATE", "Origin")
45 GEN_CF_P_TESTS(organization, "FIDOGATE", "Organization")
46 
Ensure(get_string_default_null)47 Ensure(get_string_default_null)
48 {
49     char *ret;
50 
51     ret = cf_get_string("some_var", TRUE);
52     assert_that(ret, is_null);
53 
54     ret = cf_get_string("some_var", FALSE);
55     assert_that(ret, is_null);
56 }
57 
Ensure(get_string_finds_var)58 Ensure(get_string_finds_var)
59 {
60     char *ret;
61     char *exp = val2;
62 
63     fill_config();
64 
65     ret = cf_get_string(key2, TRUE);
66 
67     assert_that(ret, is_equal_to_string(exp));
68 }
69 
Ensure(get_string_doesnt_find_unexisting)70 Ensure(get_string_doesnt_find_unexisting)
71 {
72     char *ret;
73 
74     fill_config();
75 
76     ret = cf_get_string(key_unexisting, TRUE);
77 
78     assert_that(ret, is_null);
79 }
80 
Ensure(get_string_finds_same_var_from_start)81 Ensure(get_string_finds_same_var_from_start)
82 {
83     char *ret1;
84     char *ret2;
85 
86     fill_config();
87 
88     ret1 = cf_get_string(key1, TRUE);
89     ret2 = cf_get_string(key1, TRUE);
90 
91     assert_that(ret1, is_equal_to_string(ret2));
92 }
93 
Ensure(get_string_finds_different_when_continue)94 Ensure(get_string_finds_different_when_continue)
95 {
96     char *ret1;
97     char *ret2;
98 
99     fill_config();
100 
101     ret1 = cf_get_string(key1, TRUE);
102     ret2 = cf_get_string(key1, FALSE);
103 
104     assert_that(ret1, is_not_equal_to_string(ret2));
105 }
106 
create_config_suite(void)107 TestSuite *create_config_suite(void)
108 {
109     TestSuite *suite = create_named_test_suite(
110 	"Config suite");
111 
112     add_test(suite, config_inits);
113     ADD_CF_P_TESTS(suite, origin);
114     ADD_CF_P_TESTS(suite, organization);
115     add_test(suite, get_string_default_null);
116     add_test(suite, get_string_finds_var);
117     add_test(suite, get_string_doesnt_find_unexisting);
118     add_test(suite, get_string_finds_same_var_from_start);
119     add_test(suite, get_string_finds_different_when_continue);
120 
121     return suite;
122 }
123 
main(int argc,char ** argv)124 int main(int argc, char **argv) {
125     TestSuite *suite = create_config_suite();
126 
127     cgreen_mocks_are(loose_mocks);
128     return run_test_suite(suite, create_text_reporter());
129 }
130