1 /*
2 * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "UTTest_permission_manager.h"
17 #include "accesstoken_kit.h"
18 #include "nativetoken_kit.h"
19 #include "token_setproc.h"
20
21 namespace OHOS {
22 namespace DistributedHardware {
SetUp()23 void PermissionManagerTest::SetUp()
24 {
25 const int32_t permsNum = 2;
26 const int32_t indexZero = 0;
27 const int32_t indexOne = 1;
28 uint64_t tokenId;
29 const char *perms[permsNum];
30 perms[indexZero] = "ohos.permission.ACCESS_SERVICE_DM";
31 perms[indexOne] = "ohos.permission.DISTRIBUTED_DATASYNC";
32 NativeTokenInfoParams infoInstance = {
33 .dcapsNum = 0,
34 .permsNum = permsNum,
35 .aclsNum = 0,
36 .dcaps = NULL,
37 .perms = perms,
38 .acls = NULL,
39 .processName = "dsoftbus_service",
40 .aplStr = "system_core",
41 };
42 tokenId = GetAccessTokenId(&infoInstance);
43 SetSelfTokenID(tokenId);
44 OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
45 }
46 constexpr int32_t PAKAGE_NAME_SIZE_MAX = 256;
47 #define AUTH_CODE_WHITE_LIST_NUM (3)
48 constexpr const static char g_authCodeWhiteList[AUTH_CODE_WHITE_LIST_NUM][PAKAGE_NAME_SIZE_MAX] = {
49 "com.huawei.msdp.hmringgenerator",
50 "com.huawei.msdp.hmringdiscriminator",
51 "CollaborationFwk",
52 };
53
54 #define PIN_HOLDER_WHITE_LIST_NUM (1)
55 constexpr const static char g_pinHolderWhiteList[PIN_HOLDER_WHITE_LIST_NUM][PKG_NAME_SIZE_MAX] = {
56 "CollaborationFwk",
57 };
58
59 #define SYSTEM_SA_WHITE_LIST_NUM (4)
60 constexpr const static char systemSaWhiteList[SYSTEM_SA_WHITE_LIST_NUM][PAKAGE_NAME_SIZE_MAX] = {
61 "Samgr_Networking",
62 "ohos.distributeddata.service",
63 "ohos.dslm",
64 "ohos.deviceprofile",
65 };
TearDown()66 void PermissionManagerTest::TearDown()
67 {
68 }
69
SetUpTestCase()70 void PermissionManagerTest::SetUpTestCase()
71 {
72 }
73
TearDownTestCase()74 void PermissionManagerTest::TearDownTestCase()
75 {
76 }
77
78 namespace {
79
80 /**
81 * @tc.name: PinAuthUi::CheckPermission_001
82 * @tc.desc: the return value is true
83 * @tc.type: FUNC
84 * @tc.require: AR000GHSJK
85 */
HWTEST_F(PermissionManagerTest, CheckPermission_001, testing::ext::TestSize.Level0)86 HWTEST_F(PermissionManagerTest, CheckPermission_001, testing::ext::TestSize.Level0)
87 {
88 bool ret = PermissionManager::GetInstance().CheckPermission();
89 ASSERT_EQ(ret, true);
90 }
91
92 /**
93 * @tc.name: PinAuthUi::GetCallerProcessName_001
94 * @tc.desc: the return value is not DM_OK
95 * @tc.type: FUNC
96 * @tc.require: AR000GHSJK
97 */
HWTEST_F(PermissionManagerTest, GetCallerProcessName_001, testing::ext::TestSize.Level0)98 HWTEST_F(PermissionManagerTest, GetCallerProcessName_001, testing::ext::TestSize.Level0)
99 {
100 std::string processName;
101 int32_t ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
102 ASSERT_EQ(ret, DM_OK);
103 }
104
105 /**
106 * @tc.name: PinAuthUi::CheckProcessNameValidOnAuthCode_001
107 * @tc.desc: the return value is false
108 * @tc.type: FUNC
109 * @tc.require: AR000GHSJK
110 */
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_001, testing::ext::TestSize.Level0)111 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_001, testing::ext::TestSize.Level0)
112 {
113 std::string processName;
114 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(processName);
115 ASSERT_EQ(ret, false);
116 }
117
118 /**
119 * @tc.name: PinAuthUi::CheckProcessNameValidOnAuthCode_002
120 * @tc.desc: the return value is false
121 * @tc.type: FUNC
122 * @tc.require: AR000GHSJK
123 */
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_002, testing::ext::TestSize.Level0)124 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_002, testing::ext::TestSize.Level0)
125 {
126 std::string processName = "processName";
127 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(processName);
128 ASSERT_EQ(ret, false);
129 }
130
131 /**
132 * @tc.name: PinAuthUi::CheckProcessNameValidOnAuthCode_003
133 * @tc.desc: the return value is true
134 * @tc.type: FUNC
135 * @tc.require: AR000GHSJK
136 */
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_003, testing::ext::TestSize.Level0)137 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_003, testing::ext::TestSize.Level0)
138 {
139 std::string processName1(g_authCodeWhiteList[0]);
140 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(processName1);
141 ASSERT_EQ(ret, true);
142 std::string processName2(g_authCodeWhiteList[1]);
143 ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(processName2);
144 ASSERT_EQ(ret, true);
145 std::string processName3(g_authCodeWhiteList[2]);
146 ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(processName3);
147 ASSERT_EQ(ret, true);
148 }
149
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_004, testing::ext::TestSize.Level0)150 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_004, testing::ext::TestSize.Level0)
151 {
152 std::string processName = "CollaborationFwk";
153 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(processName);
154 ASSERT_TRUE(ret);
155 }
156 /**
157 * @tc.name: PinAuthUi::CheckProcessNameValidOnPinHolder_001
158 * @tc.desc: the return value is false
159 * @tc.type: FUNC
160 * @tc.require: AR000GHSJK
161 */
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_001, testing::ext::TestSize.Level0)162 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_001, testing::ext::TestSize.Level0)
163 {
164 std::string processName;
165 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnPinHolder(processName);
166 ASSERT_EQ(ret, false);
167 }
168
169 /**
170 * @tc.name: PinAuthUi::CheckProcessNameValidOnPinHolder_002
171 * @tc.desc: the return value is false
172 * @tc.type: FUNC
173 * @tc.require: AR000GHSJK
174 */
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_002, testing::ext::TestSize.Level0)175 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_002, testing::ext::TestSize.Level0)
176 {
177 std::string processName = "processName";
178 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnPinHolder(processName);
179 ASSERT_EQ(ret, false);
180 }
181
182 /**
183 * @tc.name: PinAuthUi::CheckProcessNameValidOnPinHolder_003
184 * @tc.desc: the return value is true
185 * @tc.type: FUNC
186 * @tc.require: AR000GHSJK
187 */
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_003, testing::ext::TestSize.Level0)188 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_003, testing::ext::TestSize.Level0)
189 {
190 std::string processName1(g_pinHolderWhiteList[0]);
191 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnPinHolder(processName1);
192 ASSERT_EQ(ret, true);
193 }
194
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_004, testing::ext::TestSize.Level0)195 HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_004, testing::ext::TestSize.Level0)
196 {
197 std::string processName = "CollaborationFwk";
198 bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnPinHolder(processName);
199 ASSERT_TRUE(ret);
200 }
201 /**
202 * @tc.name: PinAuthUi::CheckSystemSA_001
203 * @tc.desc: the return value is false
204 * @tc.type:FUNC
205 * @tc.require: AR000GHSJK
206 */
HWTEST_F(PermissionManagerTest, CheckSystemSA_001, testing::ext::TestSize.Level0)207 HWTEST_F(PermissionManagerTest, CheckSystemSA_001, testing::ext::TestSize.Level0)
208 {
209 std::string pkgName;
210 bool ret = PermissionManager::GetInstance().CheckSystemSA(pkgName);
211 ASSERT_EQ(ret, false);
212 pkgName = "pkgName";
213 ret = PermissionManager::GetInstance().CheckSystemSA(pkgName);
214 ASSERT_EQ(ret, false);
215 }
216
217 /**
218 * @tc.name: PinAuthUi::CheckSystemSA_002
219 * @tc.desc: the return value is true
220 * @tc.type:FUNC
221 * @tc.require: AR000GHSJK
222 */
HWTEST_F(PermissionManagerTest, CheckSystemSA_002, testing::ext::TestSize.Level0)223 HWTEST_F(PermissionManagerTest, CheckSystemSA_002, testing::ext::TestSize.Level0)
224 {
225 std::string pkgName1(systemSaWhiteList[0]);
226 bool ret = PermissionManager::GetInstance().CheckSystemSA(pkgName1);
227 ASSERT_EQ(ret, true);
228 std::string pkgName2(systemSaWhiteList[1]);
229 ret = PermissionManager::GetInstance().CheckSystemSA(pkgName2);
230 ASSERT_EQ(ret, true);
231 std::string pkgName3(systemSaWhiteList[2]);
232 ret = PermissionManager::GetInstance().CheckSystemSA(pkgName3);
233 ASSERT_EQ(ret, true);
234 std::string pkgName4(systemSaWhiteList[3]);
235 ret = PermissionManager::GetInstance().CheckSystemSA(pkgName4);
236 ASSERT_EQ(ret, true);
237 }
238
HWTEST_F(PermissionManagerTest, CheckSystemSA_101, testing::ext::TestSize.Level0)239 HWTEST_F(PermissionManagerTest, CheckSystemSA_101, testing::ext::TestSize.Level0)
240 {
241 std::string pkgName = "pkgName";
242 bool ret = PermissionManager::GetInstance().CheckSystemSA(pkgName);
243 ASSERT_FALSE(ret);
244 }
245
HWTEST_F(PermissionManagerTest, CheckSystemSA_102, testing::ext::TestSize.Level0)246 HWTEST_F(PermissionManagerTest, CheckSystemSA_102, testing::ext::TestSize.Level0)
247 {
248 std::string pkgName = "ohos.dhardware";
249 bool ret = PermissionManager::GetInstance().CheckSystemSA(pkgName);
250 ASSERT_TRUE(ret);
251 }
252 }
253 } // namespace DistributedHardware
254 } // namespace OHOS