1 /**
2 * Copyright (c) 2021 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 "ActsPMSTest.h"
17
18 using namespace std;
19 using namespace testing::ext;
20
21 static PmsInnerApi *g_interface;
22 static PermissionTrans g_systemPers[] = {
23 {
24 "ohos.permission.CAMERA",
25 "for CAMERA use",
26 INUSE,
27 },
28 {
29 "ohos.permission.RECORD_AUDIO",
30 "for RECORD_AUDIO use",
31 ALWAYS,
32 },
33 {
34 "ohos.permission.READ_MEDIA_AUDIO",
35 "for READ_MEDIA_AUDIO use",
36 INUSE,
37 },
38 {
39 "ohos.permission.READ_MEDIA_IMAGES",
40 "for READ_MEDIA_IMAGES use",
41 ALWAYS,
42 },
43 {
44 "ohos.permission.READ_MEDIA_VIDEO",
45 "for READ_MEDIA_VIDEO use",
46 INUSE,
47 },
48 {
49 "ohos.permission.WRITE_MEDIA_AUDIO",
50 "for WRITE_MEDIA_AUDIO use",
51 ALWAYS,
52 },
53 {
54 "ohos.permission.WRITE_MEDIA_IMAGES",
55 "for WRITE_MEDIA_IMAGES use",
56 INUSE,
57 },
58 {
59 "ohos.permission.WRITE_MEDIA_VIDEO",
60 "for WRITE_MEDIA_VIDEO use",
61 ALWAYS,
62 },
63 {
64 "ohos.permission.MODIFY_AUDIO_SETTINGS",
65 "for MODIFY_AUDIO_SETTINGS use",
66 INUSE,
67 },
68 };
69
70 class ActsPMSLoadTest : public testing::Test {
71 protected:
SetUpTestCase(void)72 static void SetUpTestCase(void)
73 {
74 CreateAppDir();
75 IUnknown *iUnknown = SAMGR_GetInstance()->GetFeatureApi(PERMISSION_SERVICE, PERM_INNER);
76 iUnknown->QueryInterface(iUnknown, DEFAULT_VERSION, (void **) &g_interface);
77 setuid(0);
78 }
TearDownTestCase(void)79 static void TearDownTestCase(void) {}
SetUp()80 virtual void SetUp() {}
TearDown()81 virtual void TearDown()
82 {
83 DeletePermissions(TEST_APP_ID);
84 DeletePermissions(TEST_APP_ID2);
85 DeletePermissions(SUBTEST_APP_ID);
86 UnLoadPermissions(TEST_TASKID);
87 UnLoadPermissions(SUBTEST_TASKID);
88 }
89 };
90
91 /**
92 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0510
93 * @tc.name Can load application permission with long and short package names
94 * @tc.desc [C- SECURITY -0900]
95 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0510, Function | MediumTest | Level2)96 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0510, Function | MediumTest | Level2)
97 {
98 SaveOrUpdatePermissions(TEST_APP_SHORT, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
99 SaveOrUpdatePermissions(TEST_APP_LONG, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
100 int ret = LoadPermissions(TEST_APP_SHORT, TEST_TASKID);
101 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
102 ret = LoadPermissions(TEST_APP_LONG, SUBTEST_TASKID);
103 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
104 UnLoadPermissions(TEST_TASKID);
105 UnLoadPermissions(SUBTEST_TASKID);
106 DeletePermissions(TEST_APP_SHORT);
107 DeletePermissions(TEST_APP_LONG);
108 }
109
110 /**
111 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0520
112 * @tc.name Load unauthorized permissions
113 * @tc.desc [C- SECURITY -0900]
114 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0520, Function | MediumTest | Level1)115 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0520, Function | MediumTest | Level1)
116 {
117 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
118 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
119 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
120 for (int i = 0; i < SYS_PERM_NUM - 1; i++) {
121 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[i].name);
122 EXPECT_EQ(ret, NOT_GRANTED) << "checkperm ret = " << ret << ", index = " << i <<endl;
123 }
124 UnLoadPermissions(TEST_TASKID);
125 DeletePermissions(TEST_APP_ID);
126 }
127
128 /**
129 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0530
130 * @tc.name Load authorized permissions
131 * @tc.desc [C- SECURITY -0900]
132 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0530, Function | MediumTest | Level1)133 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0530, Function | MediumTest | Level1)
134 {
135 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
136 g_interface->GrantPermission(TEST_APP_ID, g_systemPers[0].name);
137 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
138 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
139 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[0].name);
140 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
141 for (int i = 1; i < SYS_PERM_NUM - 1; i++) {
142 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[i].name);
143 EXPECT_EQ(ret, NOT_GRANTED) << "checkperm ret = " << ret << ", index = " << i <<endl;
144 }
145 UnLoadPermissions(TEST_TASKID);
146 DeletePermissions(TEST_APP_ID);
147 }
148
149 /**
150 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0540
151 * @tc.name Load system_grant permissions
152 * @tc.desc [C- SECURITY -0900]
153 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0540, Function | MediumTest | Level1)154 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0540, Function | MediumTest | Level1)
155 {
156 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
157 g_interface->GrantPermission(TEST_APP_ID, g_systemPers[0].name);
158 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
159 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
160 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[SYS_PERM_NUM - 1].name);
161 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
162 UnLoadPermissions(TEST_TASKID);
163 DeletePermissions(TEST_APP_ID);
164 }
165
166 /**
167 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0550
168 * @tc.name Load user_grant permissions
169 * @tc.desc [C- SECURITY -0900]
170 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0550, Function | MediumTest | Level0)171 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0550, Function | MediumTest | Level0)
172 {
173 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
174 int i = 0;
175 for (i = 0; i < SYS_PERM_NUM; i++) {
176 g_interface->GrantPermission(TEST_APP_ID, g_systemPers[i].name);
177 }
178 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
179 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
180 for (int i = 0; i < SYS_PERM_NUM; i++) {
181 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[i].name);
182 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << ", index = " << i <<endl;
183 }
184 UnLoadPermissions(TEST_TASKID);
185 DeletePermissions(TEST_APP_ID);
186 }
187
188 /**
189 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0560
190 * @tc.name Load permissions to large and small PIDs
191 * @tc.desc [C- SECURITY -0900]
192 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0560, Function | MediumTest | Level0)193 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0560, Function | MediumTest | Level0)
194 {
195 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
196 int ret = LoadPermissions(TEST_APP_ID, MAX_PID);
197 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
198 UnLoadPermissions(MAX_PID);
199 ret = LoadPermissions(TEST_APP_ID, MIN_PID);
200 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
201 UnLoadPermissions(MIN_PID);
202 DeletePermissions(TEST_APP_ID);
203 }
204
205 /**
206 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0570
207 * @tc.name Load nonexistent application permissions
208 * @tc.desc [C- SECURITY -0900]
209 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0570, Function | MediumTest | Level2)210 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0570, Function | MediumTest | Level2)
211 {
212 int ret = LoadPermissions(TEST_APP_ID, MAX_PID);
213 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
214 }
215
216 /**
217 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0580
218 * @tc.name Load loaded application permissions
219 * @tc.desc [C- SECURITY -0900]
220 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0580, Function | MediumTest | Level2)221 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0580, Function | MediumTest | Level2)
222 {
223 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
224 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
225 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
226 ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
227 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
228 UnLoadPermissions(TEST_TASKID);
229 DeletePermissions(TEST_APP_ID);
230 }
231
232 /**
233 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0630
234 * @tc.name Duplicate load application permissions
235 * @tc.desc [C- SECURITY -0900]
236 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0630, Function | MediumTest | Level2)237 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0630, Function | MediumTest | Level2)
238 {
239 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
240 LoadPermissions(TEST_APP_ID, TEST_TASKID);
241 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
242 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
243 ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
244 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
245 UnLoadPermissions(TEST_TASKID);
246 DeletePermissions(TEST_APP_ID);
247 }
248
249 /**
250 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0650
251 * @tc.name Load multiple application permissions
252 * @tc.desc [C- SECURITY -0900]
253 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0650, Function | MediumTest | Level2)254 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0650, Function | MediumTest | Level2)
255 {
256 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
257 SaveOrUpdatePermissions(TEST_APP_ID2, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
258 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
259 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
260 ret = LoadPermissions(TEST_APP_ID2, SUBTEST_TASKID);
261 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
262 UnLoadPermissions(TEST_TASKID);
263 UnLoadPermissions(SUBTEST_TASKID);
264 DeletePermissions(TEST_APP_ID);
265 DeletePermissions(TEST_APP_ID2);
266 }
267
268 /**
269 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0670
270 * @tc.name Load immediately after saving permissions
271 * @tc.desc [C- SECURITY -0900]
272 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0670, Function | MediumTest | Level2)273 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0670, Function | MediumTest | Level2)
274 {
275 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
276 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
277 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
278 UnLoadPermissions(TEST_TASKID);
279 DeletePermissions(TEST_APP_ID);
280 }
281
282 /**
283 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0680
284 * @tc.name Load immediately after updating permissions
285 * @tc.desc [C- SECURITY -0900]
286 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0680, Function | MediumTest | Level2)287 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0680, Function | MediumTest | Level2)
288 {
289 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, 0, FIRST_INSTALL);
290 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, UPDATE);
291 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
292 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
293 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[SYS_PERM_NUM - 1].name);
294 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
295 UnLoadPermissions(TEST_TASKID);
296 DeletePermissions(TEST_APP_ID);
297 }
298
299 /**
300 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0690
301 * @tc.name Load immediately after deleting permissions
302 * @tc.desc [C- SECURITY -0900]
303 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0690, Function | MediumTest | Level3)304 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0690, Function | MediumTest | Level3)
305 {
306 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
307 g_interface->GrantPermission(TEST_APP_ID, g_systemPers[0].name);
308 DeletePermissions(TEST_APP_ID);
309 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
310 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
311 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[0].name);
312 EXPECT_EQ(ret, RET_NOK) << "checkperm ret = " << ret << endl;
313 UnLoadPermissions(TEST_TASKID);
314 }
315
316 /**
317 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0700
318 * @tc.name Duplicate load after deleting permissions
319 * @tc.desc [C- SECURITY -0900]
320 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0700, Function | MediumTest | Level3)321 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0700, Function | MediumTest | Level3)
322 {
323 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
324 g_interface->GrantPermission(TEST_APP_ID, g_systemPers[0].name);
325 LoadPermissions(TEST_APP_ID, TEST_TASKID);
326 DeletePermissions(TEST_APP_ID);
327 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
328 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
329 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[0].name);
330 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
331 UnLoadPermissions(TEST_TASKID);
332 }
333
334 /**
335 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0710
336 * @tc.name Load immediately after querying permissions
337 * @tc.desc [C- SECURITY -0900]
338 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0710, Function | MediumTest | Level4)339 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0710, Function | MediumTest | Level4)
340 {
341 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
342 PermissionSaved* permissions = NULL;
343 int permNum = 0;
344 g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
345 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
346 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
347 ClrPers(permissions);
348 UnLoadPermissions(TEST_TASKID);
349 DeletePermissions(TEST_APP_ID);
350 }
351
352 /**
353 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0720
354 * @tc.name Load permission after grant runtime permissions
355 * @tc.desc [C- SECURITY -0900]
356 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0720, Function | MediumTest | Level2)357 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0720, Function | MediumTest | Level2)
358 {
359 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
360 LoadPermissions(TEST_APP_ID, TEST_TASKID);
361 g_interface->GrantRuntimePermission(TEST_TASKID, g_systemPers[0].name);
362 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
363 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
364 UnLoadPermissions(TEST_TASKID);
365 DeletePermissions(TEST_APP_ID);
366 }
367
368 /**
369 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0730
370 * @tc.name Load immediately after granting permissions
371 * @tc.desc [C- SECURITY -0900]
372 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0730, Function | MediumTest | Level2)373 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0730, Function | MediumTest | Level2)
374 {
375 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
376 g_interface->GrantPermission(TEST_APP_ID, g_systemPers[0].name);
377 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
378 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
379 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[0].name);
380 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
381 UnLoadPermissions(TEST_TASKID);
382 DeletePermissions(TEST_APP_ID);
383 }
384
385 /**
386 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0740
387 * @tc.name Load immediately after revoking permissions
388 * @tc.desc [C- SECURITY -0900]
389 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0740, Function | MediumTest | Level2)390 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0740, Function | MediumTest | Level2)
391 {
392 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
393 g_interface->GrantPermission(TEST_APP_ID, g_systemPers[0].name);
394 g_interface->RevokePermission(TEST_APP_ID, g_systemPers[0].name);
395 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
396 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
397 ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[0].name);
398 EXPECT_EQ(ret, NOT_GRANTED) << "checkperm ret = " << ret << endl;
399 UnLoadPermissions(TEST_TASKID);
400 DeletePermissions(TEST_APP_ID);
401 }
402
403 /**
404 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0830
405 * @tc.name Another application permission change does not affect load permission
406 * @tc.desc [C- SECURITY -0900]
407 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0830, Function | MediumTest | Level3)408 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0830, Function | MediumTest | Level3)
409 {
410 int pid = fork();
411 int status = 0;
412 if (pid != 0) {
413 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
414 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
415 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
416 UnLoadPermissions(TEST_TASKID);
417 DeletePermissions(TEST_APP_ID);
418 waitpid(pid, &status, 0);
419 } else {
420 SubTestWithoutCheck(SUBTEST_APP_ID, SUBTEST_TASKID);
421 exit(0);
422 }
423 }
424
425 /**
426 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0850
427 * @tc.name Permission to load exception package names
428 * @tc.desc [C- SECURITY -0900]
429 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0850, Function | MediumTest | Level4)430 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0850, Function | MediumTest | Level4)
431 {
432 int ret = LoadPermissions(NULL, TEST_TASKID);
433 EXPECT_EQ(ret, PERM_ERRORCODE_INVALID_PARAMS) << "load ret = " << ret << endl;
434 ret = LoadPermissions(SUBTEST_APP_ID, TEST_TASKID);
435 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
436 ret = LoadPermissions(PERMISSION_EMPTY, TEST_TASKID);
437 EXPECT_EQ(ret, PERM_ERRORCODE_STAT_FAIL) << "load ret = " << ret << endl;
438 ret = LoadPermissions(PERMISSION_TOOLONG, TEST_TASKID);
439 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
440 ret = LoadPermissions(PERMISSION_UNSUPPORTED, TEST_TASKID);
441 EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "load ret = " << ret << endl;
442 }
443
444 /**
445 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0860
446 * @tc.name Permission to load exception pid
447 * @tc.desc [C- SECURITY -0900]
448 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0860, Function | MediumTest | Level3)449 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0860, Function | MediumTest | Level3)
450 {
451 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
452 int ret = LoadPermissions(TEST_APP_ID, ABNORMAL_TASKID);
453 EXPECT_EQ(ret, PERM_ERRORCODE_INVALID_PARAMS) << "load ret = " << ret << endl;
454 UnLoadPermissions(ABNORMAL_TASKID);
455 DeletePermissions(TEST_APP_ID);
456 }
457
458 /**
459 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_0880
460 * @tc.name Permission to load exception data
461 * @tc.desc [C- SECURITY -0900]
462 */
HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0880, Function | MediumTest | Level4)463 HWTEST_F(ActsPMSLoadTest, testSecPMPMS_0880, Function | MediumTest | Level4)
464 {
465 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
466 int fd = access(TEST_APP_PATH, F_OK);
467 if (fd == 0) {
468 unlink(TEST_APP_PATH);
469 }
470 fd = open(TEST_APP_PATH, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
471 if (fd >= 0) {
472 write(fd, PERMISSION_UNSUPPORTED, strlen(PERMISSION_UNSUPPORTED));
473 close(fd);
474 }
475 int ret = LoadPermissions(TEST_APP_ID, TEST_TASKID);
476 EXPECT_EQ(ret, PERM_ERRORCODE_JSONPARSE_FAIL) << "load ret = " << ret << endl;
477 UnLoadPermissions(TEST_TASKID);
478 DeletePermissions(TEST_APP_ID);
479 }
480