1f6603c60Sopenharmony_ci/**
2f6603c60Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License.
5f6603c60Sopenharmony_ci * You may obtain a copy of the License at
6f6603c60Sopenharmony_ci *
7f6603c60Sopenharmony_ci *   http://www.apache.org/licenses/LICENSE-2.0
8f6603c60Sopenharmony_ci *
9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and
13f6603c60Sopenharmony_ci * limitations under the License.
14f6603c60Sopenharmony_ci */
15f6603c60Sopenharmony_ci
16f6603c60Sopenharmony_ci#include "ActsPMSTest.h"
17f6603c60Sopenharmony_ci#include <sys/time.h>
18f6603c60Sopenharmony_ci
19f6603c60Sopenharmony_ciusing namespace std;
20f6603c60Sopenharmony_ciusing namespace testing::ext;
21f6603c60Sopenharmony_ci
22f6603c60Sopenharmony_cistatic PmsInnerApi *g_interface;
23f6603c60Sopenharmony_cistatic PermissionTrans g_systemPers[] = {
24f6603c60Sopenharmony_ci    {
25f6603c60Sopenharmony_ci        "ohos.permission.CAMERA",
26f6603c60Sopenharmony_ci        "for CAMERA use",
27f6603c60Sopenharmony_ci        INUSE,
28f6603c60Sopenharmony_ci    },
29f6603c60Sopenharmony_ci    {
30f6603c60Sopenharmony_ci        "ohos.permission.RECORD_AUDIO",
31f6603c60Sopenharmony_ci        "for RECORD_AUDIO use",
32f6603c60Sopenharmony_ci        ALWAYS,
33f6603c60Sopenharmony_ci    },
34f6603c60Sopenharmony_ci    {
35f6603c60Sopenharmony_ci        "ohos.permission.READ_MEDIA_AUDIO",
36f6603c60Sopenharmony_ci        "for READ_MEDIA_AUDIO use",
37f6603c60Sopenharmony_ci        INUSE,
38f6603c60Sopenharmony_ci    },
39f6603c60Sopenharmony_ci    {
40f6603c60Sopenharmony_ci        "ohos.permission.READ_MEDIA_IMAGES",
41f6603c60Sopenharmony_ci        "for READ_MEDIA_IMAGES use",
42f6603c60Sopenharmony_ci        ALWAYS,
43f6603c60Sopenharmony_ci    },
44f6603c60Sopenharmony_ci    {
45f6603c60Sopenharmony_ci        "ohos.permission.READ_MEDIA_VIDEO",
46f6603c60Sopenharmony_ci        "for READ_MEDIA_VIDEO use",
47f6603c60Sopenharmony_ci        INUSE,
48f6603c60Sopenharmony_ci    },
49f6603c60Sopenharmony_ci    {
50f6603c60Sopenharmony_ci        "ohos.permission.WRITE_MEDIA_AUDIO",
51f6603c60Sopenharmony_ci        "for WRITE_MEDIA_AUDIO use",
52f6603c60Sopenharmony_ci        ALWAYS,
53f6603c60Sopenharmony_ci    },
54f6603c60Sopenharmony_ci    {
55f6603c60Sopenharmony_ci        "ohos.permission.WRITE_MEDIA_IMAGES",
56f6603c60Sopenharmony_ci        "for WRITE_MEDIA_IMAGES use",
57f6603c60Sopenharmony_ci        INUSE,
58f6603c60Sopenharmony_ci    },
59f6603c60Sopenharmony_ci    {
60f6603c60Sopenharmony_ci        "ohos.permission.WRITE_MEDIA_VIDEO",
61f6603c60Sopenharmony_ci        "for WRITE_MEDIA_VIDEO use",
62f6603c60Sopenharmony_ci        ALWAYS,
63f6603c60Sopenharmony_ci    },
64f6603c60Sopenharmony_ci    {
65f6603c60Sopenharmony_ci        "ohos.permission.MODIFY_AUDIO_SETTINGS",
66f6603c60Sopenharmony_ci        "for MODIFY_AUDIO_SETTINGS use",
67f6603c60Sopenharmony_ci        INUSE,
68f6603c60Sopenharmony_ci    },
69f6603c60Sopenharmony_ci};
70f6603c60Sopenharmony_ci
71f6603c60Sopenharmony_ciclass ActsPMSUpdatePermissionTest : public testing::Test
72f6603c60Sopenharmony_ci{
73f6603c60Sopenharmony_ciprotected:
74f6603c60Sopenharmony_ci    static void SetUpTestCase(void)
75f6603c60Sopenharmony_ci    {
76f6603c60Sopenharmony_ci        CreateAppDir();
77f6603c60Sopenharmony_ci        IUnknown *iUnknown = SAMGR_GetInstance()->GetFeatureApi(PERMISSION_SERVICE, PERM_INNER);
78f6603c60Sopenharmony_ci        iUnknown->QueryInterface(iUnknown, DEFAULT_VERSION, (void **)&g_interface);
79f6603c60Sopenharmony_ci        setuid(0);
80f6603c60Sopenharmony_ci    }
81f6603c60Sopenharmony_ci    static void TearDownTestCase(void) {}
82f6603c60Sopenharmony_ci    virtual void SetUp() {}
83f6603c60Sopenharmony_ci    virtual void TearDown()
84f6603c60Sopenharmony_ci    {
85f6603c60Sopenharmony_ci        DeletePermissions(TEST_APP_ID);
86f6603c60Sopenharmony_ci        DeletePermissions(TEST_APP_ID2);
87f6603c60Sopenharmony_ci        DeletePermissions(SUBTEST_APP_ID);
88f6603c60Sopenharmony_ci        UnLoadPermissions(TEST_TASKID);
89f6603c60Sopenharmony_ci        UnLoadPermissions(SUBTEST_TASKID);
90f6603c60Sopenharmony_ci    }
91f6603c60Sopenharmony_ci};
92f6603c60Sopenharmony_ci
93f6603c60Sopenharmony_cilong GetCurrentTimeMillis()
94f6603c60Sopenharmony_ci{
95f6603c60Sopenharmony_ci    struct timeval current;
96f6603c60Sopenharmony_ci    gettimeofday(&current, NULL);
97f6603c60Sopenharmony_ci    return current.tv_sec * MILLISECOND + current.tv_usec / MILLISECOND;
98f6603c60Sopenharmony_ci}
99f6603c60Sopenharmony_ci
100f6603c60Sopenharmony_ci/**
101f6603c60Sopenharmony_ci * @tc.number     SUB_SEC_AppSEC_PermissionMgmt_PMS_6200
102f6603c60Sopenharmony_ci * @tc.name       Update permission flags
103f6603c60Sopenharmony_ci * @tc.desc       [C- SECURITY -1000]
104f6603c60Sopenharmony_ci */
105f6603c60Sopenharmony_ciHWTEST_F(ActsPMSUpdatePermissionTest, testSecPMUpdatePMFlags_6200, Function | MediumTest | Level2)
106f6603c60Sopenharmony_ci{
107f6603c60Sopenharmony_ci    SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
108f6603c60Sopenharmony_ci
109f6603c60Sopenharmony_ci    PermissionSaved *permissions = NULL;
110f6603c60Sopenharmony_ci    int permNum = 0;
111f6603c60Sopenharmony_ci    int ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
112f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
113f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
114f6603c60Sopenharmony_ci    if (permissions != NULL)
115f6603c60Sopenharmony_ci    {
116f6603c60Sopenharmony_ci        EXPECT_EQ(permissions[0].flags, PMS_FLAG_DEFAULT) << "flags =" << permissions[0].flags << endl;
117f6603c60Sopenharmony_ci    }
118f6603c60Sopenharmony_ci    ClrPers(permissions);
119f6603c60Sopenharmony_ci
120f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, PMS_FLAG_DEFAULT);
121f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "update perms flag ret =" << ret << endl;
122f6603c60Sopenharmony_ci
123f6603c60Sopenharmony_ci    ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
124f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
125f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
126f6603c60Sopenharmony_ci    ClrPers(permissions);
127f6603c60Sopenharmony_ci
128f6603c60Sopenharmony_ci    UnLoadPermissions(TEST_TASKID);
129f6603c60Sopenharmony_ci    DeletePermissions(TEST_APP_ID);
130f6603c60Sopenharmony_ci}
131f6603c60Sopenharmony_ci
132f6603c60Sopenharmony_ci/**
133f6603c60Sopenharmony_ci * @tc.number     SUB_SEC_AppSEC_PermissionMgmt_PMS_6300
134f6603c60Sopenharmony_ci * @tc.name       Update permission flags (No reminds after rejection)
135f6603c60Sopenharmony_ci * @tc.desc       [C- SECURITY -1000]
136f6603c60Sopenharmony_ci */
137f6603c60Sopenharmony_ciHWTEST_F(ActsPMSUpdatePermissionTest, testSecPMUpdatePMFlags_6300, Function | MediumTest | Level2)
138f6603c60Sopenharmony_ci{
139f6603c60Sopenharmony_ci    SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
140f6603c60Sopenharmony_ci
141f6603c60Sopenharmony_ci    PermissionSaved *permissions = NULL;
142f6603c60Sopenharmony_ci    int permNum = 0;
143f6603c60Sopenharmony_ci    int ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
144f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
145f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
146f6603c60Sopenharmony_ci    if (permissions != NULL)
147f6603c60Sopenharmony_ci    {
148f6603c60Sopenharmony_ci        EXPECT_EQ(permissions[0].flags, PMS_FLAG_DEFAULT) << "flags =" << permissions[0].flags << endl;
149f6603c60Sopenharmony_ci    }
150f6603c60Sopenharmony_ci    ClrPers(permissions);
151f6603c60Sopenharmony_ci
152f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, PMS_FLAG_USER_FIXED);
153f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "update perms flag ret =" << ret << endl;
154f6603c60Sopenharmony_ci
155f6603c60Sopenharmony_ci    ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
156f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
157f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
158f6603c60Sopenharmony_ci    ClrPers(permissions);
159f6603c60Sopenharmony_ci
160f6603c60Sopenharmony_ci    UnLoadPermissions(TEST_TASKID);
161f6603c60Sopenharmony_ci    DeletePermissions(TEST_APP_ID);
162f6603c60Sopenharmony_ci}
163f6603c60Sopenharmony_ci
164f6603c60Sopenharmony_ci/**
165f6603c60Sopenharmony_ci * @tc.number     SUB_SEC_AppSEC_PermissionMgmt_PMS_6400
166f6603c60Sopenharmony_ci * @tc.name       Update permission flags (Name does not exist)
167f6603c60Sopenharmony_ci * @tc.desc       [C- SECURITY -1000]
168f6603c60Sopenharmony_ci */
169f6603c60Sopenharmony_ciHWTEST_F(ActsPMSUpdatePermissionTest, testSecPMUpdatePMFlags_6400, Function | MediumTest | Level2)
170f6603c60Sopenharmony_ci{
171f6603c60Sopenharmony_ci    SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
172f6603c60Sopenharmony_ci
173f6603c60Sopenharmony_ci    PermissionSaved *permissions = NULL;
174f6603c60Sopenharmony_ci    int permNum = 0;
175f6603c60Sopenharmony_ci    int ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
176f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
177f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
178f6603c60Sopenharmony_ci    if (permissions != NULL)
179f6603c60Sopenharmony_ci    {
180f6603c60Sopenharmony_ci        EXPECT_EQ(permissions[0].flags, PMS_FLAG_DEFAULT) << "flags =" << permissions[0].flags << endl;
181f6603c60Sopenharmony_ci    }
182f6603c60Sopenharmony_ci    ClrPers(permissions);
183f6603c60Sopenharmony_ci
184f6603c60Sopenharmony_ci    // pkg name not exist
185f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_NOT_EXIST, g_systemPers[0].name, PMS_FLAG_USER_FIXED);
186f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_FILE_NOT_EXIST) << "update perms flag ret =" << ret << endl;
187f6603c60Sopenharmony_ci
188f6603c60Sopenharmony_ci    // pkg perm not exist
189f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, PERMISSION_UNDEFINED, PMS_FLAG_USER_FIXED);
190f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "update perms flag ret =" << ret << endl;
191f6603c60Sopenharmony_ci
192f6603c60Sopenharmony_ci    // pkg flag not exist
193f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, FLAG_NOT_EXIST);
194f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_INVALID_PARAMS) << "update perms flag ret =" << ret << endl;
195f6603c60Sopenharmony_ci    ClrPers(permissions);
196f6603c60Sopenharmony_ci
197f6603c60Sopenharmony_ci    UnLoadPermissions(TEST_TASKID);
198f6603c60Sopenharmony_ci    DeletePermissions(TEST_APP_ID);
199f6603c60Sopenharmony_ci}
200f6603c60Sopenharmony_ci
201f6603c60Sopenharmony_ci/**
202f6603c60Sopenharmony_ci * @tc.number     SUB_SEC_AppSEC_PermissionMgmt_PMS_6500
203f6603c60Sopenharmony_ci * @tc.name       Update permission flags (Name empty)
204f6603c60Sopenharmony_ci * @tc.desc       [C- SECURITY -1000]
205f6603c60Sopenharmony_ci */
206f6603c60Sopenharmony_ciHWTEST_F(ActsPMSUpdatePermissionTest, testSecPMUpdatePMFlags_6500, Function | MediumTest | Level2)
207f6603c60Sopenharmony_ci{
208f6603c60Sopenharmony_ci    SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
209f6603c60Sopenharmony_ci
210f6603c60Sopenharmony_ci    PermissionSaved *permissions = NULL;
211f6603c60Sopenharmony_ci    int permNum = 0;
212f6603c60Sopenharmony_ci    int ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
213f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
214f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
215f6603c60Sopenharmony_ci    if (permissions != NULL)
216f6603c60Sopenharmony_ci    {
217f6603c60Sopenharmony_ci        EXPECT_EQ(permissions[0].flags, PMS_FLAG_DEFAULT) << "flags =" << permissions[0].flags << endl;
218f6603c60Sopenharmony_ci    }
219f6603c60Sopenharmony_ci    ClrPers(permissions);
220f6603c60Sopenharmony_ci
221f6603c60Sopenharmony_ci    // pkg name empty
222f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(NULL, g_systemPers[0].name, PMS_FLAG_USER_FIXED);
223f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_INVALID_PARAMS) << "update perms flag ret =" << ret << endl;
224f6603c60Sopenharmony_ci
225f6603c60Sopenharmony_ci    // pkg perm empty
226f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, NULL, PMS_FLAG_USER_FIXED);
227f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_INVALID_PARAMS) << "update perms flag ret =" << ret << endl;
228f6603c60Sopenharmony_ci
229f6603c60Sopenharmony_ci    // pkg flag empty
230f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, 0);
231f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "update perms flag ret =" << ret << endl;
232f6603c60Sopenharmony_ci    ClrPers(permissions);
233f6603c60Sopenharmony_ci
234f6603c60Sopenharmony_ci    UnLoadPermissions(TEST_TASKID);
235f6603c60Sopenharmony_ci    DeletePermissions(TEST_APP_ID);
236f6603c60Sopenharmony_ci}
237f6603c60Sopenharmony_ci
238f6603c60Sopenharmony_ci/**
239f6603c60Sopenharmony_ci * @tc.number     SUB_SEC_AppSEC_PermissionMgmt_PMS_6600
240f6603c60Sopenharmony_ci * @tc.name       Update permission flags (Name invalid)
241f6603c60Sopenharmony_ci * @tc.desc       [C- SECURITY -1000]
242f6603c60Sopenharmony_ci */
243f6603c60Sopenharmony_ciHWTEST_F(ActsPMSUpdatePermissionTest, testSecPMUpdatePMFlags_6600, Function | MediumTest | Level2)
244f6603c60Sopenharmony_ci{
245f6603c60Sopenharmony_ci    SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
246f6603c60Sopenharmony_ci
247f6603c60Sopenharmony_ci    PermissionSaved *permissions = NULL;
248f6603c60Sopenharmony_ci    int permNum = 0;
249f6603c60Sopenharmony_ci    int ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
250f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
251f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
252f6603c60Sopenharmony_ci    if (permissions != NULL)
253f6603c60Sopenharmony_ci    {
254f6603c60Sopenharmony_ci        EXPECT_EQ(permissions[0].flags, PMS_FLAG_DEFAULT) << "flags =" << permissions[0].flags << endl;
255f6603c60Sopenharmony_ci    }
256f6603c60Sopenharmony_ci    ClrPers(permissions);
257f6603c60Sopenharmony_ci
258f6603c60Sopenharmony_ci    // pkg name invalid
259f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_INVALID, g_systemPers[0].name, PMS_FLAG_USER_FIXED);
260f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_FILE_NOT_EXIST) << "update perms flag ret =" << ret << endl;
261f6603c60Sopenharmony_ci
262f6603c60Sopenharmony_ci    // pkg perm invalid
263f6603c60Sopenharmony_ci    ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, PERMISSION_UNSUPPORTED, PMS_FLAG_USER_FIXED);
264f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "update perms flag ret =" << ret << endl;
265f6603c60Sopenharmony_ci    ClrPers(permissions);
266f6603c60Sopenharmony_ci
267f6603c60Sopenharmony_ci    UnLoadPermissions(TEST_TASKID);
268f6603c60Sopenharmony_ci    DeletePermissions(TEST_APP_ID);
269f6603c60Sopenharmony_ci}
270f6603c60Sopenharmony_ci
271f6603c60Sopenharmony_ci/**
272f6603c60Sopenharmony_ci * @tc.number     SUB_SEC_AppSEC_PermissionMgmt_PMS_6700
273f6603c60Sopenharmony_ci * @tc.name       Updatepermissionflags interface stability test
274f6603c60Sopenharmony_ci * @tc.desc       [C- SECURITY -1000]
275f6603c60Sopenharmony_ci */
276f6603c60Sopenharmony_ciHWTEST_F(ActsPMSUpdatePermissionTest, testSecPMUpdatePMFlags_6700, Function | MediumTest | Level2)
277f6603c60Sopenharmony_ci{
278f6603c60Sopenharmony_ci    SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
279f6603c60Sopenharmony_ci
280f6603c60Sopenharmony_ci    PermissionSaved *permissions = NULL;
281f6603c60Sopenharmony_ci    int permNum = 0;
282f6603c60Sopenharmony_ci    int ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
283f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
284f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
285f6603c60Sopenharmony_ci    if (permissions != NULL)
286f6603c60Sopenharmony_ci    {
287f6603c60Sopenharmony_ci        EXPECT_EQ(permissions[0].flags, PMS_FLAG_DEFAULT) << "flags =" << permissions[0].flags << endl;
288f6603c60Sopenharmony_ci    }
289f6603c60Sopenharmony_ci    ClrPers(permissions);
290f6603c60Sopenharmony_ci
291f6603c60Sopenharmony_ci    for (int i = 0; i < PERFORMANCE_RUN_TIMES / 2; i++)
292f6603c60Sopenharmony_ci    {
293f6603c60Sopenharmony_ci        ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, PMS_FLAG_DEFAULT);
294f6603c60Sopenharmony_ci        EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "update perms flag ret =" << ret << endl;
295f6603c60Sopenharmony_ci        ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, PMS_FLAG_USER_FIXED);
296f6603c60Sopenharmony_ci        EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "update perms flag ret =" << ret << endl;
297f6603c60Sopenharmony_ci    }
298f6603c60Sopenharmony_ci    ClrPers(permissions);
299f6603c60Sopenharmony_ci
300f6603c60Sopenharmony_ci    UnLoadPermissions(TEST_TASKID);
301f6603c60Sopenharmony_ci    DeletePermissions(TEST_APP_ID);
302f6603c60Sopenharmony_ci}
303f6603c60Sopenharmony_ci
304f6603c60Sopenharmony_ci/**
305f6603c60Sopenharmony_ci * @tc.number     SUB_SEC_AppSEC_PermissionMgmt_PMS_6800
306f6603c60Sopenharmony_ci * @tc.name       Updatepermissionflags interface performace test
307f6603c60Sopenharmony_ci * @tc.desc       [C- SECURITY -1000]
308f6603c60Sopenharmony_ci */
309f6603c60Sopenharmony_ciHWTEST_F(ActsPMSUpdatePermissionTest, testSecPMUpdatePMFlags_6800, Function | MediumTest | Level2)
310f6603c60Sopenharmony_ci{
311f6603c60Sopenharmony_ci    SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
312f6603c60Sopenharmony_ci
313f6603c60Sopenharmony_ci    PermissionSaved *permissions = NULL;
314f6603c60Sopenharmony_ci    int permNum = 0;
315f6603c60Sopenharmony_ci    int ret = g_interface->QueryPermission(TEST_APP_ID, &permissions, &permNum);
316f6603c60Sopenharmony_ci    EXPECT_EQ(ret, PERM_ERRORCODE_SUCCESS) << "query ret=" << ret << endl;
317f6603c60Sopenharmony_ci    EXPECT_EQ(permNum, SYS_PERM_NUM) << "permNum =" << permNum << endl;
318f6603c60Sopenharmony_ci    if (permissions != NULL)
319f6603c60Sopenharmony_ci    {
320f6603c60Sopenharmony_ci        EXPECT_EQ(permissions[0].flags, PMS_FLAG_DEFAULT) << "flags =" << permissions[0].flags << endl;
321f6603c60Sopenharmony_ci    }
322f6603c60Sopenharmony_ci    ClrPers(permissions);
323f6603c60Sopenharmony_ci
324f6603c60Sopenharmony_ci    long startTime = GetCurrentTimeMillis();
325f6603c60Sopenharmony_ci    for (int i = 0; i < PERFORMANCE_RUN_TIMES / 2; i++)
326f6603c60Sopenharmony_ci    {
327f6603c60Sopenharmony_ci        ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, PMS_FLAG_DEFAULT);
328f6603c60Sopenharmony_ci        ret = g_interface->UpdatePermissionFlags(TEST_APP_ID, g_systemPers[0].name, PMS_FLAG_USER_FIXED);
329f6603c60Sopenharmony_ci    }
330f6603c60Sopenharmony_ci    long timeCost = GetCurrentTimeMillis() - startTime;
331f6603c60Sopenharmony_ci    long timeAvg = timeCost / 10000;
332f6603c60Sopenharmony_ci    EXPECT_LT(timeAvg, 11) << "avg times =" << timeAvg << endl;
333f6603c60Sopenharmony_ci    ClrPers(permissions);
334f6603c60Sopenharmony_ci
335f6603c60Sopenharmony_ci    UnLoadPermissions(TEST_TASKID);
336f6603c60Sopenharmony_ci    DeletePermissions(TEST_APP_ID);
337f6603c60Sopenharmony_ci}
338