Added test cases for chosen security-server functions checking weird input parameters.
[platform/core/test/security-tests.git] / tests / security-server-tests / security_server_tests_weird_arguments.cpp
1 /*
2  * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
3  */
4 /*
5  * @file    security_server_tests_weird_arguments.cpp
6  * @author  Zbigniew Jasinski (z.jasinski@samsung.com)
7  * @version 1.0
8  * @brief   Test cases for security server
9  *
10  */
11
12 #include "security-server.h"
13 #include <dpl/test/test_runner.h>
14 #include <dpl/log/log.h>
15
16 #define SECURITY_SERVER_MAX_OBJ_NAME 30
17
18 RUNNER_TEST_GROUP_INIT(SECURITY_SERVER_TESTS_WEIRD_ARGUMENTS);
19
20 RUNNER_TEST(tc01_security_server_get_gid_weird_input_case)
21 {
22     int ret = 0;
23     char weird[] = {0xe3,0x79,0x82,0x0};
24
25     /* normal param case */
26     ret = security_server_get_gid("tel_sim");
27     RUNNER_ASSERT_MSG(ret > -1, "ret: " << ret);
28
29     /* wrong param case */
30     ret = security_server_get_gid("elephony_akecall");
31     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
32
33     /* weird param case */
34     ret = security_server_get_gid(weird);
35     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
36
37     /* null param case */
38     ret = security_server_get_gid(NULL);
39     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
40
41     /* param too long case */
42     ret = security_server_get_gid("abcdefghijklmnopqrstuvwxyz01234");
43     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
44
45     /* empty param case */
46     ret = security_server_get_gid("");
47     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
48 }
49
50 /* from security_server_tests_server.cpp */
51
52 RUNNER_TEST(tc02_security_server_get_object_name_weird_input_case)
53 {
54     int ret = 0;
55     gid_t gid = 6001;
56
57     /* null object case */
58     char *object = NULL;
59
60     ret = security_server_get_object_name(gid, object, sizeof(object));
61     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
62
63     /* buffer to small case */
64     char object1[5];
65
66     ret = security_server_get_object_name(gid, object1, sizeof(object1));
67     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_BUFFER_TOO_SMALL, "ret: " << ret);
68
69     /* wrong gid case */
70     gid = 9876;
71     char object2[SECURITY_SERVER_MAX_OBJ_NAME];
72
73     ret = security_server_get_object_name(gid, object2, sizeof(object2));
74     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
75
76 /***************/
77
78     /* big gid case */
79     gid = 70666;
80
81     ret = security_server_get_object_name(gid, object2, sizeof(object2));
82     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
83
84     /* invalid gid case */
85     gid = -1;
86
87     ret = security_server_get_object_name(gid, object2, sizeof(object2));
88     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
89 }
90
91 RUNNER_TEST(tc03_security_server_request_cookie_weird_input_case)
92 {
93     int ret = 0;
94     size_t cookie_size = security_server_get_cookie_size();
95
96     /* null cookie case */
97     char *cookie = NULL;
98
99     ret = security_server_request_cookie(cookie, cookie_size);
100     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
101
102     /* buffer size too small case */
103     cookie_size = 19;
104     char cookie2[cookie_size];
105
106     ret = security_server_request_cookie(cookie2, cookie_size);
107     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_BUFFER_TOO_SMALL, "ret: " << ret);
108 }
109
110 RUNNER_TEST(tc04_security_server_check_privilege_weird_input_case)
111 {
112     int ret = 0;
113     size_t cookie_size = security_server_get_cookie_size();
114     gid_t gid = 6001;
115
116     /* null cookie case */
117     char *cookie = NULL;
118
119     ret = security_server_check_privilege(cookie, gid);
120     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
121
122     /* invalid gid case */
123     gid = -1;
124     char cookie2[cookie_size];
125
126     ret = security_server_request_cookie(cookie2, cookie_size);
127     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS, "ret: " << ret);
128
129     ret = security_server_check_privilege(cookie2, gid);
130     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_BAD_REQUEST, "ret: " << ret);
131
132     /* big gid case */
133     gid = 70666;
134
135     ret = security_server_check_privilege(cookie2, gid);
136     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS, "ret: " << ret);
137 }
138 RUNNER_TEST(tc05_security_server_check_privilege_by_cookie_weird_input_case)
139 {
140     int ret = 0;
141     size_t cookie_size = security_server_get_cookie_size();;
142     const char *object = "telephony_makecall";
143     const char *access_rights = "r";
144
145     /* null cookie case */
146     char *cookie = NULL;
147     ret = security_server_check_privilege_by_cookie(cookie, object, access_rights);
148     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
149
150     /* null object case */
151     char *object2 = NULL;
152     char cookie2[cookie_size];
153
154     ret = security_server_request_cookie(cookie2, cookie_size);
155     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS, "ret: " << ret);
156
157     ret = security_server_check_privilege_by_cookie(cookie2, object2, access_rights);
158     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
159
160     /* null access rights case */
161     access_rights = NULL;
162     ret = security_server_check_privilege_by_cookie(cookie2, object, access_rights);
163     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
164 }
165
166 RUNNER_TEST(tc06_security_server_check_privilege_by_sockfd_weird_input_case)
167 {
168     int ret = 0;
169     int sockfd = -1;
170     const char *object = "telephony_makecall";
171     const char *access_rights = "r";
172
173     /* invalid sockfd case */
174     ret = security_server_check_privilege_by_sockfd(sockfd, object, access_rights);
175     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_SERVER_ERROR, "ret: " << ret);
176     sockfd = 0;
177
178     /* null object case */
179     char *object2 = NULL;
180     ret = security_server_check_privilege_by_sockfd(sockfd, object2, access_rights);
181     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_SERVER_ERROR, "ret: " << ret);
182
183     /* null access rights case */
184     access_rights = NULL;
185     ret = security_server_check_privilege_by_sockfd(sockfd, object, access_rights);
186     RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_SERVER_ERROR, "ret: " << ret);
187 }
188
189 RUNNER_TEST(tc07_security_server_get_cookie_pid_weird_input_case)
190 {
191     int ret = 0;
192     char *cookie = NULL;
193
194     ret = security_server_get_cookie_pid(cookie);
195     RUNNER_ASSERT(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM);
196 }