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(¤t, 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