From 547b679e2a89882c4b07d90c3d5c5cd6e0612c05 Mon Sep 17 00:00:00 2001 From: dingqiaoqiao Date: Thu, 19 Dec 2024 09:55:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=A1=A5=E5=85=85tdd=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dingqiaoqiao Change-Id: I8cb4071049c840c03c2b3c2c4ca9fbff6334d490 --- .../innerkits/accesstoken/test/BUILD.gn | 3 + .../set_remote_hap_token_info_test.cpp | 36 +- .../get_permission_flag_test.cpp | 18 +- .../get_self_permissions_state_test.cpp | 176 +++++++++ .../get_self_permissions_state_test.h | 40 ++ .../permission_request_toggle_status_test.cpp | 24 +- .../HapTokenTest/delete_token_test.cpp | 6 +- .../HapTokenTest/get_hap_token_test.cpp | 22 ++ .../PermissionsTest/get_permission_test.cpp | 18 +- ...ant_permission_for_specified_time_test.cpp | 266 +++++++++++++ ...grant_permission_for_specified_time_test.h | 39 ++ .../verify_access_token_test.cpp | 350 ++++++++++++++++++ .../verify_access_token_test.h | 39 ++ ...gister_perm_state_change_callback_test.cpp | 30 +- ...gister_perm_state_change_callback_test.cpp | 6 +- 15 files changed, 1004 insertions(+), 69 deletions(-) create mode 100644 interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp create mode 100644 interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.h create mode 100644 interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.cpp create mode 100644 interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.h create mode 100644 interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.cpp create mode 100644 interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.h diff --git a/interfaces/innerkits/accesstoken/test/BUILD.gn b/interfaces/innerkits/accesstoken/test/BUILD.gn index 0c46f4ee1..6e337e6b9 100644 --- a/interfaces/innerkits/accesstoken/test/BUILD.gn +++ b/interfaces/innerkits/accesstoken/test/BUILD.gn @@ -47,6 +47,7 @@ ohos_unittest("libaccesstoken_sdk_test") { "unittest/HapAttributeTest/get_hap_dlp_flag_test.cpp", "unittest/HapAttributeTest/get_permission_flag_test.cpp", "unittest/HapAttributeTest/get_permissions_status_test.cpp", + "unittest/HapAttributeTest/get_self_permissions_state_test.cpp", "unittest/HapAttributeTest/permission_request_toggle_status_test.cpp", "unittest/HapAttributeTest/set_perm_dialog_cap_test.cpp", "unittest/HapAttributeTest/user_policy_test.cpp", @@ -57,8 +58,10 @@ ohos_unittest("libaccesstoken_sdk_test") { "unittest/HapTokenTest/update_hap_token_test.cpp", "unittest/PermissionsTest/clear_user_granted__permission_state_test.cpp", "unittest/PermissionsTest/get_permission_test.cpp", + "unittest/PermissionsTest/grant_permission_for_specified_time_test.cpp", "unittest/PermissionsTest/grant_permission_test.cpp", "unittest/PermissionsTest/revoke_permission_test.cpp", + "unittest/PermissionsTest/verify_access_token_test.cpp", "unittest/RegisterCallbackTest/register_perm_state_change_callback_test.cpp", "unittest/RegisterCallbackTest/un_register_perm_state_change_callback_test.cpp", "unittest/SaTest/dump_token_info_test.cpp", diff --git a/interfaces/innerkits/accesstoken/test/unittest/DistributedTest/set_remote_hap_token_info_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/DistributedTest/set_remote_hap_token_info_test.cpp index 3fc6123ba..832217cdc 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/DistributedTest/set_remote_hap_token_info_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/DistributedTest/set_remote_hap_token_info_test.cpp @@ -328,14 +328,14 @@ HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoFuncTest004, TestSize.L } /** - * @tc.name: SetRemoteHapTokenInfoSpecTest001 + * @tc.name: SetRemoteHapTokenInfoSpecsTest001 * @tc.desc: add remote hap token, it can not grant by GrantPermission * @tc.type: FUNC * @tc.require:issue I5R4UF */ -HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest001, TestSize.Level1) +HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecsTest001, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecTest001 start."); + ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecsTest001 start."); std::string deviceID5 = udid_; AccessTokenKit::DeleteRemoteToken(deviceID5, 0x20100000); PermissionStateFull infoManagerTestState5 = { @@ -373,14 +373,14 @@ HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest001, TestSize.L } /** - * @tc.name: SetRemoteHapTokenInfoSpecTest002 + * @tc.name: SetRemoteHapTokenInfoSpecsTest002 * @tc.desc: add remote hap token, it can not revoke by RevokePermission * @tc.type: FUNC * @tc.require:issue I5R4UF */ -HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest002, TestSize.Level1) +HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecsTest002, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecTest002 start."); + ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecsTest002 start."); std::string deviceID6 = udid_; AccessTokenKit::DeleteRemoteToken(deviceID6, 0x20100000); PermissionStateFull infoManagerTestState6 = { @@ -426,14 +426,14 @@ HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest002, TestSize.L } /** - * @tc.name: SetRemoteHapTokenInfoSpecTest003 + * @tc.name: SetRemoteHapTokenInfoSpecsTest003 * @tc.desc: add remote hap token, it can not delete by DeleteToken * @tc.type: FUNC * @tc.require:issue I5R4UF */ -HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest003, TestSize.Level1) +HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecsTest003, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecTest003 start."); + ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecsTest003 start."); std::string deviceID7 = udid_; AccessTokenKit::DeleteRemoteToken(deviceID7, 0x20100000); PermissionStateFull infoManagerTestState7 = { @@ -465,14 +465,14 @@ HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest003, TestSize.L } /** - * @tc.name: SetRemoteHapTokenInfoSpecTest004 + * @tc.name: SetRemoteHapTokenInfoSpecsTest004 * @tc.desc: add remote hap token, it can not update by UpdateHapToken * @tc.type: FUNC * @tc.require:issue I5R4UF */ -HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest004, TestSize.Level1) +HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecsTest004, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecTest004 start."); + ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecsTest004 start."); std::string deviceID8 = udid_; AccessTokenKit::DeleteRemoteToken(deviceID8, 0x20100000); int32_t DEFAULT_API_VERSION = 8; @@ -513,14 +513,14 @@ HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest004, TestSize.L } /** - * @tc.name: SetRemoteHapTokenInfoSpecTest005 + * @tc.name: SetRemoteHapTokenInfoSpecsTest005 * @tc.desc: add remote hap token, it can not clear by ClearUserGrantedPermissionState * @tc.type: FUNC * @tc.require:issue I5R4UF */ -HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest005, TestSize.Level1) +HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecsTest005, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecTest005 start."); + ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecsTest005 start."); std::string deviceID9 = udid_; AccessTokenKit::DeleteRemoteToken(deviceID9, 0x20100000); PermissionStateFull infoManagerTestState9 = { @@ -558,14 +558,14 @@ HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest005, TestSize.L } /** - * @tc.name: SetRemoteHapTokenInfoSpecTest006 + * @tc.name: SetRemoteHapTokenInfoSpecsTest006 * @tc.desc: tokenID is not hap token * @tc.type: FUNC * @tc.require:issue I5R4UF */ -HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecTest006, TestSize.Level1) +HWTEST_F(SetRemoteHapTokenInfoTest, SetRemoteHapTokenInfoSpecsTest006, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecTest006 start."); + ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteHapTokenInfoSpecsTest006 start."); std::string deviceID = udid_; HapTokenInfo baseInfo = { .ver = 1, diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permission_flag_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permission_flag_test.cpp index 429a92181..85207cea7 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permission_flag_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permission_flag_test.cpp @@ -174,14 +174,14 @@ HWTEST_F(GetPermissionFlagTest, GetPermissionFlagAbnormalTest001, TestSize.Level } /** - * @tc.name: GetPermissionFlagSpecTest001 + * @tc.name: GetPermissionFlagSpecsTest001 * @tc.desc: GetPermissionFlag is invoked multiple times. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecTest001, TestSize.Level0) +HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecsTest001, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionFlagSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionFlagSpecsTest001"); AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); ASSERT_NE(INVALID_TOKENID, tokenID); @@ -198,14 +198,14 @@ HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecTest001, TestSize.Level0) } /** - * @tc.name: GetPermissionFlagSpecTest002 + * @tc.name: GetPermissionFlagSpecsTest002 * @tc.desc: GetPermissionFlag caller is normal app. * @tc.type: FUNC * @tc.require: issueI66BH3 */ -HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecTest002, TestSize.Level0) +HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecsTest002, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionFlagSpecTest002"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionFlagSpecsTest002"); AccessTokenIDEx tokenIdEx = {0}; tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestNormalInfoParms, g_infoManagerTestPolicyPrams); @@ -222,14 +222,14 @@ HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecTest002, TestSize.Level0) } /** - * @tc.name: GetPermissionFlagSpecTest003 + * @tc.name: GetPermissionFlagSpecsTest003 * @tc.desc: GetPermissionFlag caller is system app. * @tc.type: FUNC * @tc.require: issueI66BH3 */ -HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecTest003, TestSize.Level0) +HWTEST_F(GetPermissionFlagTest, GetPermissionFlagSpecsTest003, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionFlagSpecTest003"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionFlagSpecsTest003"); AccessTokenIDEx tokenIdEx = {0}; tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestSystemInfoParms, g_infoManagerTestPolicyPrams); diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp new file mode 100644 index 000000000..f8c5c4b40 --- /dev/null +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp @@ -0,0 +1,176 @@ +/* + * Copyright (c) 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 "get_self_permissions_state_test.h" +#include "gtest/gtest.h" +#include +#include + +#include "access_token.h" +#include "access_token_error.h" +#include "accesstoken_log.h" +#include "accesstoken_service_ipc_interface_code.h" +#include "permission_grant_info.h" +#include "permission_state_change_info_parcel.h" +#include "string_ex.h" +#include "test_common.h" +#include "tokenid_kit.h" +#include "token_setproc.h" + +using namespace testing::ext; +namespace OHOS { +namespace Security { +namespace AccessToken { +namespace { +static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, + SECURITY_DOMAIN_ACCESSTOKEN, "GetSelfPermissionsStateTest"}; +// static AccessTokenID g_selfTokenId = 0; +static const std::string TEST_BUNDLE_NAME = "ohos"; +static const int TEST_USER_ID = 0; +static constexpr int32_t DEFAULT_API_VERSION = 8; +HapInfoParams g_infoManagerTestInfoParms = TestCommon::GetInfoManagerTestInfoParms(); +HapInfoParams g_infoManagerTestInfoParmsBak = g_infoManagerTestInfoParms; + +HapPolicyParams g_infoManagerTestPolicyPrams = TestCommon::GetInfoManagerTestPolicyPrams(); +HapPolicyParams g_infoManagerTestPolicyPramsBak = g_infoManagerTestPolicyPrams; +}; + +uint64_t GetNativeTokenTest22(const char *processName, const char **perms, int32_t permNum) +{ + uint64_t tokenId; + NativeTokenInfoParams infoInstance = { + .dcapsNum = 0, + .permsNum = permNum, + .aclsNum = 0, + .dcaps = nullptr, + .perms = perms, + .acls = nullptr, + .aplStr = "system_core", + .processName = processName, + }; + + tokenId = GetAccessTokenId(&infoInstance); + AccessTokenKit::ReloadNativeTokenInfo(); + return tokenId; +} + +void NativeTokenGet() +{ + uint64_t tokenID; + const char **perms = new const char *[5]; // 5: array size + perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC"; + perms[1] = "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"; + perms[2] = "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"; + perms[3] = "ohos.permission.GET_SENSITIVE_PERMISSIONS"; + perms[4] = "ohos.permission.DISABLE_PERMISSION_DIALOG"; + + tokenID = GetNativeTokenTest22("TestCase", perms, 5); // 5: array size + EXPECT_EQ(0, SetSelfTokenID(tokenID)); + delete[] perms; +} + +void GetSelfPermissionsStateTest::SetUpTestCase() +{ + setuid(0); + // make test case clean + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, + g_infoManagerTestInfoParms.bundleName, + g_infoManagerTestInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); + + tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenKit::DeleteToken(tokenID); + + NativeTokenGet(); +} + +void GetSelfPermissionsStateTest::TearDownTestCase() +{ +} + +void GetSelfPermissionsStateTest::SetUp() +{ + selfTokenId_ = GetSelfTokenID(); + g_infoManagerTestPolicyPrams = g_infoManagerTestPolicyPramsBak; + g_infoManagerTestInfoParms = g_infoManagerTestInfoParmsBak; + HapInfoParams info = { + .userID = TEST_USER_ID, + .bundleName = TEST_BUNDLE_NAME, + .instIndex = 0, + .appIDDesc = "appIDDesc", + .apiVersion = DEFAULT_API_VERSION + }; + + HapPolicyParams policy = { + .apl = APL_NORMAL, + .domain = "domain" + }; + TestCommon::TestPreparePermDefList(policy); + TestCommon::TestPreparePermStateList(policy); + + AccessTokenKit::AllocHapToken(info, policy); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, + g_infoManagerTestInfoParms.bundleName, + g_infoManagerTestInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); +} + +void GetSelfPermissionsStateTest::TearDown() +{ + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenKit::DeleteToken(tokenID); + EXPECT_EQ(0, SetSelfTokenID(selfTokenId_)); + + tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, + g_infoManagerTestInfoParms.bundleName, + g_infoManagerTestInfoParms.instIndex); + int ret = AccessTokenKit::DeleteToken(tokenID); + if (tokenID != 0) { + ASSERT_EQ(RET_SUCCESS, ret); + } +} + +/** + * @tc.name: GetSelfPermissionsStateAbnormalTest001 + * @tc.desc: get self permissions state with wrong token type. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetSelfPermissionsStateTest, GetSelfPermissionsStateAbnormalTest001, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GetSelfPermissionsStateAbnormalTest001"); + AccessTokenID tokenID = TestCommon::AllocTestToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams); + HapBaseInfo hapBaseInfo = { + .userID = g_infoManagerTestInfoParms.userID, + .bundleName = g_infoManagerTestInfoParms.bundleName, + .instIndex = g_infoManagerTestInfoParms.instIndex, + }; + + std::vector permsList; + PermissionListState tmp = { + .permissionName = g_infoManagerTestPolicyPrams.permStateList[0].permissionName, + .state = BUTT_OPER + }; + permsList.emplace_back(tmp); + + // test dialog isn't forbiddedn + ASSERT_EQ(0, AccessTokenKit::SetPermDialogCap(hapBaseInfo, false)); + SetSelfTokenID(tokenID); + PermissionGrantInfo info; + ASSERT_EQ(INVALID_OPER, AccessTokenKit::GetSelfPermissionsState(permsList, info)); +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.h b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.h new file mode 100644 index 000000000..f4aae175e --- /dev/null +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 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. + */ + +#ifndef GET_SELF_PERMISSIONS_STATE_TEST_H +#define GET_SELF_PERMISSIONS_STATE_TEST_H + +#include + +#include "access_token.h" +#include "accesstoken_kit.h" +#include "permission_def.h" +#include "permission_state_full.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +class GetSelfPermissionsStateTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); + uint64_t selfTokenId_; +}; +} // namespace AccessToken +} // namespace Security +} // namespace OHOS +#endif // GET_SELF_PERMISSIONS_STATE_TEST_H \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/permission_request_toggle_status_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/permission_request_toggle_status_test.cpp index 0e7b0adc4..2443d1dfe 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/permission_request_toggle_status_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/permission_request_toggle_status_test.cpp @@ -196,14 +196,14 @@ HWTEST_F(PermissionRequestToggleStatusTest, SetPermissionRequestToggleStatus002, } /** - * @tc.name: SetPermissionRequestToggleStatusSpecTest003 + * @tc.name: SetPermissionRequestToggleStatusSpecsTest003 * @tc.desc: SetPermissionRequestToggleStatus caller is a system app with related permissions. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(PermissionRequestToggleStatusTest, SetPermissionRequestToggleStatusSpecTest003, TestSize.Level0) +HWTEST_F(PermissionRequestToggleStatusTest, SetPermissionRequestToggleStatusSpecsTest003, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "SetPermissionRequestToggleStatusSpecTest003"); + ACCESSTOKEN_LOG_INFO(LABEL, "SetPermissionRequestToggleStatusSpecsTest003"); AccessTokenIDEx tokenIdEx = {0}; @@ -279,14 +279,14 @@ HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusAbno } /** - * @tc.name: GetPermissionRequestToggleStatusSpecTest001 + * @tc.name: GetPermissionRequestToggleStatusSpecsTest001 * @tc.desc: GetPermissionRequestToggleStatus caller is a normal app, not a system app. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusSpecTest001, TestSize.Level0) +HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusSpecsTest001, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionRequestToggleStatusSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionRequestToggleStatusSpecsTest001"); AccessTokenIDEx tokenIdEx = {0}; tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestNormalInfoParms, g_infoManagerTestPolicyPrams); @@ -300,14 +300,14 @@ HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusSpec } /** - * @tc.name: GetPermissionRequestToggleStatusSpecTest002 + * @tc.name: GetPermissionRequestToggleStatusSpecsTest002 * @tc.desc: GetPermissionRequestToggleStatus caller is a system app without related permissions. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusSpecTest002, TestSize.Level0) +HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusSpecsTest002, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionRequestToggleStatusSpecTest002"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionRequestToggleStatusSpecsTest002"); AccessTokenIDEx tokenIdEx = {0}; tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestSystemInfoParms, g_infoManagerTestPolicyPrams); @@ -383,14 +383,14 @@ static void AllocAndSetHapToken(void) } /** - * @tc.name: GetPermissionRequestToggleStatusSpecTest003 + * @tc.name: GetPermissionRequestToggleStatusSpecsTest003 * @tc.desc: GetPermissionRequestToggleStatus caller is a system app with related permissions. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusSpecTest003, TestSize.Level0) +HWTEST_F(PermissionRequestToggleStatusTest, GetPermissionRequestToggleStatusSpecsTest003, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionRequestToggleStatusSpecTest003"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetPermissionRequestToggleStatusSpecsTest003"); AllocAndSetHapToken(); diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/delete_token_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/delete_token_test.cpp index 166614835..2f11054c2 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/delete_token_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/delete_token_test.cpp @@ -168,14 +168,14 @@ HWTEST_F(DeleteTokenTest, DeleteTokenAbnormalTest001, TestSize.Level1) } /** - * @tc.name: DeleteTokenSpecTest001 + * @tc.name: DeleteTokenSpecsTest001 * @tc.desc: alloc a tokenId successfully, delete it successfully the first time and fail to delete it again. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(DeleteTokenTest, DeleteTokenSpecTest001, TestSize.Level1) +HWTEST_F(DeleteTokenTest, DeleteTokenSpecsTest001, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "DeleteTokenSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "DeleteTokenSpecsTest001"); AccessTokenID tokenID = TestCommon::AllocTestToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams); ASSERT_NE(INVALID_TOKENID, tokenID); diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_hap_token_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_hap_token_test.cpp index f7fb342d7..48a14eee3 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_hap_token_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_hap_token_test.cpp @@ -275,6 +275,28 @@ HWTEST_F(GetHapTokenTest, GetHapTokenInfoAbnormalTest001, TestSize.Level0) int ret = AccessTokenKit::GetHapTokenInfo(TEST_TOKENID_INVALID, hapTokenInfoRes); ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, ret); } + +/** + * @tc.name: GetHapTokenInfoExtensionFuncTest001 + * @tc.desc: GetHapTokenInfoExt001. + * @tc.type: FUNC + * @tc.require: IAZTZD + */ +HWTEST_F(GetHapTokenTest, GetHapTokenInfoExtensionFuncTest001, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GetHapTokenInfoExtensionFuncTest001"); + setuid(0); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + ASSERT_NE(INVALID_TOKENID, tokenID); + HapTokenInfoExt hapTokenInfoExt; + int ret = AccessTokenKit::GetHapTokenInfoExtension(tokenID, hapTokenInfoExt); + ASSERT_EQ(ret, 0); + ASSERT_EQ(TEST_BUNDLE_NAME, hapTokenInfoExt.baseInfo.bundleName); + ASSERT_EQ("appIDDesc", hapTokenInfoExt.appID); + + ret = AccessTokenKit::GetHapTokenInfoExtension(INVALID_TOKENID, hapTokenInfoExt); + ASSERT_EQ(ret, AccessTokenError::ERR_PARAM_INVALID); +} } // namespace AccessToken } // namespace Security } // namespace OHOS \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/get_permission_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/get_permission_test.cpp index b479e56b3..5a04d61f9 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/get_permission_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/get_permission_test.cpp @@ -236,14 +236,14 @@ HWTEST_F(GetPermissionTest, GetDefPermissionAbnormalTest001, TestSize.Level1) } /** - * @tc.name: GetDefPermissionSpecTest001 + * @tc.name: GetDefPermissionSpecsTest001 * @tc.desc: GetDefPermission is invoked multiple times. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(GetPermissionTest, GetDefPermissionSpecTest001, TestSize.Level0) +HWTEST_F(GetPermissionTest, GetDefPermissionSpecsTest001, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetDefPermissionSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetDefPermissionSpecsTest001"); for (int j = 0; j < CYCLE_TIMES; j++) { PermissionDef permDefResultAlpha; @@ -323,14 +323,14 @@ HWTEST_F(GetPermissionTest, GetDefPermissionsAbnormalTest001, TestSize.Level1) } /** - * @tc.name: GetDefPermissionsSpecTest001 + * @tc.name: GetDefPermissionsSpecsTest001 * @tc.desc: GetDefPermissions is invoked multiple times. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(GetPermissionTest, GetDefPermissionsSpecTest001, TestSize.Level0) +HWTEST_F(GetPermissionTest, GetDefPermissionsSpecsTest001, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetDefPermissionsSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetDefPermissionsSpecsTest001"); AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); ASSERT_NE(INVALID_TOKENID, tokenID); @@ -459,14 +459,14 @@ HWTEST_F(GetPermissionTest, GetReqPermissionsAbnormalTest001, TestSize.Level1) } /** - * @tc.name: GetReqPermissionsSpecTest001 + * @tc.name: GetReqPermissionsSpecsTest001 * @tc.desc: GetReqPermissions is invoked multiple times. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(GetPermissionTest, GetReqPermissionsSpecTest001, TestSize.Level0) +HWTEST_F(GetPermissionTest, GetReqPermissionsSpecsTest001, TestSize.Level0) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetReqPermissionsSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "GetReqPermissionsSpecsTest001"); AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); ASSERT_NE(INVALID_TOKENID, tokenID); diff --git a/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.cpp new file mode 100644 index 000000000..5e67441cf --- /dev/null +++ b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.cpp @@ -0,0 +1,266 @@ + /* + * Copyright (c) 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 "grant_permission_for_specified_time_test.h" +#include "accesstoken_kit.h" +#include "access_token_error.h" +#include "accesstoken_log.h" +#include "nativetoken_kit.h" +#include "token_setproc.h" +#include "test_common.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +namespace { +static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, + SECURITY_DOMAIN_ACCESSTOKEN, "GrantPermissionForSpecifiedTimeTest"}; +static const int32_t INDEX_ZERO = 0; +static AccessTokenID g_selfTokenId = 0; +static int32_t g_selfUid; +static std::string SHORT_TEMP_PERMISSION = "ohos.permission.SHORT_TERM_WRITE_IMAGEVIDEO"; +static PermissionStateFull g_permiState = { + .permissionName = SHORT_TEMP_PERMISSION, + .isGeneral = true, + .resDeviceID = {"localC"}, + .grantStatus = {PermissionState::PERMISSION_GRANTED}, + .grantFlags = {1} +}; + +static HapPolicyParams g_policyPrams = { + .apl = APL_NORMAL, + .domain = "test.domain", + .permStateList = {g_permiState} +}; + +static HapInfoParams g_infoParms = { + .userID = 1, + .bundleName = "GrantPermissionForSpecifiedTimeTest", + .instIndex = 0, + .appIDDesc = "test.bundle", + .isSystemApp = true +}; +} + +static void NativeTokenGet() +{ + uint64_t tokenID; + const char **perms = new const char *[1]; // 1: array size + perms[INDEX_ZERO] = "ohos.permission.DISTRIBUTED_DATASYNC"; + + tokenID = TestCommon::GetNativeToken("GrantPermissionForSpecifiedTimeTest", perms, 1); // 1: array size + EXPECT_EQ(0, SetSelfTokenID(tokenID)); + delete[] perms; +} + +using namespace testing::ext; + +void GrantPermissionForSpecifiedTimeTest::SetUpTestCase() +{ + g_selfTokenId = GetSelfTokenID(); + g_selfUid = getuid(); + + NativeTokenGet(); +} + +void GrantPermissionForSpecifiedTimeTest::TearDownTestCase() +{ + setuid(g_selfUid); + EXPECT_EQ(0, SetSelfTokenID(g_selfTokenId)); +} + +void GrantPermissionForSpecifiedTimeTest::SetUp() +{ + setuid(0); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoParms.userID, + g_infoParms.bundleName, + g_infoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); + + AccessTokenKit::AllocHapToken(g_infoParms, g_policyPrams); +} + +void GrantPermissionForSpecifiedTimeTest::TearDown() +{ + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoParms.userID, + g_infoParms.bundleName, + g_infoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); +} + +/** + * @tc.name: GrantPermissionForSpecifiedTimeAbnormalTest001 + * @tc.desc: GrantPermissionForSpecifiedTime without invalid parameter. + * @tc.type: FUNC + * @tc.require:Issue Number + */ +HWTEST_F(GrantPermissionForSpecifiedTimeTest, GrantPermissionForSpecifiedTimeAbnormalTest001, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GrantPermissionForSpecifiedTimeAbnormalTest001"); + AccessTokenID tokenId = INVALID_TOKENID; + uint32_t onceTime = 0; + + /* 0 is invalid token id */ + ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenId, "permission", onceTime)); + + tokenId = 123; + /* 0 is invalid permissionName length */ + const std::string invalidPerm1 = ""; + ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenId, invalidPerm1, onceTime)); + + /* 256 is invalid permissionName length */ + const std::string invalidPerm2 (257, 'x'); + ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenId, invalidPerm2, onceTime)); + + /* 0 is invalid time */ + uint32_t invalidOnceTime1 = 0; + ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenId, SHORT_TEMP_PERMISSION, invalidOnceTime1)); + + /* 301 is invalid time */ + uint32_t invalidOnceTime2 = 301; + ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenId, SHORT_TEMP_PERMISSION, invalidOnceTime2)); +} + +/** + * @tc.name: GrantPermissionForSpecifiedTimeAbnormalTest002 + * @tc.desc: permission is not request. + * @tc.type: FUNC + * @tc.require:Issue Number + */ +HWTEST_F(GrantPermissionForSpecifiedTimeTest, GrantPermissionForSpecifiedTimeAbnormalTest002, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GrantPermissionForSpecifiedTimeAbnormalTest002"); + HapPolicyParams policyPrams = g_policyPrams; + HapInfoParams infoParms = g_infoParms; + policyPrams.permStateList.clear(); + + AccessTokenKit::AllocHapToken(infoParms, policyPrams); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(infoParms.userID, + infoParms.bundleName, + infoParms.instIndex); + ASSERT_NE(INVALID_TOKENID, tokenID); + uint32_t onceTime = 10; // 10: 10s + + ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenID, SHORT_TEMP_PERMISSION, onceTime)); +} + +/** + * @tc.name: GrantPermissionForSpecifiedTimeAbnormalTest003 + * @tc.desc: test unsupport permission. + * @tc.type: FUNC + * @tc.require:Issue Number + */ +HWTEST_F(GrantPermissionForSpecifiedTimeTest, GrantPermissionForSpecifiedTimeAbnormalTest003, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GrantPermissionForSpecifiedTimeAbnormalTest003"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoParms.userID, + g_infoParms.bundleName, + g_infoParms.instIndex); + ASSERT_NE(INVALID_TOKENID, tokenID); + uint32_t onceTime = 10; // 10: 10s + std::string permission = "ohos.permission.CAMERA"; + + ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenID, permission, onceTime)); +} + +/** + * @tc.name: GrantPermissionForSpecifiedTimeAbnormalTest004 + * @tc.desc: GrantPermissionForSpecifiedTime with no permission + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GrantPermissionForSpecifiedTimeTest, GrantPermissionForSpecifiedTimeAbnormalTest004, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GrantPermissionForSpecifiedTimeAbnormalTest004"); + setuid(1234); + AccessTokenID tokenId = 123; + std::string permission = "permission"; + uint32_t onceTime = 1; + ASSERT_EQ(AccessTokenError::ERR_PERMISSION_DENIED, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenId, permission, onceTime)); + setuid(g_selfUid); +} + +/** + * @tc.name: GrantPermissionForSpecifiedTimeSpecsTest001 + * @tc.desc: 1. The permission is granted when onceTime is not reached; + * 2. The permission is revoked after onceTime is reached. + * @tc.type: FUNC + * @tc.require:Issue Number + */ +HWTEST_F(GrantPermissionForSpecifiedTimeTest, GrantPermissionForSpecifiedTimeSpecsTest001, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GrantPermissionForSpecifiedTimeSpecsTest001"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoParms.userID, + g_infoParms.bundleName, + g_infoParms.instIndex); + ASSERT_NE(INVALID_TOKENID, tokenID); + uint32_t onceTime = 2; + + ASSERT_EQ(RET_SUCCESS, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenID, SHORT_TEMP_PERMISSION, onceTime)); + + ASSERT_EQ(PermissionState::PERMISSION_GRANTED, AccessTokenKit::VerifyAccessToken(tokenID, SHORT_TEMP_PERMISSION)); + + sleep(onceTime); + + ASSERT_EQ(PermissionState::PERMISSION_DENIED, + AccessTokenKit::VerifyAccessToken(tokenID, SHORT_TEMP_PERMISSION, true)); +} + +/** + * @tc.name: GrantPermissionForSpecifiedTimeSpecsTest002 + * @tc.desc: 1. The permission is granted when onceTime is not reached; + * 2. onceTime is update when GrantPermissionForSpecifiedTime is called twice. + * @tc.type: FUNC + * @tc.require:Issue Number + */ +HWTEST_F(GrantPermissionForSpecifiedTimeTest, GrantPermissionForSpecifiedTimeSpecsTest002, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "GrantPermissionForSpecifiedTimeSpecsTest002"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoParms.userID, + g_infoParms.bundleName, + g_infoParms.instIndex); + ASSERT_NE(INVALID_TOKENID, tokenID); + uint32_t onceTime = 3; + + ASSERT_EQ(RET_SUCCESS, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenID, SHORT_TEMP_PERMISSION, onceTime)); + sleep(onceTime - 1); + ASSERT_EQ(PermissionState::PERMISSION_GRANTED, AccessTokenKit::VerifyAccessToken(tokenID, SHORT_TEMP_PERMISSION)); + + // update onceTime + onceTime = 5; + ASSERT_EQ(RET_SUCCESS, + AccessTokenKit::GrantPermissionForSpecifiedTime(tokenID, SHORT_TEMP_PERMISSION, onceTime)); + + // first onceTime is reached, permission is not revoked + sleep(1); + ASSERT_EQ(PermissionState::PERMISSION_GRANTED, AccessTokenKit::VerifyAccessToken(tokenID, SHORT_TEMP_PERMISSION)); + + // second onceTime is reached, permission is revoked + sleep(onceTime); + ASSERT_EQ(PermissionState::PERMISSION_DENIED, AccessTokenKit::VerifyAccessToken(tokenID, SHORT_TEMP_PERMISSION)); +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.h b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.h new file mode 100644 index 000000000..1412938d6 --- /dev/null +++ b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/grant_permission_for_specified_time_test.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 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. + */ + +#ifndef GRANT_PERMISSION_FOR_SPECIFIED_TIME_TEST_H +#define GRANT_PERMISSION_FOR_SPECIFIED_TIME_TEST_H + +#include + +#include "access_token.h" +#include "accesstoken_kit.h" +#include "permission_def.h" +#include "permission_state_full.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +class GrantPermissionForSpecifiedTimeTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; +} // namespace AccessToken +} // namespace Security +} // namespace OHOS +#endif // GRANT_PERMISSION_FOR_SPECIFIED_TIME_TEST_H \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.cpp new file mode 100644 index 000000000..b58f84e15 --- /dev/null +++ b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.cpp @@ -0,0 +1,350 @@ +/* + * Copyright (c) 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 "verify_access_token_test.h" +#include "gtest/gtest.h" +#include + +#include "access_token.h" +#include "access_token_error.h" +#include "accesstoken_log.h" +#include "accesstoken_service_ipc_interface_code.h" +#include "permission_grant_info.h" +#include "permission_state_change_info_parcel.h" +#include "string_ex.h" +#include "test_common.h" +#include "tokenid_kit.h" +#include "token_setproc.h" + +using namespace testing::ext; +namespace OHOS { +namespace Security { +namespace AccessToken { +namespace { +static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, + SECURITY_DOMAIN_ACCESSTOKEN, "VerifyAccessTokenTest"}; +static AccessTokenID g_selfTokenId = 0; +static const std::string TEST_BUNDLE_NAME = "ohos"; +static const int INVALID_PERMNAME_LEN = 260; +static const unsigned int TEST_TOKENID_INVALID = 0; +static const int TEST_USER_ID = 0; +static constexpr int32_t DEFAULT_API_VERSION = 8; +HapInfoParams g_infoManagerTestSystemInfoParms = TestCommon::GetInfoManagerTestSystemInfoParms(); +HapInfoParams g_infoManagerTestNormalInfoParms = TestCommon::GetInfoManagerTestNormalInfoParms(); +}; + +void VerifyAccessTokenTest::SetUpTestCase() +{ + g_selfTokenId = GetSelfTokenID(); + + // clean up test cases + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenKit::DeleteToken(tokenID); + + tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestNormalInfoParms.userID, + g_infoManagerTestNormalInfoParms.bundleName, + g_infoManagerTestNormalInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); + + tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestSystemInfoParms.userID, + g_infoManagerTestSystemInfoParms.bundleName, + g_infoManagerTestSystemInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); + + AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestSystemInfoParms, + TestCommon::GetTestPolicyParams()); + SetSelfTokenID(tokenIdEx.tokenIDEx); +} + +void VerifyAccessTokenTest::TearDownTestCase() +{ + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenKit::DeleteToken(tokenID); + + tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestNormalInfoParms.userID, + g_infoManagerTestNormalInfoParms.bundleName, + g_infoManagerTestNormalInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); + + tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestSystemInfoParms.userID, + g_infoManagerTestSystemInfoParms.bundleName, + g_infoManagerTestSystemInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); + + SetSelfTokenID(g_selfTokenId); +} + +void VerifyAccessTokenTest::SetUp() +{ + ACCESSTOKEN_LOG_INFO(LABEL, "SetUp ok."); + + setuid(0); + HapInfoParams info = { + .userID = TEST_USER_ID, + .bundleName = TEST_BUNDLE_NAME, + .instIndex = 0, + .appIDDesc = "appIDDesc", + .apiVersion = DEFAULT_API_VERSION + }; + + HapPolicyParams policy = { + .apl = APL_NORMAL, + .domain = "domain" + }; + TestCommon::TestPreparePermDefList(policy); + TestCommon::TestPreparePermStateList(policy); + + AccessTokenKit::AllocHapToken(info, policy); +} + +void VerifyAccessTokenTest::TearDown() +{ +} + +/** + * @tc.name: VerifyAccessTokenFuncTest001 + * @tc.desc: Verify user granted permission. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(VerifyAccessTokenTest, VerifyAccessTokenFuncTest001, TestSize.Level0) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "VerifyAccessTokenFuncTest001"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + ASSERT_NE(INVALID_TOKENID, tokenID); + int ret = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.MICROPHONE", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.MICROPHONE"); + ASSERT_EQ(PERMISSION_GRANTED, ret); + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.MICROPHONE", false); + ASSERT_EQ(PERMISSION_GRANTED, ret); + + ret = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.MICROPHONE", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.MICROPHONE"); + ASSERT_EQ(PERMISSION_DENIED, ret); + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.MICROPHONE", false); + ASSERT_EQ(PERMISSION_DENIED, ret); +} + +/** + * @tc.name: VerifyAccessTokenFuncTest002 + * @tc.desc: Verify system granted permission. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(VerifyAccessTokenTest, VerifyAccessTokenFuncTest002, TestSize.Level0) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "VerifyAccessTokenFuncTest002"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + ASSERT_NE(INVALID_TOKENID, tokenID); + int ret = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.SET_WIFI_INFO", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.SET_WIFI_INFO"); + ASSERT_EQ(PERMISSION_GRANTED, ret); + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.SET_WIFI_INFO", false); + ASSERT_EQ(PERMISSION_GRANTED, ret); + + ret = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.SET_WIFI_INFO", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.SET_WIFI_INFO"); + ASSERT_EQ(PERMISSION_DENIED, ret); + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.SET_WIFI_INFO", false); + ASSERT_EQ(PERMISSION_DENIED, ret); +} + +/** + * @tc.name: VerifyAccessTokenFuncTest003 + * @tc.desc: Verify permission after update. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(VerifyAccessTokenTest, VerifyAccessTokenFuncTest003, TestSize.Level0) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "VerifyAccessTokenFuncTest003"); + AccessTokenIDEx tokenIdEx = AccessTokenKit::GetHapTokenIDEx(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenID tokenID = tokenIdEx.tokenIdExStruct.tokenID; + ASSERT_NE(INVALID_TOKENID, tokenID); + + int ret = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.MICROPHONE", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + + HapTokenInfo hapInfo; + ret = AccessTokenKit::GetHapTokenInfo(tokenID, hapInfo); + ASSERT_EQ(RET_SUCCESS, ret); + + std::vector permDefList; + ret = AccessTokenKit::GetDefPermissions(tokenID, permDefList); + ASSERT_EQ(RET_SUCCESS, ret); + + std::vector permStatList; + ret = AccessTokenKit::GetReqPermissions(tokenID, permStatList, false); + ASSERT_EQ(RET_SUCCESS, ret); + + HapPolicyParams policy = { + .apl = APL_NORMAL, + .domain = "domain", + .permList = permDefList, + .permStateList = permStatList + }; + UpdateHapInfoParams info; + info.appIDDesc = "appIDDesc"; + info.apiVersion = DEFAULT_API_VERSION; + info.isSystemApp = false; + ret = AccessTokenKit::UpdateHapToken(tokenIdEx, info, policy); + ASSERT_EQ(RET_SUCCESS, ret); + + ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.MICROPHONE", false); + ASSERT_EQ(PERMISSION_GRANTED, ret); +} + +/** + * @tc.name: VerifyAccessTokenAbnormalTest001 + * @tc.desc: Verify permission that tokenID or permission is invalid. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(VerifyAccessTokenTest, VerifyAccessTokenAbnormalTest001, TestSize.Level0) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "VerifyAccessTokenAbnormalTest001"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + ASSERT_NE(INVALID_TOKENID, tokenID); + int ret = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.GAMMA", false); + ASSERT_EQ(PERMISSION_DENIED, ret); + + ret = AccessTokenKit::VerifyAccessToken(tokenID, ""); + ASSERT_EQ(PERMISSION_DENIED, ret); + ret = AccessTokenKit::VerifyAccessToken(tokenID, "", false); + ASSERT_EQ(PERMISSION_DENIED, ret); + + std::string invalidPerm(INVALID_PERMNAME_LEN, 'a'); + ret = AccessTokenKit::VerifyAccessToken(tokenID, invalidPerm, false); + ASSERT_EQ(PERMISSION_DENIED, ret); + + AccessTokenKit::VerifyAccessToken(TEST_TOKENID_INVALID, "ohos.permission.SET_WIFI_INFO"); + ASSERT_EQ(PERMISSION_DENIED, ret); + AccessTokenKit::VerifyAccessToken(TEST_TOKENID_INVALID, "ohos.permission.SET_WIFI_INFO", false); + ASSERT_EQ(PERMISSION_DENIED, ret); + + AccessTokenKit::DeleteToken(tokenID); + + AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.SET_WIFI_INFO"); + ASSERT_EQ(PERMISSION_DENIED, ret); + AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.SET_WIFI_INFO", false); + ASSERT_EQ(PERMISSION_DENIED, ret); +} + +/** + * @tc.name: VerifyAccessTokenWithListFuncTest001 + * @tc.desc: Verify permission with list. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(VerifyAccessTokenTest, VerifyAccessTokenWithListFuncTest001, TestSize.Level0) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "VerifyAccessTokenWithListFuncTest001"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + ASSERT_NE(INVALID_TOKENID, tokenID); + int ret = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.MICROPHONE", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + ret = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.SET_WIFI_INFO", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + + std::vector permissionList; + permissionList.emplace_back("ohos.permission.MICROPHONE"); + permissionList.emplace_back("ohos.permission.SET_WIFI_INFO"); + + std::vector permStateList; + ret = AccessTokenKit::VerifyAccessToken(tokenID, permissionList, permStateList); + for (int i = 0; i < permissionList.size(); i++) { + ASSERT_EQ(PERMISSION_GRANTED, permStateList[i]); + } + + permStateList.clear(); + ret = AccessTokenKit::VerifyAccessToken(tokenID, permissionList, permStateList, true); + for (int i = 0; i < permissionList.size(); i++) { + ASSERT_EQ(PERMISSION_GRANTED, permStateList[i]); + } + + ret = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.MICROPHONE", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + ret = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.SET_WIFI_INFO", PERMISSION_USER_FIXED); + ASSERT_EQ(RET_SUCCESS, ret); + + permStateList.clear(); + ret = AccessTokenKit::VerifyAccessToken(tokenID, permissionList, permStateList); + for (int i = 0; i < permissionList.size(); i++) { + ASSERT_EQ(PERMISSION_DENIED, permStateList[i]); + } + + permStateList.clear(); + ret = AccessTokenKit::VerifyAccessToken(tokenID, permissionList, permStateList, true); + for (int i = 0; i < permissionList.size(); i++) { + ASSERT_EQ(PERMISSION_DENIED, permStateList[i]); + } +} + +/** + * @tc.name: VerifyAccessTokenWithListAbnormalTest001 + * @tc.desc: Verify permission that tokenID or permission is invalid. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(VerifyAccessTokenTest, VerifyAccessTokenWithListAbnormalTest001, TestSize.Level0) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "VerifyAccessTokenWithListAbnormalTest001"); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + ASSERT_NE(INVALID_TOKENID, tokenID); + + std::vector permissionList; + permissionList.emplace_back("ohos.permission.GAMMA"); + std::vector permStateList; + int ret = AccessTokenKit::VerifyAccessToken(tokenID, permissionList, permStateList, false); + ASSERT_EQ(RET_SUCCESS, ret); + ASSERT_EQ(PERMISSION_DENIED, permStateList[0]); + + permissionList.clear(); + permissionList.emplace_back(""); + permStateList.clear(); + ret = AccessTokenKit::VerifyAccessToken(tokenID, permissionList, permStateList); + ASSERT_EQ(RET_SUCCESS, ret); + ASSERT_EQ(PERMISSION_DENIED, permStateList[0]); + + std::string invalidPerm(INVALID_PERMNAME_LEN, 'a'); + permissionList.clear(); + permissionList.emplace_back(invalidPerm); + permStateList.clear(); + ret = AccessTokenKit::VerifyAccessToken(tokenID, permissionList, permStateList); + ASSERT_EQ(RET_SUCCESS, ret); + ASSERT_EQ(PERMISSION_DENIED, permStateList[0]); + + permissionList.clear(); + permissionList.emplace_back("ohos.permission.MICROPHONE"); + permissionList.emplace_back("ohos.permission.SET_WIFI_INFO"); + permissionList.emplace_back(invalidPerm); + permStateList.clear(); + ret = AccessTokenKit::VerifyAccessToken(TEST_TOKENID_INVALID, permissionList, permStateList); + ASSERT_EQ(RET_SUCCESS, ret); + ASSERT_EQ(PERMISSION_DENIED, permStateList[0]); + ASSERT_EQ(PERMISSION_DENIED, permStateList[1]); + ASSERT_EQ(PERMISSION_DENIED, permStateList[2]); +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.h b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.h new file mode 100644 index 000000000..7d94711e8 --- /dev/null +++ b/interfaces/innerkits/accesstoken/test/unittest/PermissionsTest/verify_access_token_test.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 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. + */ + +#ifndef VERIFY_ACCESS_TOKEN_TEST_H +#define VERIFY_ACCESS_TOKEN_TEST_H + +#include + +#include "access_token.h" +#include "accesstoken_kit.h" +#include "permission_def.h" +#include "permission_state_full.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +class VerifyAccessTokenTest : public testing::Test { +public: + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; +} // namespace AccessToken +} // namespace Security +} // namespace OHOS +#endif // VERIFY_ACCESS_TOKEN_TEST_H \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/register_perm_state_change_callback_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/register_perm_state_change_callback_test.cpp index 11ea88c60..8011d8ef9 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/register_perm_state_change_callback_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/register_perm_state_change_callback_test.cpp @@ -632,14 +632,14 @@ HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackAbn } /** - * @tc.name: RegisterPermStateChangeCallbackSpecTest001 + * @tc.name: RegisterPermStateChangeCallbackSpecsTest001 * @tc.desc: RegisterPermStateChangeCallback with permList, whose size is 1024/1025 * @tc.type: FUNC * @tc.require: issueI5NT1X */ -HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecTest001, TestSize.Level1) +HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecsTest001, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecsTest001"); PermStateChangeScope scopeInfo; scopeInfo.permList = {}; scopeInfo.tokenIDs = {}; @@ -660,14 +660,14 @@ HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpe } /** - * @tc.name: RegisterPermStateChangeCallbackSpecTest002 + * @tc.name: RegisterPermStateChangeCallbackSpecsTest002 * @tc.desc: RegisterPermStateChangeCallback with tokenList, whose size is 1024/1025 * @tc.type: FUNC * @tc.require: issueI5NT1X */ -HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecTest002, TestSize.Level1) +HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecsTest002, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecTest002"); + ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecsTest002"); PermStateChangeScope scopeInfo; scopeInfo.permList = {}; scopeInfo.tokenIDs = {}; @@ -704,14 +704,14 @@ HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpe } /** - * @tc.name: RegisterPermStateChangeCallbackSpecTest003 + * @tc.name: RegisterPermStateChangeCallbackSpecsTest003 * @tc.desc: RegisterPermStateChangeCallback * @tc.type: FUNC * @tc.require: issueI5NT1X */ -HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecTest003, TestSize.Level1) +HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecsTest003, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecTest003"); + ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecsTest003"); PermStateChangeScope scopeInfo; scopeInfo.permList = {}; scopeInfo.tokenIDs = {}; @@ -738,14 +738,14 @@ HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpe } /** - * @tc.name: RegisterPermStateChangeCallbackSpecTest004 + * @tc.name: RegisterPermStateChangeCallbackSpecsTest004 * @tc.desc: ClearUserGrantedPermissionState notify. * @tc.type: FUNC * @tc.require: issueI5NT1X */ -HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecTest004, TestSize.Level1) +HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecsTest004, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecTest004"); + ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecsTest004"); PermStateChangeScope scopeInfo; static PermissionStateFull infoManagerTestStateA = { .permissionName = "ohos.permission.CAMERA", @@ -798,14 +798,14 @@ HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpe } /** - * @tc.name: RegisterPermStateChangeCallbackSpecTest005 + * @tc.name: RegisterPermStateChangeCallbackSpecsTest005 * @tc.desc: ClearUserGrantedPermissionState notify. * @tc.type: FUNC * @tc.require: issueI5NT1X */ -HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecTest005, TestSize.Level1) +HWTEST_F(RegisterPermStateChangeCallbackTest, RegisterPermStateChangeCallbackSpecsTest005, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecTest005"); + ACCESSTOKEN_LOG_INFO(LABEL, "RegisterPermStateChangeCallbackSpecsTest005"); PermStateChangeScope scopeInfo; static PermissionStateFull infoManagerTestStateA = { .permissionName = "ohos.permission.READ_MEDIA", diff --git a/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/un_register_perm_state_change_callback_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/un_register_perm_state_change_callback_test.cpp index 23c3fb3de..9d9c9e47c 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/un_register_perm_state_change_callback_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/RegisterCallbackTest/un_register_perm_state_change_callback_test.cpp @@ -173,14 +173,14 @@ HWTEST_F(UnRegisterPermStateChangeCallbackTest, UnRegisterPermStateChangeCallbac } /** - * @tc.name: UnRegisterPermStateChangeCallbackSpecTest001 + * @tc.name: UnRegisterPermStateChangeCallbackSpecsTest001 * @tc.desc: UnRegisterPermStateChangeCallback repeatedly. * @tc.type: FUNC * @tc.require: issueI5NT1X */ -HWTEST_F(UnRegisterPermStateChangeCallbackTest, UnRegisterPermStateChangeCallbackSpecTest001, TestSize.Level1) +HWTEST_F(UnRegisterPermStateChangeCallbackTest, UnRegisterPermStateChangeCallbackSpecsTest001, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "UnRegisterPermStateChangeCallbackSpecTest001"); + ACCESSTOKEN_LOG_INFO(LABEL, "UnRegisterPermStateChangeCallbackSpecsTest001"); PermStateChangeScope scopeInfo; scopeInfo.permList = {}; scopeInfo.tokenIDs = {}; -- Gitee From a0be0a8c6f62df614aedec5ea4699793cab89bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=81=E5=B7=A7=E5=B7=A7?= Date: Mon, 23 Dec 2024 02:55:52 +0000 Subject: [PATCH 2/4] update unittest/HapAttributeTest/get_self_permissions_state_test.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 丁巧巧 --- .../HapAttributeTest/get_self_permissions_state_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp index f8c5c4b40..bacb22cf0 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp @@ -66,7 +66,7 @@ uint64_t GetNativeTokenTest22(const char *processName, const char **perms, int32 return tokenId; } -void NativeTokenGet() +void NativeTokenGet1() { uint64_t tokenID; const char **perms = new const char *[5]; // 5: array size @@ -93,7 +93,7 @@ void GetSelfPermissionsStateTest::SetUpTestCase() tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); AccessTokenKit::DeleteToken(tokenID); - NativeTokenGet(); + NativeTokenGet1(); } void GetSelfPermissionsStateTest::TearDownTestCase() -- Gitee From 697a893604007f4439000a50761fe03407b10482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=81=E5=B7=A7=E5=B7=A7?= Date: Mon, 23 Dec 2024 03:13:31 +0000 Subject: [PATCH 3/4] update unittest/HapAttributeTest/get_self_permissions_state_test.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 丁巧巧 --- .../HapAttributeTest/get_self_permissions_state_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp index bacb22cf0..abb6d78c6 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp @@ -66,7 +66,7 @@ uint64_t GetNativeTokenTest22(const char *processName, const char **perms, int32 return tokenId; } -void NativeTokenGet1() +void NativeTokenGetSelf1() { uint64_t tokenID; const char **perms = new const char *[5]; // 5: array size @@ -93,7 +93,7 @@ void GetSelfPermissionsStateTest::SetUpTestCase() tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); AccessTokenKit::DeleteToken(tokenID); - NativeTokenGet1(); + NativeTokenGetSelf1(); } void GetSelfPermissionsStateTest::TearDownTestCase() -- Gitee From 01ad42ed1bc05e54b1b79c35a7f5558d3235311f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=81=E5=B7=A7=E5=B7=A7?= Date: Mon, 23 Dec 2024 08:23:22 +0000 Subject: [PATCH 4/4] update unittest/HapAttributeTest/get_self_permissions_state_test.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 丁巧巧 --- .../get_self_permissions_state_test.cpp | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp index abb6d78c6..870bacf0a 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_self_permissions_state_test.cpp @@ -40,6 +40,12 @@ static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, static const std::string TEST_BUNDLE_NAME = "ohos"; static const int TEST_USER_ID = 0; static constexpr int32_t DEFAULT_API_VERSION = 8; +static const int32_t INDEX_ZERO = 0; +static const int32_t INDEX_ONE = 1; +static const int32_t INDEX_TWO = 2; +static const int32_t INDEX_THREE = 3; +static const int32_t INDEX_FOUR = 4; + HapInfoParams g_infoManagerTestInfoParms = TestCommon::GetInfoManagerTestInfoParms(); HapInfoParams g_infoManagerTestInfoParmsBak = g_infoManagerTestInfoParms; @@ -47,7 +53,7 @@ HapPolicyParams g_infoManagerTestPolicyPrams = TestCommon::GetInfoManagerTestPol HapPolicyParams g_infoManagerTestPolicyPramsBak = g_infoManagerTestPolicyPrams; }; -uint64_t GetNativeTokenTest22(const char *processName, const char **perms, int32_t permNum) +uint64_t GetNativeTokenTestGetSelfPermissionsState(const char *processName, const char **perms, int32_t permNum) { uint64_t tokenId; NativeTokenInfoParams infoInstance = { @@ -66,17 +72,17 @@ uint64_t GetNativeTokenTest22(const char *processName, const char **perms, int32 return tokenId; } -void NativeTokenGetSelf1() +void NativeTokenGetSelfPermissionsState() { uint64_t tokenID; const char **perms = new const char *[5]; // 5: array size - perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC"; - perms[1] = "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"; - perms[2] = "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"; - perms[3] = "ohos.permission.GET_SENSITIVE_PERMISSIONS"; - perms[4] = "ohos.permission.DISABLE_PERMISSION_DIALOG"; + perms[INDEX_ZERO] = "ohos.permission.DISTRIBUTED_DATASYNC"; + perms[INDEX_ONE] = "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"; + perms[INDEX_TWO] = "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"; + perms[INDEX_THREE] = "ohos.permission.GET_SENSITIVE_PERMISSIONS"; + perms[INDEX_FOUR] = "ohos.permission.DISABLE_PERMISSION_DIALOG"; - tokenID = GetNativeTokenTest22("TestCase", perms, 5); // 5: array size + tokenID = GetNativeTokenTestGetSelfPermissionsState("TestCase", perms, 5); // 5: array size EXPECT_EQ(0, SetSelfTokenID(tokenID)); delete[] perms; } @@ -84,6 +90,7 @@ void NativeTokenGetSelf1() void GetSelfPermissionsStateTest::SetUpTestCase() { setuid(0); + selfTokenId_ = GetSelfTokenID(); // make test case clean AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, g_infoManagerTestInfoParms.bundleName, @@ -93,16 +100,16 @@ void GetSelfPermissionsStateTest::SetUpTestCase() tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); AccessTokenKit::DeleteToken(tokenID); - NativeTokenGetSelf1(); + NativeTokenGetSelfPermissionsState(); } void GetSelfPermissionsStateTest::TearDownTestCase() { + EXPECT_EQ(0, SetSelfTokenID(selfTokenId_)); } void GetSelfPermissionsStateTest::SetUp() { - selfTokenId_ = GetSelfTokenID(); g_infoManagerTestPolicyPrams = g_infoManagerTestPolicyPramsBak; g_infoManagerTestInfoParms = g_infoManagerTestInfoParmsBak; HapInfoParams info = { @@ -131,7 +138,6 @@ void GetSelfPermissionsStateTest::TearDown() { AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); AccessTokenKit::DeleteToken(tokenID); - EXPECT_EQ(0, SetSelfTokenID(selfTokenId_)); tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, g_infoManagerTestInfoParms.bundleName, -- Gitee