Merge branch 'tizen' into security-manager
[platform/core/test/security-tests.git] / src / security-manager-tests / common / tzplatform.cpp
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #include <pwd.h>
18 #include <sys/types.h>
19 #include <tzplatform_config.h>
20
21 #include <dpl/test/test_runner.h>
22 #include <memory.h>
23 #include <temp_test_user.h>
24 #include <tzplatform.h>
25
26 namespace TzPlatformConfig {
27
28 DEFINE_SMARTPTR(tzplatform_context_destroy, tzplatform_context, TzPlatformContextPtr);
29
30 uid_t getGlobalUserId(void)
31 {
32     return tzplatform_getuid(TZ_SYS_GLOBALAPP_USER);
33 }
34
35 uid_t getGlobalGroupId(void)
36 {
37     gid_t global_uid = getGlobalUserId();
38     errno = 0;
39     passwd* pw = getpwuid(global_uid);
40     RUNNER_ASSERT_ERRNO_MSG(pw, "getpwuid() failed.");
41     return pw->pw_gid;
42 }
43
44 const std::string appDirPath(const TemporaryTestUser &user, const std::string &appId,
45                              const std::string &pkgId)
46 {
47     return appDirPath(user.getUid()) + pkgId + "/" + appId;
48 }
49
50 const std::string appDirPath(uid_t uid)
51 {
52     struct tzplatform_context *tzCtxPtr = nullptr;
53
54     RUNNER_ASSERT(0 == tzplatform_context_create(&tzCtxPtr));
55     TzPlatformContextPtr tzCtxPtrSmart(tzCtxPtr);
56
57     RUNNER_ASSERT_MSG(0 == tzplatform_context_set_user(tzCtxPtr, uid),
58                       "Unable to set user with uid <" << uid << "> for tzplatform context");
59
60     const char *appDir = tzplatform_context_getenv(tzCtxPtr,
61                                 getGlobalUserId() == uid ? TZ_SYS_RW_APP : TZ_USER_APP);
62     RUNNER_ASSERT_MSG(nullptr != appDir,
63                       "tzplatform_context_getenv failed"
64                           << "for getting sys rw app of user with uid<" << uid << ">");
65
66     return std::string(appDir) + "/";
67 }
68
69 const std::string globalAppDir()
70 {
71     struct tzplatform_context *tzCtxPtr = nullptr;
72
73     RUNNER_ASSERT_MSG(0 == tzplatform_context_create(&tzCtxPtr), "Couldn't create tzplatform context");
74     TzPlatformContextPtr tzCtxPtrSmart(tzCtxPtr);
75
76     const char *appDir = tzplatform_context_getenv(tzCtxPtr, TZ_SYS_RW_APP);
77     RUNNER_ASSERT_MSG(nullptr != appDir,
78                       "tzplatform_context_getenv failed for getting sys rw app");
79     return appDir;
80 }
81
82 }
83