1 #include "common.h"
2 #include "vnstat_tests.h"
3 #include "id_tests.h"
4 #include "id.h"
5
START_TEST(getuser_root_string)6 START_TEST(getuser_root_string)
7 {
8 ck_assert_int_eq((int)getuser("root"), 0);
9 }
10 END_TEST
11
START_TEST(getuser_root_numeric)12 START_TEST(getuser_root_numeric)
13 {
14 ck_assert_int_eq((int)getuser("0"), 0);
15 }
16 END_TEST
17
START_TEST(getuser_no_such_user_string)18 START_TEST(getuser_no_such_user_string)
19 {
20 suppress_output();
21 getuser("reallynosuchuser");
22 }
23 END_TEST
24
START_TEST(getuser_no_such_user_numeric)25 START_TEST(getuser_no_such_user_numeric)
26 {
27 suppress_output();
28 getuser("99999999");
29 }
30 END_TEST
31
START_TEST(getgroup_root_string)32 START_TEST(getgroup_root_string)
33 {
34 #if defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
35 ck_assert_int_eq((int)getgroup("root"), 0);
36 #else
37 ck_assert_int_eq((int)getgroup("wheel"), 0);
38 #endif
39 }
40 END_TEST
41
START_TEST(getgroup_root_numeric)42 START_TEST(getgroup_root_numeric)
43 {
44 ck_assert_int_eq((int)getgroup("0"), 0);
45 }
46 END_TEST
47
START_TEST(getgroup_no_such_user_string)48 START_TEST(getgroup_no_such_user_string)
49 {
50 suppress_output();
51 getgroup("reallynosuchgroup");
52 }
53 END_TEST
54
START_TEST(getgroup_no_such_user_numeric)55 START_TEST(getgroup_no_such_user_numeric)
56 {
57 suppress_output();
58 getgroup("99999999");
59 }
60 END_TEST
61
START_TEST(setuser_with_empty_user)62 START_TEST(setuser_with_empty_user)
63 {
64 suppress_output();
65 setuser("");
66 }
67 END_TEST
68
START_TEST(setuser_with_current_user)69 START_TEST(setuser_with_current_user)
70 {
71 char temp[16];
72 struct passwd *pw;
73
74 pw = getpwuid(getuid());
75
76 if (pw != NULL) {
77 suppress_output();
78 snprintf(temp, 16, "%d", getuser(""));
79 setuser(temp);
80 } else {
81 printf("Note: skipping test setuser_with_current_user due to non-existing user\n");
82 }
83 }
84 END_TEST
85
START_TEST(setgroup_with_empty_group)86 START_TEST(setgroup_with_empty_group)
87 {
88 suppress_output();
89 setgroup("");
90 }
91 END_TEST
92
START_TEST(setgroup_with_current_group)93 START_TEST(setgroup_with_current_group)
94 {
95 char temp[16];
96 struct group *gr;
97
98 gr = getgrgid(getgid());
99
100 if (gr != NULL) {
101 suppress_output();
102 snprintf(temp, 16, "%d", getgroup(""));
103 setgroup(temp);
104 } else {
105 printf("Note: skipping test setgroup_with_current_group due to non-existing group\n");
106 }
107 }
108 END_TEST
109
add_id_tests(Suite * s)110 void add_id_tests(Suite *s)
111 {
112 TCase *tc_id = tcase_create("ID");
113 tcase_add_checked_fixture(tc_id, setup, teardown);
114 tcase_add_unchecked_fixture(tc_id, setup, teardown);
115 tcase_add_test(tc_id, getuser_root_string);
116 tcase_add_test(tc_id, getuser_root_numeric);
117 tcase_add_exit_test(tc_id, getuser_no_such_user_string, 1);
118 tcase_add_exit_test(tc_id, getuser_no_such_user_numeric, 1);
119 tcase_add_test(tc_id, getgroup_root_string);
120 tcase_add_test(tc_id, getgroup_root_numeric);
121 tcase_add_exit_test(tc_id, getgroup_no_such_user_string, 1);
122 tcase_add_exit_test(tc_id, getgroup_no_such_user_numeric, 1);
123 tcase_add_test(tc_id, setuser_with_empty_user);
124 tcase_add_test(tc_id, setuser_with_current_user);
125 tcase_add_test(tc_id, setgroup_with_empty_group);
126 tcase_add_test(tc_id, setgroup_with_current_group);
127 suite_add_tcase(s, tc_id);
128 }
129