From ca9d9a14d3263eac2d03d59861557271dab355a8 Mon Sep 17 00:00:00 2001 From: zhaowenli Date: Mon, 18 Nov 2024 20:32:51 +0800 Subject: [PATCH] =?UTF-8?q?AddPermissionUsedRecord=E6=8E=A5=E5=8F=A3tdd?= =?UTF-8?q?=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhaowenli --- interfaces/innerkits/privacy/test/BUILD.gn | 1 + .../add_permission_used_record_test.cpp | 721 ++++++++++++++++++ .../add_permission_used_record_test.h | 47 ++ .../privacy_mock_test/privacy_kit_test.cpp | 16 - .../unittest/src/permission_deny_test.cpp | 12 - .../test/unittest/src/privacy_kit_test.cpp | 541 ------------- .../privacymanager/test/unittest/BUILD.gn | 1 + .../add_permission_used_record_test.cpp | 129 ++++ .../permission_record_manager_test.cpp | 50 -- 9 files changed, 899 insertions(+), 619 deletions(-) create mode 100644 interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.cpp create mode 100644 interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.h create mode 100644 services/privacymanager/test/unittest/add_permission_used_record_test.cpp diff --git a/interfaces/innerkits/privacy/test/BUILD.gn b/interfaces/innerkits/privacy/test/BUILD.gn index 11bb044d7..7c12d5870 100644 --- a/interfaces/innerkits/privacy/test/BUILD.gn +++ b/interfaces/innerkits/privacy/test/BUILD.gn @@ -39,6 +39,7 @@ ohos_unittest("libprivacy_sdk_test") { sources = [ "mock/src/app_manager_access_client.cpp", + "unittest/permission_used_record/add_permission_used_record_test.cpp", "unittest/src/permission_deny_test.cpp", "unittest/src/privacy_kit_test.cpp", ] diff --git a/interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.cpp b/interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.cpp new file mode 100644 index 000000000..18e614081 --- /dev/null +++ b/interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.cpp @@ -0,0 +1,721 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "add_permission_used_record_test.h" +#include +#include "accesstoken_kit.h" +#include "parameter.h" +#include "privacy_error.h" +#include "privacy_kit.h" +#include "token_setproc.h" + + +using namespace testing::ext; +using namespace OHOS::Security::AccessToken; + +namespace OHOS { +namespace Security { +namespace AccessToken { +const static int32_t RET_NO_ERROR = 0; +static constexpr int32_t DEFAULT_API_VERSION = 8; +static constexpr int32_t FIRST_INDEX = 0; +static constexpr int32_t SECOND_INDEX = 1; +static constexpr int32_t THIRD_INDEX = 2; +static constexpr int32_t RESULT_NUM_ONE = 1; +static constexpr int32_t RESULT_NUM_TWO = 2; +static constexpr int32_t RESULT_NUM_THREE = 3; +static AccessTokenID g_tokenIdA = 0; +static AccessTokenID g_tokenIdB = 0; +static AccessTokenID g_nativeToken = 0; +static uint32_t g_testTokenId = 0; +void AddPermissionUsedRecordTest::SetUpTestCase() +{ +} + +void AddPermissionUsedRecordTest::TearDownTestCase() +{ +} + +void AddPermissionUsedRecordTest::SetUp() +{ +} + +void AddPermissionUsedRecordTest::TearDown() +{ +} + +static void SleepUtilMinuteEnd() +{ + std::chrono::milliseconds ms = std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch() + ); + + int64_t timestampMs = ms.count(); + time_t timestampS = static_cast(timestampMs / 1000); + struct tm t = {0}; + // localtime is not thread safe, localtime_r first param unit is second, timestamp unit is ms, so divided by 1000 + localtime_r(×tampS, &t); + uint32_t sleepSeconds = static_cast(60 - t.tm_sec); + + GTEST_LOG_(INFO) << "current time is " << timestampMs << ", " << t.tm_hour << ":" << t.tm_min << ":" << t.tm_sec; + GTEST_LOG_(INFO) << "need to sleep " << sleepSeconds << " seconds"; + sleep(sleepSeconds); +} + +std::string AddPermissionUsedRecordTest::GetLocalDeviceUdid() +{ + const int32_t DEVICE_UUID_LENGTH = 65; + char udid[DEVICE_UUID_LENGTH] = {0}; + GetDevUdid(udid, DEVICE_UUID_LENGTH); + return udid; +} + +static HapPolicyParams g_policyPramsA = { + .apl = APL_NORMAL, + .domain = "test.domain.A", +}; + +static HapInfoParams g_infoParmsA = { + .userID = 1, + .bundleName = "ohos.privacy_test.bundleA", + .instIndex = 0, + .appIDDesc = "privacy_test.bundleA" +}; + +static HapInfoParams g_infoParmsB = { + .userID = 1, + .bundleName = "ohos.privacy_test.bundleB", + .instIndex = 0, + .appIDDesc = "privacy_test.bundleB" +}; + +static HapInfoParams g_normalInfoParms = { + .userID = 1, + .bundleName = "accesstoken_test", + .instIndex = 0, + .appIDDesc = "testtesttesttest", + .apiVersion = DEFAULT_API_VERSION, + .isSystemApp = false +}; + +static HapInfoParams g_InfoParms1 = { + .userID = 1, + .bundleName = "ohos.privacy_test.bundleA", + .instIndex = 0, + .appIDDesc = "privacy_test.bundleA" +}; + +void AddPermissionUsedRecordTest::BuildQueryRequest(AccessTokenID tokenId, const std::string &deviceId, + const std::string &bundleName, const std::vector &permissionList, PermissionUsedRequest &request) +{ + request.tokenId = tokenId; + request.isRemote = false; + request.deviceId = deviceId; + request.bundleName = bundleName; + request.permissionList = permissionList; + request.beginTimeMillis = 0; + request.endTimeMillis = 0; + request.flag = FLAG_PERMISSION_USAGE_SUMMARY; +} + +void AddPermissionUsedRecordTest::CheckPermissionUsedResult(const PermissionUsedRequest& request, const PermissionUsedResult& result, + int32_t permRecordSize, int32_t totalSuccessCount, int32_t totalFailCount) +{ + int32_t successCount = 0; + int32_t failCount = 0; + ASSERT_EQ(request.tokenId, result.bundleRecords[0].tokenId); + ASSERT_EQ(request.isRemote, result.bundleRecords[0].isRemote); + ASSERT_EQ(request.deviceId, result.bundleRecords[0].deviceId); + ASSERT_EQ(request.bundleName, result.bundleRecords[0].bundleName); + ASSERT_EQ(permRecordSize, static_cast(result.bundleRecords[0].permissionRecords.size())); + for (int32_t i = 0; i < permRecordSize; i++) { + successCount += result.bundleRecords[0].permissionRecords[i].accessCount; + failCount += result.bundleRecords[0].permissionRecords[i].rejectCount; + } + ASSERT_EQ(totalSuccessCount, successCount); + ASSERT_EQ(totalFailCount, failCount); +} + +/** + * @tc.name: AddPermissionUsedRecordFuncTest001 + * @tc.desc: AddPermissionUsedRecord user_grant permission. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordFuncTest001, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + info.permissionName = "ohos.permission.WRITE_CONTACTS"; + info.successCount = 0; + info.failCount = 1; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + info.permissionName = "ohos.permission.LOCATION"; + info.successCount = 1; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + ASSERT_EQ(static_cast(1), result.bundleRecords.size()); + CheckPermissionUsedResult(request, result, 3, 2, 2); +} + +/** + * @tc.name: AddPermissionUsedRecordFuncTest002 + * @tc.desc: AddPermissionUsedRecord user_grant permission. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordFuncTest002, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + info.permissionName = "ohos.permission.LOCATION"; + info.successCount = 0; + info.failCount = 1; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + info.tokenId = g_tokenIdB; + info.permissionName = "ohos.permission.READ_CONTACTS"; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + info.permissionName = "ohos.permission.LOCATION"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + ASSERT_EQ(static_cast(1), result.bundleRecords.size()); + CheckPermissionUsedResult(request, result, 2, 1, 1); + + BuildQueryRequest(g_tokenIdB, g_infoParmsB.bundleName, permissionList, request); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + ASSERT_EQ(static_cast(1), result.bundleRecords.size()); + CheckPermissionUsedResult(request, result, 2, 1, 1); + + request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_SCREEN_LOCKED; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_SCREEN_UNLOCKED; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_APP_FOREGROUND; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_APP_BACKGROUND; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); +} + +/** + * @tc.name: AddPermissionUsedRecordFuncTest003 + * @tc.desc: AddPermissionUsedRecord permission combine records. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordFuncTest003, TestSize.Level1) +{ + SleepUtilMinuteEnd(); + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + + // <200ms, record is dropped + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + usleep(200000); // 200000us = 200ms + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + usleep(200000); // 200000us = 200ms + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); + request.flag = FLAG_PERMISSION_USAGE_DETAIL; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + ASSERT_EQ(static_cast(1), result.bundleRecords.size()); + ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords.size()); + ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[0].accessRecords.size()); + CheckPermissionUsedResult(request, result, 1, 3, 0); // records in the same minute combine to one +} + +/** + * @tc.name: AddPermissionUsedRecordFuncTest004 + * @tc.desc: query permission record detail count. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordFuncTest004, TestSize.Level1) +{ + int32_t permRecordSize = 0; + + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + permRecordSize++; + + info.permissionName = "ohos.permission.WRITE_CONTACTS"; + info.successCount = 0; + info.failCount = 2; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + permRecordSize++; + + info.permissionName = "ohos.permission.LOCATION"; + info.successCount = 3; + info.failCount = 3; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + permRecordSize++; + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); + request.flag = FLAG_PERMISSION_USAGE_DETAIL; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + ASSERT_EQ(static_cast(1), result.bundleRecords.size()); + ASSERT_EQ(permRecordSize, static_cast(result.bundleRecords[0].permissionRecords.size())); + for (int32_t i = 0; i < permRecordSize; i++) { + if (result.bundleRecords[0].permissionRecords[i].permissionName == "ohos.permission.CAMERA") { + ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].accessRecords.size()); + ASSERT_EQ(static_cast(0), result.bundleRecords[0].permissionRecords[i].rejectRecords.size()); + ASSERT_EQ(1, result.bundleRecords[0].permissionRecords[i].accessRecords[0].count); + } else if (result.bundleRecords[0].permissionRecords[i].permissionName == "ohos.permission.WRITE_CONTACTS") { + ASSERT_EQ(static_cast(0), result.bundleRecords[0].permissionRecords[i].accessRecords.size()); + ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].rejectRecords.size()); + ASSERT_EQ(2, result.bundleRecords[0].permissionRecords[i].rejectRecords[0].count); + } else if (result.bundleRecords[0].permissionRecords[i].permissionName == "ohos.permission.LOCATION") { + ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].accessRecords.size()); + ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].rejectRecords.size()); + ASSERT_EQ(3, result.bundleRecords[0].permissionRecords[i].accessRecords[0].count); + ASSERT_EQ(3, result.bundleRecords[0].permissionRecords[i].rejectRecords[0].count); + } + } +} + +/** + * @tc.name: AddPermissionUsedRecordFuncTest005 + * @tc.desc: Test AddPermissionUsedRecord with no permssion. + * @tc.type: FUNC + * @tc.require: issueI5SRUO + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordFuncTest005, TestSize.Level1) +{ + ASSERT_EQ(PrivacyError::ERR_PERMISSION_DENIED, + PrivacyKit::AddPermissionUsedRecord(g_testTokenId, "ohos.permission.CAMERA", 1, 0)); +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest001 + * @tc.desc: AddPermissionUsedRecord caller is normal app. + * @tc.type: FUNC + * @tc.require: issueI66BH3 + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest001, TestSize.Level1) +{ + AccessTokenIDEx tokenIdEx = {0}; + tokenIdEx = AccessTokenKit::AllocHapToken(g_normalInfoParms, g_policyPramsA); + ASSERT_NE(INVALID_TOKENID, tokenIdEx.tokenIDEx); + EXPECT_EQ(0, SetSelfTokenID(tokenIdEx.tokenIDEx)); + + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(PrivacyError::ERR_NOT_SYSTEM_APP, PrivacyKit::AddPermissionUsedRecord(info)); + ASSERT_EQ(0, PrivacyKit::AddPermissionUsedRecord(info, true)); +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest002 + * @tc.desc: test record cross minute not merge. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest002, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + SleepUtilMinuteEnd(); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); + request.flag = FLAG_PERMISSION_USAGE_DETAIL; + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + + ASSERT_EQ(static_cast(1), result.bundleRecords.size()); + ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords.size()); + ASSERT_EQ(static_cast(2), result.bundleRecords[0].permissionRecords[0].accessRecords.size()); +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest003 + * @tc.desc: Test AddPermissionUsedRecord with default normal used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest003, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type + + std::vector results; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); + ASSERT_EQ(PermissionUsedType::NORMAL_TYPE, results[FIRST_INDEX].type); // only normal type + results.clear(); + + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // repeat + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); + ASSERT_EQ(PermissionUsedType::NORMAL_TYPE, results[FIRST_INDEX].type); // results remain +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest004 + * @tc.desc: Test AddPermissionUsedRecord with picker used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest004, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + info.type = PermissionUsedType::PICKER_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type + + std::vector results; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); + ASSERT_EQ(PermissionUsedType::PICKER_TYPE, results[FIRST_INDEX].type); // only picker type + results.clear(); + + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // repeat + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); + ASSERT_EQ(PermissionUsedType::PICKER_TYPE, results[FIRST_INDEX].type); // results remain +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest005 + * @tc.desc: Test AddPermissionUsedRecord with security component used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest005, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type + + std::vector results; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); + ASSERT_EQ(PermissionUsedType::SECURITY_COMPONENT_TYPE, results[FIRST_INDEX].type); // only security component type + results.clear(); + + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // repeat + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); + ASSERT_EQ(PermissionUsedType::SECURITY_COMPONENT_TYPE, results[FIRST_INDEX].type); // results remain +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest006 + * @tc.desc: Test AddPermissionUsedRecord with default normal and picker used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest006, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type + + info.type = PermissionUsedType::PICKER_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type + + std::vector results; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_TWO), results.size()); + ASSERT_EQ(NORMAL_TYPE, results[FIRST_INDEX].type); // contain normal type + ASSERT_EQ(PICKER_TYPE, results[SECOND_INDEX].type); // contain picker type +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest007 + * @tc.desc: Test AddPermissionUsedRecord with default normal and security component used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest007, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type + + info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type + + std::vector results; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_TWO), results.size()); + ASSERT_EQ(NORMAL_TYPE, results[FIRST_INDEX].type); // contain normal type + ASSERT_EQ(SECURITY_COMPONENT_TYPE, results[SECOND_INDEX].type); // contain security component type +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest008 + * @tc.desc: Test AddPermissionUsedRecord with picker and security component used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest008, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + info.type = PermissionUsedType::PICKER_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type + + info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type + + std::vector results; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_TWO), results.size()); + ASSERT_EQ(PICKER_TYPE, results[FIRST_INDEX].type); // contain picker type + ASSERT_EQ(SECURITY_COMPONENT_TYPE, results[SECOND_INDEX].type); // contain security component type +} + +/** + * @tc.name: AddPermissionUsedRecordSpecsTest009 + * @tc.desc: Test AddPermissionUsedRecord with all used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordSpecsTest009, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type + + info.type = PermissionUsedType::PICKER_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type + + info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type + + std::vector results; + ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", + results)); + ASSERT_EQ(static_cast(RESULT_NUM_THREE), results.size()); + ASSERT_EQ(NORMAL_TYPE, results[FIRST_INDEX].type); // contain normal type + ASSERT_EQ(PICKER_TYPE, results[SECOND_INDEX].type); // contain picker type + ASSERT_EQ(SECURITY_COMPONENT_TYPE, results[THIRD_INDEX].type); // contain security component type +} + +/** + * @tc.name: AddPermissionUsedRecordAbnormalTest001 + * @tc.desc: AddPermissionUsedRecord with proxy is null. + * @tc.type: FUNC + * @tc.require: issueI5RWX3 issueI5RWX8 + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordAbnormalTest001, TestSize.Level1) +{ + AccessTokenID tokenId = 0xff; + std::string permissionName = "ohos.permission.CAMERA"; + int32_t successCount = 1; + int32_t failCount = 0; + int32_t ret = PrivacyKit::AddPermissionUsedRecord(tokenId, permissionName, successCount, failCount); + ASSERT_EQ(PrivacyError::ERR_SERVICE_ABNORMAL, ret); +} + +/** + * @tc.name: AddPermissionUsedRecordAbnormalTest002 + * @tc.desc: cannot AddPermissionUsedRecord with illegal tokenId and permission. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordAbnormalTest002, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = 0; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); + + info.tokenId = g_tokenIdA; + info.permissionName = ""; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); + + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = -1; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + ASSERT_EQ(static_cast(0), result.bundleRecords.size()); +} + +/** + * @tc.name: AddPermissionUsedRecordAbnormalTest003 + * @tc.desc: cannot AddPermissionUsedRecord with invalid tokenId and permission. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordAbnormalTest003, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.test"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PrivacyKit::AddPermissionUsedRecord(info)); + + info.tokenId = 672137215; // 672137215 is max native tokenId: 001 01 0 000000 11111111111111111111 + info.permissionName = "ohos.permission.CAMERA"; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); + + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 0; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_nativeToken, "", permissionList, request); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + ASSERT_EQ(static_cast(0), result.bundleRecords.size()); + + BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + ASSERT_EQ(static_cast(0), result.bundleRecords.size()); +} + +/** + * @tc.name: AddPermissionUsedRecordAbnormalTest004 + * @tc.desc: cannot AddPermissionUsedRecord with native tokenId. + * @tc.type: FUNC + * @tc.require: issueI5P4IU + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordAbnormalTest004, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_nativeToken; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); + + PermissionUsedRequest request; + PermissionUsedResult result; + std::vector permissionList; + BuildQueryRequest(g_nativeToken, "", permissionList, request); + + ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); + ASSERT_EQ(static_cast(0), result.bundleRecords.size()); +} + +/** + * @tc.name: AddPermissionUsedRecordAbnormalTest005 + * @tc.desc: Test AddPermissionUsedRecord with invalid used type + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordAbnormalTest005, TestSize.Level1) +{ + AddPermParamInfo info; + info.tokenId = g_tokenIdA; + info.permissionName = "ohos.permission.READ_CONTACTS"; + info.successCount = 1; + info.failCount = 0; + info.type = PermissionUsedType::INVALID_USED_TYPE; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); // add invalid used type +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.h b/interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.h new file mode 100644 index 000000000..a5c271d75 --- /dev/null +++ b/interfaces/innerkits/privacy/test/unittest/permission_used_record/add_permission_used_record_test.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ADD_PERMISSION_USED_RECORD_TEST_H +#define ADD_PERMISSION_USED_RECORD_TEST_H + +#include +#include + +#include "permission_used_request.h" +#include "permission_used_result.h" + + +namespace OHOS { +namespace Security { +namespace AccessToken { +class AddPermissionUsedRecordTest : public testing::Test { +public: + static void SetUpTestCase(); + + static void TearDownTestCase(); + + void SetUp(); + + void TearDown(); + std::string GetLocalDeviceUdid(); + void BuildQueryRequest(AccessTokenID tokenId, const std::string& deviceId, const std::string& bundleName, + const std::vector& permissionList, PermissionUsedRequest& request); + void CheckPermissionUsedResult(const PermissionUsedRequest& request, const PermissionUsedResult& result, + int32_t permRecordSize, int32_t totalSuccessCount, int32_t totalFailCount); +}; +} // namespace AccessToken +} // namespace Security +} // namespace OHOS +#endif //ADD_PERMISSION_USED_RECORD_TEST_H \ No newline at end of file diff --git a/interfaces/innerkits/privacy/test/unittest/privacy_mock_test/privacy_kit_test.cpp b/interfaces/innerkits/privacy/test/unittest/privacy_mock_test/privacy_kit_test.cpp index b6a39d335..e70ea6494 100644 --- a/interfaces/innerkits/privacy/test/unittest/privacy_mock_test/privacy_kit_test.cpp +++ b/interfaces/innerkits/privacy/test/unittest/privacy_mock_test/privacy_kit_test.cpp @@ -47,22 +47,6 @@ void PrivacyKitTest::TearDown() { } -/** - * @tc.name: AddPermissionUsedRecord001 - * @tc.desc: AddPermissionUsedRecord with proxy is null. - * @tc.type: FUNC - * @tc.require: issueI5RWX3 issueI5RWX8 - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord001, TestSize.Level1) -{ - AccessTokenID tokenId = 0xff; - std::string permissionName = "ohos.permission.CAMERA"; - int32_t successCount = 1; - int32_t failCount = 0; - int32_t ret = PrivacyKit::AddPermissionUsedRecord(tokenId, permissionName, successCount, failCount); - ASSERT_EQ(PrivacyError::ERR_SERVICE_ABNORMAL, ret); -} - /** * @tc.name: StartUsingPermission001 * @tc.desc: StartUsingPermission proxy is null. diff --git a/interfaces/innerkits/privacy/test/unittest/src/permission_deny_test.cpp b/interfaces/innerkits/privacy/test/unittest/src/permission_deny_test.cpp index ba30b8a57..37900f3a4 100644 --- a/interfaces/innerkits/privacy/test/unittest/src/permission_deny_test.cpp +++ b/interfaces/innerkits/privacy/test/unittest/src/permission_deny_test.cpp @@ -69,18 +69,6 @@ void PermDenyTest::TearDown() PrivacyKit::RemovePermissionUsedRecords(g_testTokenId); } -/** - * @tc.name: AddPermissionUsedRecord001 - * @tc.desc: Test AddPermissionUsedRecord with no permssion. - * @tc.type: FUNC - * @tc.require: issueI5SRUO - */ -HWTEST_F(PermDenyTest, AddPermissionUsedRecord001, TestSize.Level1) -{ - ASSERT_EQ(PrivacyError::ERR_PERMISSION_DENIED, - PrivacyKit::AddPermissionUsedRecord(g_testTokenId, "ohos.permission.CAMERA", 1, 0)); -} - /** * @tc.name: RemovePermissionUsedRecords001 * @tc.desc: Test RemovePermissionUsedRecords with no permssion. diff --git a/interfaces/innerkits/privacy/test/unittest/src/privacy_kit_test.cpp b/interfaces/innerkits/privacy/test/unittest/src/privacy_kit_test.cpp index 4ca415518..54d09a43f 100644 --- a/interfaces/innerkits/privacy/test/unittest/src/privacy_kit_test.cpp +++ b/interfaces/innerkits/privacy/test/unittest/src/privacy_kit_test.cpp @@ -345,332 +345,6 @@ static void SleepUtilMinuteEnd() sleep(sleepSeconds); } -/** - * @tc.name: AddPermissionUsedRecord001 - * @tc.desc: cannot AddPermissionUsedRecord with illegal tokenId and permission. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord001, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = 0; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); - - info.tokenId = g_tokenIdA; - info.permissionName = ""; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); - - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = -1; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - ASSERT_EQ(static_cast(0), result.bundleRecords.size()); -} - -/** - * @tc.name: AddPermissionUsedRecord002 - * @tc.desc: cannot AddPermissionUsedRecord with invalid tokenId and permission. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord002, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.test"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PrivacyKit::AddPermissionUsedRecord(info)); - - info.tokenId = 672137215; // 672137215 is max native tokenId: 001 01 0 000000 11111111111111111111 - info.permissionName = "ohos.permission.CAMERA"; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); - - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 0; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_nativeToken, "", permissionList, request); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - ASSERT_EQ(static_cast(0), result.bundleRecords.size()); - - BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - ASSERT_EQ(static_cast(0), result.bundleRecords.size()); -} - -/** - * @tc.name: AddPermissionUsedRecord003 - * @tc.desc: cannot AddPermissionUsedRecord with native tokenId. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord003, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_nativeToken; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_nativeToken, "", permissionList, request); - - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - ASSERT_EQ(static_cast(0), result.bundleRecords.size()); -} - -/** - * @tc.name: AddPermissionUsedRecord004 - * @tc.desc: AddPermissionUsedRecord user_grant permission. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord004, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - info.permissionName = "ohos.permission.WRITE_CONTACTS"; - info.successCount = 0; - info.failCount = 1; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - info.permissionName = "ohos.permission.LOCATION"; - info.successCount = 1; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - ASSERT_EQ(static_cast(1), result.bundleRecords.size()); - CheckPermissionUsedResult(request, result, 3, 2, 2); -} - -/** - * @tc.name: AddPermissionUsedRecord005 - * @tc.desc: AddPermissionUsedRecord user_grant permission. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord005, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - info.permissionName = "ohos.permission.LOCATION"; - info.successCount = 0; - info.failCount = 1; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - info.tokenId = g_tokenIdB; - info.permissionName = "ohos.permission.READ_CONTACTS"; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - info.permissionName = "ohos.permission.LOCATION"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - ASSERT_EQ(static_cast(1), result.bundleRecords.size()); - CheckPermissionUsedResult(request, result, 2, 1, 1); - - BuildQueryRequest(g_tokenIdB, g_infoParmsB.bundleName, permissionList, request); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - ASSERT_EQ(static_cast(1), result.bundleRecords.size()); - CheckPermissionUsedResult(request, result, 2, 1, 1); - - request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_SCREEN_LOCKED; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_SCREEN_UNLOCKED; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_APP_FOREGROUND; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - request.flag = FLAG_PERMISSION_USAGE_SUMMARY_IN_APP_BACKGROUND; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); -} - -/** - * @tc.name: AddPermissionUsedRecord006 - * @tc.desc: AddPermissionUsedRecord permission combine records. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord006, TestSize.Level1) -{ - SleepUtilMinuteEnd(); - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - - // <200ms, record is dropped - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - usleep(200000); // 200000us = 200ms - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - usleep(200000); // 200000us = 200ms - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); - request.flag = FLAG_PERMISSION_USAGE_DETAIL; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - ASSERT_EQ(static_cast(1), result.bundleRecords.size()); - ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords.size()); - ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[0].accessRecords.size()); - CheckPermissionUsedResult(request, result, 1, 3, 0); // records in the same minute combine to one -} - -/** - * @tc.name: AddPermissionUsedRecord008 - * @tc.desc: AddPermissionUsedRecord caller is normal app. - * @tc.type: FUNC - * @tc.require: issueI66BH3 - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord008, TestSize.Level1) -{ - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_normalInfoParms, g_policyPramsA); - ASSERT_NE(INVALID_TOKENID, tokenIdEx.tokenIDEx); - EXPECT_EQ(0, SetSelfTokenID(tokenIdEx.tokenIDEx)); - - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(PrivacyError::ERR_NOT_SYSTEM_APP, PrivacyKit::AddPermissionUsedRecord(info)); - ASSERT_EQ(0, PrivacyKit::AddPermissionUsedRecord(info, true)); -} - -/** - * @tc.name: AddPermissionUsedRecord009 - * @tc.desc: query permission record detail count. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord009, TestSize.Level1) -{ - int32_t permRecordSize = 0; - - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - permRecordSize++; - - info.permissionName = "ohos.permission.WRITE_CONTACTS"; - info.successCount = 0; - info.failCount = 2; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - permRecordSize++; - - info.permissionName = "ohos.permission.LOCATION"; - info.successCount = 3; - info.failCount = 3; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - permRecordSize++; - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); - request.flag = FLAG_PERMISSION_USAGE_DETAIL; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - ASSERT_EQ(static_cast(1), result.bundleRecords.size()); - ASSERT_EQ(permRecordSize, static_cast(result.bundleRecords[0].permissionRecords.size())); - for (int32_t i = 0; i < permRecordSize; i++) { - if (result.bundleRecords[0].permissionRecords[i].permissionName == "ohos.permission.CAMERA") { - ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].accessRecords.size()); - ASSERT_EQ(static_cast(0), result.bundleRecords[0].permissionRecords[i].rejectRecords.size()); - ASSERT_EQ(1, result.bundleRecords[0].permissionRecords[i].accessRecords[0].count); - } else if (result.bundleRecords[0].permissionRecords[i].permissionName == "ohos.permission.WRITE_CONTACTS") { - ASSERT_EQ(static_cast(0), result.bundleRecords[0].permissionRecords[i].accessRecords.size()); - ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].rejectRecords.size()); - ASSERT_EQ(2, result.bundleRecords[0].permissionRecords[i].rejectRecords[0].count); - } else if (result.bundleRecords[0].permissionRecords[i].permissionName == "ohos.permission.LOCATION") { - ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].accessRecords.size()); - ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords[i].rejectRecords.size()); - ASSERT_EQ(3, result.bundleRecords[0].permissionRecords[i].accessRecords[0].count); - ASSERT_EQ(3, result.bundleRecords[0].permissionRecords[i].rejectRecords[0].count); - } - } -} - -/** - * @tc.name: AddPermissionUsedRecord010 - * @tc.desc: test record cross minute not merge. - * @tc.type: FUNC - * @tc.require: issueI5P4IU - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord010, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - SleepUtilMinuteEnd(); - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::AddPermissionUsedRecord(info)); - - PermissionUsedRequest request; - PermissionUsedResult result; - std::vector permissionList; - BuildQueryRequest(g_tokenIdA, g_infoParmsA.bundleName, permissionList, request); - request.flag = FLAG_PERMISSION_USAGE_DETAIL; - ASSERT_EQ(RET_NO_ERROR, PrivacyKit::GetPermissionUsedRecords(request, result)); - - ASSERT_EQ(static_cast(1), result.bundleRecords.size()); - ASSERT_EQ(static_cast(1), result.bundleRecords[0].permissionRecords.size()); - ASSERT_EQ(static_cast(2), result.bundleRecords[0].permissionRecords[0].accessRecords.size()); -} - /** * @tc.name: RemovePermissionUsedRecords001 * @tc.desc: cannot RemovePermissionUsedRecords with illegal tokenId. @@ -1945,221 +1619,6 @@ HWTEST_F(PrivacyKitTest, GetSpecialSecCompEnhance001, TestSize.Level1) } #endif -/** - * @tc.name: AddPermissionUsedRecord011 - * @tc.desc: Test AddPermissionUsedRecord with default normal used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord011, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type - - std::vector results; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); - ASSERT_EQ(PermissionUsedType::NORMAL_TYPE, results[FIRST_INDEX].type); // only normal type - results.clear(); - - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // repeat - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); - ASSERT_EQ(PermissionUsedType::NORMAL_TYPE, results[FIRST_INDEX].type); // results remain -} - -/** - * @tc.name: AddPermissionUsedRecord012 - * @tc.desc: Test AddPermissionUsedRecord with picker used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord012, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - info.type = PermissionUsedType::PICKER_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type - - std::vector results; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); - ASSERT_EQ(PermissionUsedType::PICKER_TYPE, results[FIRST_INDEX].type); // only picker type - results.clear(); - - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // repeat - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); - ASSERT_EQ(PermissionUsedType::PICKER_TYPE, results[FIRST_INDEX].type); // results remain -} - -/** - * @tc.name: AddPermissionUsedRecord013 - * @tc.desc: Test AddPermissionUsedRecord with security component used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord013, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type - - std::vector results; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); - ASSERT_EQ(PermissionUsedType::SECURITY_COMPONENT_TYPE, results[FIRST_INDEX].type); // only security component type - results.clear(); - - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // repeat - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_ONE), results.size()); - ASSERT_EQ(PermissionUsedType::SECURITY_COMPONENT_TYPE, results[FIRST_INDEX].type); // results remain -} - -/** - * @tc.name: AddPermissionUsedRecord014 - * @tc.desc: Test AddPermissionUsedRecord with default normal and picker used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord014, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type - - info.type = PermissionUsedType::PICKER_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type - - std::vector results; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_TWO), results.size()); - ASSERT_EQ(NORMAL_TYPE, results[FIRST_INDEX].type); // contain normal type - ASSERT_EQ(PICKER_TYPE, results[SECOND_INDEX].type); // contain picker type -} - -/** - * @tc.name: AddPermissionUsedRecord015 - * @tc.desc: Test AddPermissionUsedRecord with default normal and security component used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord015, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type - - info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type - - std::vector results; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_TWO), results.size()); - ASSERT_EQ(NORMAL_TYPE, results[FIRST_INDEX].type); // contain normal type - ASSERT_EQ(SECURITY_COMPONENT_TYPE, results[SECOND_INDEX].type); // contain security component type -} - -/** - * @tc.name: AddPermissionUsedRecord016 - * @tc.desc: Test AddPermissionUsedRecord with picker and security component used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord016, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - info.type = PermissionUsedType::PICKER_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type - - info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type - - std::vector results; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_TWO), results.size()); - ASSERT_EQ(PICKER_TYPE, results[FIRST_INDEX].type); // contain picker type - ASSERT_EQ(SECURITY_COMPONENT_TYPE, results[SECOND_INDEX].type); // contain security component type -} - -/** - * @tc.name: AddPermissionUsedRecord017 - * @tc.desc: Test AddPermissionUsedRecord with all used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord017, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add normal used type - - info.type = PermissionUsedType::PICKER_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add picker used type - - info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::AddPermissionUsedRecord(info)); // add security component used type - - std::vector results; - ASSERT_EQ(RET_SUCCESS, PrivacyKit::GetPermissionUsedTypeInfos(g_tokenIdA, "ohos.permission.READ_CONTACTS", - results)); - ASSERT_EQ(static_cast(RESULT_NUM_THREE), results.size()); - ASSERT_EQ(NORMAL_TYPE, results[FIRST_INDEX].type); // contain normal type - ASSERT_EQ(PICKER_TYPE, results[SECOND_INDEX].type); // contain picker type - ASSERT_EQ(SECURITY_COMPONENT_TYPE, results[THIRD_INDEX].type); // contain security component type -} - -/** - * @tc.name: AddPermissionUsedRecord018 - * @tc.desc: Test AddPermissionUsedRecord with invalid used type - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrivacyKitTest, AddPermissionUsedRecord018, TestSize.Level1) -{ - AddPermParamInfo info; - info.tokenId = g_tokenIdA; - info.permissionName = "ohos.permission.READ_CONTACTS"; - info.successCount = 1; - info.failCount = 0; - info.type = PermissionUsedType::INVALID_USED_TYPE; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PrivacyKit::AddPermissionUsedRecord(info)); // add invalid used type -} - /** * @tc.name: GetPermissionUsedTypeInfos001 * @tc.desc: Test GetPermissionUsedTypeInfos with default input diff --git a/services/privacymanager/test/unittest/BUILD.gn b/services/privacymanager/test/unittest/BUILD.gn index 1fe0d7e8b..97e3a76b6 100644 --- a/services/privacymanager/test/unittest/BUILD.gn +++ b/services/privacymanager/test/unittest/BUILD.gn @@ -65,6 +65,7 @@ if (is_standard_system && ability_base_enable == true) { "../../src/sensitive/camera_manager/camera_manager_adapter.cpp", "../../src/service/privacy_manager_service.cpp", "../../src/service/privacy_manager_stub.cpp", + "add_permission_used_record_test.cpp", "permission_record_db_test.cpp", "permission_record_manager_test.cpp", "privacy_manager_service_test.cpp", diff --git a/services/privacymanager/test/unittest/add_permission_used_record_test.cpp b/services/privacymanager/test/unittest/add_permission_used_record_test.cpp new file mode 100644 index 000000000..73f42f716 --- /dev/null +++ b/services/privacymanager/test/unittest/add_permission_used_record_test.cpp @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2022-2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include + +#include "accesstoken_kit.h" +#include "permission_record.h" +#define private public +#include "permission_record_manager.h" +#undef private +#include "privacy_error.h" + + +using namespace testing; +using namespace testing::ext; +using namespace OHOS; + +namespace OHOS { +namespace Security { +namespace AccessToken { +namespace { + + +static HapInfoParams g_InfoParms1 = { + .userID = 1, + .bundleName = "ohos.privacy_test.bundleA", + .instIndex = 0, + .appIDDesc = "privacy_test.bundleA" +}; +} + +class AddPermissionUsedRecordTest : public testing::Test { +public: + static void SetUpTestCase(); + + static void TearDownTestCase(); + + void SetUp(); + + void TearDown(); + + std::shared_ptr appStateObserver_ = nullptr; +}; + +void AddPermissionUsedRecordTest::SetUpTestCase() +{ + +} + +void AddPermissionUsedRecordTest::TearDownTestCase() +{ + +} + +void AddPermissionUsedRecordTest::SetUp() +{ + +} + +void AddPermissionUsedRecordTest::TearDown() +{ + +} +/* + * @tc.name: AddPermissionUsedRecordAbnormalTest001 + * @tc.desc: PermissionRecordManager::AddPermissionUsedRecord function test + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordAbnormalTest001, TestSize.Level1) +{ + AccessTokenID tokenId = AccessTokenKit::GetHapTokenID(g_InfoParms1.userID, g_InfoParms1.bundleName, + g_InfoParms1.instIndex); + ASSERT_NE(static_cast(0), tokenId); + + AddPermParamInfo info; + info.tokenId = tokenId; + info.permissionName = "com.ohos.test"; + info.successCount = 1; + info.failCount = 0; + + ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PermissionRecordManager::GetInstance().AddPermissionUsedRecord( + info)); // invaild permission error + + info.type = PermissionUsedType::PICKER_TYPE; + ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PermissionRecordManager::GetInstance().AddPermissionUsedRecord( + info)); // invaild permission error + + info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; + ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PermissionRecordManager::GetInstance().AddPermissionUsedRecord( + info)); // invaild permission error +} + +/* + * @tc.name: AddPermissionUsedRecordAbnormalTest002 + * @tc.desc: PermissionRecordManager::AddPermissionUsedRecord function test + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AddPermissionUsedRecordTest, AddPermissionUsedRecordAbnormalTest002, TestSize.Level1) +{ + AccessTokenID tokenId = AccessTokenKit::GetHapTokenID(g_InfoParms1.userID, g_InfoParms1.bundleName, + g_InfoParms1.instIndex); + ASSERT_NE(static_cast(0), tokenId); + + AddPermParamInfo info; + info.tokenId = tokenId; + info.permissionName = "com.permission.READ_MEDIA"; + info.successCount = 0; + info.failCount = 0; + ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PermissionRecordManager::GetInstance().AddPermissionUsedRecord(info)); +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/services/privacymanager/test/unittest/permission_record_manager_test.cpp b/services/privacymanager/test/unittest/permission_record_manager_test.cpp index 9e3b06a65..af10a7ac1 100644 --- a/services/privacymanager/test/unittest/permission_record_manager_test.cpp +++ b/services/privacymanager/test/unittest/permission_record_manager_test.cpp @@ -723,56 +723,6 @@ HWTEST_F(PermissionRecordManagerTest, TransferOpcodeToPermission001, TestSize.Le ASSERT_EQ(false, Constant::TransferOpcodeToPermission(opCode, permissionName)); } -/* - * @tc.name: AddPermissionUsedRecord001 - * @tc.desc: PermissionRecordManager::AddPermissionUsedRecord function test - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PermissionRecordManagerTest, AddPermissionUsedRecord001, TestSize.Level1) -{ - AccessTokenID tokenId = AccessTokenKit::GetHapTokenID(g_InfoParms1.userID, g_InfoParms1.bundleName, - g_InfoParms1.instIndex); - ASSERT_NE(static_cast(0), tokenId); - - AddPermParamInfo info; - info.tokenId = tokenId; - info.permissionName = "com.ohos.test"; - info.successCount = 1; - info.failCount = 0; - - ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PermissionRecordManager::GetInstance().AddPermissionUsedRecord( - info)); // invaild permission error - - info.type = PermissionUsedType::PICKER_TYPE; - ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PermissionRecordManager::GetInstance().AddPermissionUsedRecord( - info)); // invaild permission error - - info.type = PermissionUsedType::SECURITY_COMPONENT_TYPE; - ASSERT_EQ(PrivacyError::ERR_PERMISSION_NOT_EXIST, PermissionRecordManager::GetInstance().AddPermissionUsedRecord( - info)); // invaild permission error -} - -/* - * @tc.name: AddPermissionUsedRecord002 - * @tc.desc: PermissionRecordManager::AddPermissionUsedRecord function test - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PermissionRecordManagerTest, AddPermissionUsedRecord002, TestSize.Level1) -{ - AccessTokenID tokenId = AccessTokenKit::GetHapTokenID(g_InfoParms1.userID, g_InfoParms1.bundleName, - g_InfoParms1.instIndex); - ASSERT_NE(static_cast(0), tokenId); - - AddPermParamInfo info; - info.tokenId = tokenId; - info.permissionName = "com.permission.READ_MEDIA"; - info.successCount = 0; - info.failCount = 0; - ASSERT_EQ(PrivacyError::ERR_PARAM_INVALID, PermissionRecordManager::GetInstance().AddPermissionUsedRecord(info)); -} - /* * @tc.name: RemovePermissionUsedRecords001 * @tc.desc: PermissionRecordManager::RemovePermissionUsedRecords function test -- Gitee