From ccff1d56697669af72a12bae3d293cbde9ac3d3a Mon Sep 17 00:00:00 2001 From: dingqiaoqiao Date: Fri, 23 May 2025 14:14:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9tdd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dingqiaoqiao Change-Id: I9665f7c4a2e6e4525cbead896006531a59c28a49 --- .../request_permission_on_setting_test.cpp | 14 -- .../SaTest/get_native_token_id_test.cpp | 5 +- interfaces/innerkits/privacy/BUILD.gn | 4 - .../test/unittest/src/privacy_kit_test.cpp | 26 +-- .../permission_manager_coverage_test.cpp | 10 +- .../accesstoken_info_manager_test.cpp | 8 +- .../accesstoken_manager_service_test.cpp | 12 +- .../privacymanager/test/unittest/BUILD.gn | 1 + .../active_status_callback_manager_test.cpp | 151 ++++++++++++++++++ 9 files changed, 185 insertions(+), 46 deletions(-) create mode 100644 services/privacymanager/test/unittest/active_status_callback_manager_test.cpp diff --git a/interfaces/innerkits/accesstoken/test/unittest/PermisionDialogTest/request_permission_on_setting_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/PermisionDialogTest/request_permission_on_setting_test.cpp index 120bfdee8..d866dc37d 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/PermisionDialogTest/request_permission_on_setting_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/PermisionDialogTest/request_permission_on_setting_test.cpp @@ -122,20 +122,6 @@ HWTEST_F(RequestPermissionOnSettingTest, RequestAppPermOnSettingTest003, TestSiz EXPECT_EQ(RET_SUCCESS, TestCommon::DeleteTestHapToken(tokenID)); } - -/** - * @tc.name: RequestAppPermOnSettingTest004 - * @tc.desc: RequestAppPermOnSetting call function with self token. - * @tc.type: FUNC - * @tc.require: Issue Number - */ -HWTEST_F(RequestPermissionOnSettingTest, RequestAppPermOnSettingTest004, TestSize.Level0) -{ - std::vector reqPerm; - MockHapToken mock("RequestAppPermOnSettingTest004", reqPerm, true); - - AccessTokenKit::RequestAppPermOnSetting(GetSelfTokenID()); -} } // namespace AccessToken } // namespace Security } // namespace OHOS diff --git a/interfaces/innerkits/accesstoken/test/unittest/SaTest/get_native_token_id_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/SaTest/get_native_token_id_test.cpp index 9022d861f..9e4571eb7 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/SaTest/get_native_token_id_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/SaTest/get_native_token_id_test.cpp @@ -67,11 +67,12 @@ void GetNativeTokenIdTest::TearDown() HWTEST_F(GetNativeTokenIdTest, GetNativeTokenIdAbnormalTest001, TestSize.Level0) { LOGI(ATM_DOMAIN, ATM_TAG, "GetNativeTokenIdAbnormalTest001"); + MockNativeToken mock("accesstoken_service"); std::string processName = ""; - ASSERT_EQ(INVALID_TOKENID, AccessTokenKit::GetNativeTokenId(processName)); + EXPECT_EQ(INVALID_TOKENID, AccessTokenKit::GetNativeTokenId(processName)); processName = "invalid processName"; - ASSERT_EQ(INVALID_TOKENID, AccessTokenKit::GetNativeTokenId(processName)); + EXPECT_EQ(INVALID_TOKENID, AccessTokenKit::GetNativeTokenId(processName)); } /** diff --git a/interfaces/innerkits/privacy/BUILD.gn b/interfaces/innerkits/privacy/BUILD.gn index b0604152e..d1ae53460 100644 --- a/interfaces/innerkits/privacy/BUILD.gn +++ b/interfaces/innerkits/privacy/BUILD.gn @@ -85,9 +85,5 @@ if (is_standard_system) { "-DHILOG_ENABLE", "-DDEBUG_API_PERFORMANCE", ] - - if (build_variant == "user") { - cflags_cc += [ "-DATM_BUILD_VARIANT_USER_ENABLE" ] - } } } 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 2aef3adb5..47e947c07 100644 --- a/interfaces/innerkits/privacy/test/unittest/src/privacy_kit_test.cpp +++ b/interfaces/innerkits/privacy/test/unittest/src/privacy_kit_test.cpp @@ -2698,18 +2698,18 @@ HWTEST_F(PrivacyKitTest, SetHapWithFGReminder01, TestSize.Level0) EXPECT_EQ(true, TransferPermissionToOpcode("ohos.permission.SET_FOREGROUND_HAP_REMINDER", opCode1)); EXPECT_EQ(true, TransferPermissionToOpcode("ohos.permission.PERMISSION_USED_STATS", opCode2)); - ASSERT_EQ(RET_SUCCESS, AddPermissionToKernel(tokenTest, {opCode1, opCode2}, {1, 1})); + EXPECT_EQ(RET_SUCCESS, AddPermissionToKernel(tokenTest, {opCode1, opCode2}, {1, 1})); EXPECT_EQ(0, SetSelfTokenID(tokenIdEx.tokenIDEx)); std::string permissionName = "ohos.permission.MICROPHONE"; - ASSERT_EQ(false, PrivacyKit::IsAllowedUsingPermission(g_tokenIdE, permissionName)); - ASSERT_EQ(RET_SUCCESS, PrivacyKit::SetHapWithFGReminder(g_tokenIdE, true)); - ASSERT_EQ(true, PrivacyKit::IsAllowedUsingPermission(g_tokenIdE, permissionName)); - ASSERT_EQ(RET_SUCCESS, PrivacyKit::SetHapWithFGReminder(g_tokenIdE, false)); + EXPECT_EQ(false, PrivacyKit::IsAllowedUsingPermission(g_tokenIdE, permissionName)); + EXPECT_EQ(RET_SUCCESS, PrivacyKit::SetHapWithFGReminder(g_tokenIdE, true)); + EXPECT_EQ(true, PrivacyKit::IsAllowedUsingPermission(g_tokenIdE, permissionName)); + EXPECT_EQ(RET_SUCCESS, PrivacyKit::SetHapWithFGReminder(g_tokenIdE, false)); - ASSERT_EQ(RET_SUCCESS, RemovePermissionFromKernel(tokenIdEx.tokenIDEx)); - ASSERT_EQ(RET_SUCCESS, PrivacyTestCommon::DeleteTestHapToken(tokenTest)); + EXPECT_EQ(RET_SUCCESS, RemovePermissionFromKernel(tokenIdEx.tokenIDEx)); + EXPECT_EQ(RET_SUCCESS, PrivacyTestCommon::DeleteTestHapToken(tokenTest)); setuid(selfUid); EXPECT_EQ(RET_SUCCESS, SetSelfTokenID(selfTokenId)); @@ -2733,16 +2733,16 @@ HWTEST_F(PrivacyKitTest, SetHapWithFGReminder02, TestSize.Level0) EXPECT_EQ(true, TransferPermissionToOpcode("ohos.permission.SET_FOREGROUND_HAP_REMINDER", opCode1)); EXPECT_EQ(true, TransferPermissionToOpcode("ohos.permission.PERMISSION_USED_STATS", opCode2)); int32_t res = AddPermissionToKernel(tokenTest, {opCode1, opCode2}, {1, 1}); - ASSERT_EQ(res, 0); + EXPECT_EQ(res, 0); EXPECT_EQ(0, SetSelfTokenID(tokenTest)); - ASSERT_EQ(RET_SUCCESS, PrivacyKit::SetHapWithFGReminder(g_tokenIdE, true)); - ASSERT_EQ(PrivacyKit::SetHapWithFGReminder(g_tokenIdE, true), PrivacyError::ERR_PARAM_INVALID); - ASSERT_EQ(PrivacyKit::SetHapWithFGReminder(g_tokenIdE, false), 0); - ASSERT_EQ(PrivacyKit::SetHapWithFGReminder(g_tokenIdE, false), PrivacyError::ERR_PARAM_INVALID); + EXPECT_EQ(RET_SUCCESS, PrivacyKit::SetHapWithFGReminder(g_tokenIdE, true)); + EXPECT_EQ(PrivacyKit::SetHapWithFGReminder(g_tokenIdE, true), PrivacyError::ERR_PARAM_INVALID); + EXPECT_EQ(PrivacyKit::SetHapWithFGReminder(g_tokenIdE, false), 0); + EXPECT_EQ(PrivacyKit::SetHapWithFGReminder(g_tokenIdE, false), PrivacyError::ERR_PARAM_INVALID); - ASSERT_EQ(RET_SUCCESS, RemovePermissionFromKernel(tokenTest)); + EXPECT_EQ(RET_SUCCESS, RemovePermissionFromKernel(tokenTest)); setuid(selfUid); EXPECT_EQ(RET_SUCCESS, SetSelfTokenID(selfTokenId)); diff --git a/services/accesstokenmanager/test/coverage/permission_manager_coverage_test.cpp b/services/accesstokenmanager/test/coverage/permission_manager_coverage_test.cpp index e4529d6b8..3f2a6a5b1 100644 --- a/services/accesstokenmanager/test/coverage/permission_manager_coverage_test.cpp +++ b/services/accesstokenmanager/test/coverage/permission_manager_coverage_test.cpp @@ -100,15 +100,15 @@ HWTEST_F(PermissionManagerCoverageTest, RegisterAddObserverTest001, TestSize.Lev AccessTokenID nativeToken = AccessTokenInfoManager::GetInstance().GetNativeTokenId("privacy_service"); EXPECT_EQ(RET_SUCCESS, SetSelfTokenID(nativeToken)); sptr formStateObserver = new (std::nothrow) FormStateObserverStub(); - ASSERT_NE(formStateObserver, nullptr); - ASSERT_EQ(RET_SUCCESS, + EXPECT_NE(formStateObserver, nullptr); + EXPECT_EQ(RET_SUCCESS, FormManagerAccessClient::GetInstance().RegisterAddObserver(FORM_VISIBLE_NAME, formStateObserver)); - ASSERT_EQ(RET_FAILED, + EXPECT_EQ(RET_FAILED, FormManagerAccessClient::GetInstance().RegisterAddObserver(FORM_VISIBLE_NAME, nullptr)); - ASSERT_EQ(RET_FAILED, + EXPECT_EQ(RET_FAILED, FormManagerAccessClient::GetInstance().RegisterRemoveObserver(FORM_VISIBLE_NAME, nullptr)); - ASSERT_EQ(RET_SUCCESS, + EXPECT_EQ(RET_SUCCESS, FormManagerAccessClient::GetInstance().RegisterRemoveObserver(FORM_VISIBLE_NAME, formStateObserver)); EXPECT_EQ(RET_SUCCESS, SetSelfTokenID(selfTokenId)); } diff --git a/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp b/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp index 01cb1666a..bfcbaa947 100644 --- a/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp +++ b/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp @@ -1539,12 +1539,12 @@ HWTEST_F(AccessTokenInfoManagerTest, DumpTokenInfo004, TestSize.Level0) } /** - * @tc.name: DumpTokenInfo006 + * @tc.name: DumpTokenInfo005 * @tc.desc: Test DumpTokenInfo with native processName. * @tc.type: FUNC * @tc.require: issueI4V02P */ -HWTEST_F(AccessTokenInfoManagerTest, DumpTokenInfo006, TestSize.Level0) +HWTEST_F(AccessTokenInfoManagerTest, DumpTokenInfo005, TestSize.Level0) { std::string dumpInfo; AtmToolsParamInfo info; @@ -1554,12 +1554,12 @@ HWTEST_F(AccessTokenInfoManagerTest, DumpTokenInfo006, TestSize.Level0) } /** - * @tc.name: DumpTokenInfo007 + * @tc.name: DumpTokenInfo006 * @tc.desc: Test DumpTokenInfo with hap bundleName. * @tc.type: FUNC * @tc.require: issueI4V02P */ -HWTEST_F(AccessTokenInfoManagerTest, DumpTokenInfo007, TestSize.Level0) +HWTEST_F(AccessTokenInfoManagerTest, DumpTokenInfo006, TestSize.Level0) { AccessTokenIDEx tokenIdEx = {0}; std::vector undefValues; diff --git a/services/accesstokenmanager/test/unittest/accesstoken_manager_service_test.cpp b/services/accesstokenmanager/test/unittest/accesstoken_manager_service_test.cpp index 83253f22c..f2a095172 100644 --- a/services/accesstokenmanager/test/unittest/accesstoken_manager_service_test.cpp +++ b/services/accesstokenmanager/test/unittest/accesstoken_manager_service_test.cpp @@ -123,20 +123,24 @@ HWTEST_F(AccessTokenManagerServiceTest, DumpTokenInfoFuncTest001, TestSize.Level AtmToolsParamInfoParcel infoParcel; infoParcel.info.processName = "hdcd"; + bool state = system::GetBoolParameter(DEVELOPER_MODE_STATE, false); + system::SetBoolParameter(DEVELOPER_MODE_STATE, false); bool ret = system::GetBoolParameter(DEVELOPER_MODE_STATE, false); - ASSERT_FALSE(ret); + EXPECT_FALSE(ret); std::shared_ptr atManagerService_ = DelayedSingleton::GetInstance(); atManagerService_->DumpTokenInfo(infoParcel, dumpInfo); - ASSERT_EQ("Developer mode not support.", dumpInfo); + EXPECT_EQ("Developer mode not support.", dumpInfo); system::SetBoolParameter(DEVELOPER_MODE_STATE, true); ret = system::GetBoolParameter(DEVELOPER_MODE_STATE, false); - ASSERT_TRUE(ret); + EXPECT_TRUE(ret); atManagerService_->DumpTokenInfo(infoParcel, dumpInfo); - ASSERT_NE("", dumpInfo); + EXPECT_NE("", dumpInfo); + + system::SetBoolParameter(DEVELOPER_MODE_STATE, state); } void AccessTokenManagerServiceTest::CreateHapToken(const HapInfoParcel& infoParCel, const HapPolicyParcel& policyParcel, diff --git a/services/privacymanager/test/unittest/BUILD.gn b/services/privacymanager/test/unittest/BUILD.gn index dadd68779..c7e4cb58d 100644 --- a/services/privacymanager/test/unittest/BUILD.gn +++ b/services/privacymanager/test/unittest/BUILD.gn @@ -70,6 +70,7 @@ if (is_standard_system && ability_base_enable == true) { "../../src/sensitive/audio_manager/audio_manager_adapter.cpp", "../../src/sensitive/camera_manager/camera_manager_adapter.cpp", "../../src/service/privacy_manager_service.cpp", + "active_status_callback_manager_test.cpp", "permission_record_db_test.cpp", "permission_record_manager_test.cpp", "permission_record_set_test.cpp", diff --git a/services/privacymanager/test/unittest/active_status_callback_manager_test.cpp b/services/privacymanager/test/unittest/active_status_callback_manager_test.cpp new file mode 100644 index 000000000..a726bc8b0 --- /dev/null +++ b/services/privacymanager/test/unittest/active_status_callback_manager_test.cpp @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2025 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 +#define private public +#include "active_status_callback_manager.h" +#undef private +#include "perm_active_status_change_callback_stub.h" +#include "privacy_error.h" +#include "token_setproc.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Security { +namespace AccessToken { +namespace { +static bool g_isAddSucc = true; +} + +class ActiveStatusCallbackManagerTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +void ActiveStatusCallbackManagerTest::SetUpTestCase() +{ +} + +void ActiveStatusCallbackManagerTest::TearDownTestCase() +{ +} + +void ActiveStatusCallbackManagerTest::SetUp() +{ +} + +void ActiveStatusCallbackManagerTest::TearDown() +{ +} + +class PermActiveStatusChangeCallbackTest : public PermActiveStatusChangeCallbackStub { +public: + PermActiveStatusChangeCallbackTest() = default; + virtual ~PermActiveStatusChangeCallbackTest() = default; + + void ActiveStatusChangeCallback(ActiveChangeResponse& result) override; + bool AddDeathRecipient(const sptr& deathRecipient) override; + bool IsProxyObject() const override + { + return true; + }; +}; + +void PermActiveStatusChangeCallbackTest::ActiveStatusChangeCallback(ActiveChangeResponse& result) +{ +} + +bool PermActiveStatusChangeCallbackTest::AddDeathRecipient(const sptr& deathRecipient) +{ + return g_isAddSucc == true ? true : false; +} + +class PermActiveStatusChangeCallbackTest1 : public PermActiveStatusChangeCallbackStub { +public: + PermActiveStatusChangeCallbackTest1() = default; + virtual ~PermActiveStatusChangeCallbackTest1() = default; + + void ActiveStatusChangeCallback(ActiveChangeResponse& result) override; +}; + +void PermActiveStatusChangeCallbackTest1::ActiveStatusChangeCallback(ActiveChangeResponse& result) +{ +} + +/* + * @tc.name: AddCallback001 + * @tc.desc: AddCallback mock function test + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(ActiveStatusCallbackManagerTest, AddCallback001, TestSize.Level0) +{ + // backup + bool temp = g_isAddSucc; + std::vector callbackDataList = ActiveStatusCallbackManager::GetInstance().callbackDataList_; + ActiveStatusCallbackManager::GetInstance().callbackDataList_.clear(); + + sptr callback; + std::vector permList; + permList.emplace_back("ohos.permission.CAMERA"); + + int32_t ret = ActiveStatusCallbackManager::GetInstance().AddCallback(GetSelfTokenID(), permList, callback); + EXPECT_EQ(ret, ERR_PARAM_INVALID); + + wptr remote = new (std::nothrow) PermActiveStatusChangeCallbackTest(); + callback = remote.promote(); + ret = ActiveStatusCallbackManager::GetInstance().AddCallback(GetSelfTokenID(), permList, callback); + EXPECT_EQ(ret, RET_SUCCESS); + + g_isAddSucc = false; + ret = ActiveStatusCallbackManager::GetInstance().AddCallback(GetSelfTokenID(), permList, callback); + EXPECT_EQ(ret, ERR_ADD_DEATH_RECIPIENT_FAILED); + + // recovery + g_isAddSucc = temp; + ActiveStatusCallbackManager::GetInstance().callbackDataList_ = callbackDataList; +} + +/* + * @tc.name: AddCallback002 + * @tc.desc: AddCallback function test + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(ActiveStatusCallbackManagerTest, AddCallback002, TestSize.Level0) +{ + // backup + std::vector callbackDataList = ActiveStatusCallbackManager::GetInstance().callbackDataList_; + ActiveStatusCallbackManager::GetInstance().callbackDataList_.clear(); + + sptr callback; + std::vector permList; + permList.emplace_back("ohos.permission.CAMERA"); + + wptr remote = new (std::nothrow) PermActiveStatusChangeCallbackTest1(); + callback = remote.promote(); + int32_t ret = ActiveStatusCallbackManager::GetInstance().AddCallback(GetSelfTokenID(), permList, callback); + EXPECT_EQ(ret, RET_SUCCESS); + + // recovery + ActiveStatusCallbackManager::GetInstance().callbackDataList_ = callbackDataList; +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS -- Gitee