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