2 * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dpl/test/test_runner.h>
21 namespace SecurityManagerTest {
25 void install(const InstallRequest &request, lib_retcode expectedResult)
27 int result = security_manager_app_install(request.get());
28 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
29 "installing app returned wrong value."
30 << " InstallRequest: [ " << request << "];"
31 << " Result: " << result << ";"
32 << " Expected result: " << expectedResult);
35 void uninstall(const InstallRequest &request, lib_retcode expectedResult)
37 int result = security_manager_app_uninstall(request.get());
38 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
39 "uninstalling app returned wrong value."
40 << " InstallRequest: [ " << request << "];"
41 << " Result: " << result << ";"
42 << " Expected result: " << expectedResult);
45 std::string getPkgId(const std::string &appId, lib_retcode expectedResult)
47 char *pkgId = nullptr;
48 int result = security_manager_get_app_pkgid(&pkgId, appId.c_str());
49 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
50 "getting pkg id from app id returned wrong value."
51 << " App id: " << appId << ";"
52 << " Result: " << result << ";"
53 << " Expected result: " << expectedResult);
54 if (expectedResult != SECURITY_MANAGER_SUCCESS)
57 RUNNER_ASSERT_MSG(pkgId != nullptr, "getting pkg id did not allocate memory");
58 std::string str(pkgId);
63 void setProcessLabel(const std::string &appId, lib_retcode expectedResult)
65 int result = security_manager_set_process_label_from_appid(appId.c_str());
66 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
67 "setting process label from app id returned wrong value."
68 << " App id: " << appId << ";"
69 << " Result: " << result << ";"
70 << " Expected result: " << expectedResult);
73 void setProcessGroups(const std::string &appId, lib_retcode expectedResult)
75 int result = security_manager_set_process_groups_from_appid(appId.c_str());
76 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
77 "setting process groups from app id returned wrong value."
78 << " App id: " << appId << ";"
79 << " Result: " << result << ";"
80 << " Expected result: " << expectedResult);
83 void dropProcessPrivileges(lib_retcode expectedResult)
85 int result = security_manager_drop_process_privileges();
86 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
87 "dropping process privileges returned wrong value."
88 << " Result: " << result << ";"
89 << " Expected result: " << expectedResult);
92 void prepareApp(const std::string &appId, lib_retcode expectedResult)
94 int result = security_manager_prepare_app(appId.c_str());
95 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
96 "preparing app returned wrong value."
97 << " App id: " << appId << ";"
98 << " Result: " << result << ";"
99 << " Expected result: " << expectedResult);
102 void addUser(const UserRequest &request, lib_retcode expectedResult)
104 int result = security_manager_user_add(request.get());
105 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
106 "adding user returned wrong value."
107 << " UserRequest: [ " << request << "];"
108 << " Result: " << result << ";"
109 << " Expected result: " << expectedResult);
112 void deleteUser(const UserRequest &request, lib_retcode expectedResult)
114 int result = security_manager_user_delete(request.get());
115 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
116 "deleting user returned wrong value."
117 << " UserRequest: [ " << request << "];"
118 << " Result: " << result << ";"
119 << " Expected result: " << expectedResult);
122 void sendPolicy(const PolicyRequest &request, lib_retcode expectedResult)
124 int result = security_manager_policy_update_send(request.get());
125 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
126 "sending policy update for self returned wrong value."
127 << " PolicyRequest: [ " << request << "];"
128 << " Result: " << result << ";"
129 << " Expected result: " << expectedResult);
132 void getConfiguredPolicy(const PolicyEntry &filter, std::vector<PolicyEntry> &policyEntries, lib_retcode expectedResult, bool forAdmin)
134 policy_entry **pp_privs_policy = NULL;
135 size_t policy_size = 0;
139 result = security_manager_get_configured_policy_for_admin(filter.get(), &pp_privs_policy, &policy_size);
141 result = security_manager_get_configured_policy_for_self(filter.get(), &pp_privs_policy, &policy_size);
144 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
145 "Unexpected result for filter: " << filter << std::endl
146 << " Result: " << result << ";");
148 for (unsigned int i = 0; i < policy_size; ++i) {
149 PolicyEntry pe(*pp_privs_policy[i]);
150 policyEntries.push_back(pe);
154 void getPolicy(const PolicyEntry &filter, std::vector<PolicyEntry> &policyEntries, lib_retcode expectedResult)
156 policy_entry **pp_privs_policy = NULL;
157 size_t policy_size = 0;
160 result = security_manager_get_policy(filter.get(), &pp_privs_policy, &policy_size);
161 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
162 "Unexpected result" << std::endl
163 << " Result: " << result << ";");
164 for (unsigned int i = 0; i < policy_size; ++i) {
165 PolicyEntry pe(*pp_privs_policy[i]);
166 policyEntries.push_back(pe);
170 void applySharing(const SharingRequest &req, lib_retcode expectedResult) {
171 int result = security_manager_private_sharing_apply(req.get());
172 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
173 "Unexpected result from security_manager_private_sharing_apply" << std::endl
174 << " Result: " << result << ";");
177 void dropSharing(const SharingRequest &req, lib_retcode expectedResult) {
178 int result = security_manager_private_sharing_drop(req.get());
179 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
180 "Unexpected result from security_manager_private_sharing_drop" << std::endl
181 << " Result: " << result << ";");
184 void getPolicyForSelf(const PolicyEntry &filter, std::vector<PolicyEntry> &policyEntries, lib_retcode expectedResult)
186 getConfiguredPolicy(filter, policyEntries, expectedResult, false);
189 void getPolicyForAdmin(const PolicyEntry &filter, std::vector<PolicyEntry> &policyEntries, lib_retcode expectedResult)
191 getConfiguredPolicy(filter, policyEntries, expectedResult, true);
194 void getPkgIdBySocket(int socketFd, std::string *pkgId, std::string *appId, lib_retcode expectedResult)
196 char *pkg_Id = nullptr;
197 char *app_Id = nullptr;
199 int result = security_manager_identify_app_from_socket(socketFd,
200 pkgId == nullptr ? nullptr : &pkg_Id,
201 appId == nullptr ? nullptr : &app_Id);
203 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
204 "getting pkg id from socket returned wrong value."
205 << " socket: " << socketFd << ";"
206 << " Result: " << result << ";"
207 << " Expected result: " << expectedResult);
220 void getPkgIdByPid(pid_t pid, std::string *pkgId, std::string *appId, lib_retcode expectedResult)
222 char *pkg_Id = nullptr;
223 char *app_Id = nullptr;
225 int result = security_manager_identify_app_from_pid(pid,
226 pkgId == nullptr ? nullptr : &pkg_Id,
227 appId == nullptr ? nullptr : &app_Id);
229 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
230 "getting pkg id from pid returned wrong value."
231 << " pid: " << pid << ";"
232 << " Result: " << result << ";"
233 << " Expected result: " << expectedResult);
246 void getPkgIdByCynaraClient(const std::string &client, std::string *pkgId, std::string *appId,
247 lib_retcode expectedResult)
249 char *pkg_Id = nullptr;
250 char *app_Id = nullptr;
252 int result = security_manager_identify_app_from_cynara_client(client.c_str(),
253 pkgId == nullptr ? nullptr : &pkg_Id,
254 appId == nullptr ? nullptr : &app_Id);
256 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
257 "getting pkg id from pid returned wrong value."
258 << " client: " << client << ";"
259 << " Result: " << result << ";"
260 << " Expected result: " << expectedResult);
273 void appHasPrivilege(const std::string &appId, const std::string &privilege, uid_t user,
274 int &value, lib_retcode expectedResult)
276 int result = security_manager_app_has_privilege(appId.c_str(), privilege.c_str(), user, &value);
278 RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
279 "checking application privilege returned wrong result."
280 << " Result: " << result << ";"
281 << " Expected result: " << expectedResult);
284 void getSecurityManagerGroups(char ***groups, size_t *groups_count, lib_retcode expectedResult)
286 int result = security_manager_groups_get(groups, groups_count);
287 RUNNER_ASSERT_MSG(static_cast<lib_retcode>(result) == expectedResult,
288 "Unexpected result in security_manager_groups_get()" << std::endl
289 << " Result: " << result << " Expected: " << expectedResult);
292 void registerPaths(const PathsRequest& req, lib_retcode expectedResult)
294 int result = security_manager_paths_register(req.get());
295 RUNNER_ASSERT_MSG(static_cast<lib_retcode>(result) == expectedResult,
296 "Unexpected result in security_manager_paths_register()" << std::endl
297 << " Result: " << result << " Expected: " << expectedResult);
300 void labelsMonitorGetFd(const LabelMonitor &monitor, int *fd, lib_retcode expectedResult)
302 int result = security_manager_app_labels_monitor_get_fd(monitor.get(), fd);
303 RUNNER_ASSERT_MSG(static_cast<lib_retcode>(result) == expectedResult,
304 "Unexpected result in security_manager_app_labels_monitor_get_fd()"
305 << std::endl << " Result: " << result << " Expected: "
309 void labelsProcess(const LabelMonitor &monitor, lib_retcode expectedResult)
311 int result = security_manager_app_labels_monitor_process(monitor.get());
312 RUNNER_ASSERT_MSG(static_cast<lib_retcode>(result) == expectedResult,
313 "Unexpected result in security_manager_app_labels_monitor_process()"
314 << std::endl << " Result: " << result << " Expected: "
320 } // namespace SecurityManagerTest