From e4cf6b4b4bd67952f933c93cd7e1c945fc13d92c Mon Sep 17 00:00:00 2001 From: dingqiaoqiao Date: Thu, 6 Feb 2025 11:12:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B6=85=E5=A4=A7=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dingqiaoqiao Change-Id: I75efaedc0bd0fd23f449cef0220bddca535a9afa --- .../get_permissions_status_test.cpp | 392 ++++++- .../get_permissions_status_test.h | 1 + .../HapTokenTest/get_token_type_test.cpp | 19 + .../src/accesstoken_kit_extension_test.cpp | 972 ------------------ 4 files changed, 390 insertions(+), 994 deletions(-) diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.cpp index c8cbb36d7..9ee0d45fc 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.cpp @@ -38,6 +38,11 @@ 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; +static constexpr int32_t TOKENID_NOT_EXIST = 123; +static const std::string TEST_PERMISSION_NAME_BETA = "ohos.permission.BETA"; +static const std::string TEST_PERMISSION_NAME_ALPHA = "ohos.permission.ALPHA"; +HapInfoParams g_infoManagerTestNormalInfoParms = TestCommon::GetInfoManagerTestNormalInfoParms(); +HapInfoParams g_infoManagerTestSystemInfoParms = TestCommon::GetInfoManagerTestSystemInfoParms(); HapInfoParams g_infoManagerTestInfoParms = TestCommon::GetInfoManagerTestInfoParms(); HapPolicyParams g_infoManagerTestPolicyPrams = TestCommon::GetInfoManagerTestPolicyPrams(); }; @@ -47,57 +52,400 @@ void GetPermissionsStatusTest::SetUpTestCase() g_selfTokenId = GetSelfTokenID(); // clean up test cases - AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); - AccessTokenKit::DeleteToken(tokenID); + AccessTokenID tokenId = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, + g_infoManagerTestInfoParms.bundleName, + g_infoManagerTestInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenId); - tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, - g_infoManagerTestInfoParms.bundleName, - g_infoManagerTestInfoParms.instIndex); - 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_infoManagerTestInfoParms, - TestCommon::GetTestPolicyParams()); - SetSelfTokenID(tokenIdEx.tokenIDEx); + tokenId = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenKit::DeleteToken(tokenId); + + TestCommon::GetNativeTokenTest(); } void GetPermissionsStatusTest::TearDownTestCase() { - AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); - AccessTokenKit::DeleteToken(tokenID); + SetSelfTokenID(g_selfTokenId); +} - tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, - g_infoManagerTestInfoParms.bundleName, - g_infoManagerTestInfoParms.instIndex); - AccessTokenKit::DeleteToken(tokenID); +void PreparePermStateListExt1(HapPolicyParams &policy) +{ + PermissionStateFull permStatAlpha = { + .permissionName = TEST_PERMISSION_NAME_ALPHA, + .isGeneral = true, + .resDeviceID = {"device"}, + .grantStatus = {PermissionState::PERMISSION_DENIED}, + .grantFlags = {PermissionFlag::PERMISSION_USER_SET} + }; - SetSelfTokenID(g_selfTokenId); + PermissionStateFull permStatBeta = { + .permissionName = TEST_PERMISSION_NAME_BETA, + .isGeneral = true, + .resDeviceID = {"device"}, + .grantStatus = {PermissionState::PERMISSION_GRANTED}, + .grantFlags = {PermissionFlag::PERMISSION_SYSTEM_FIXED} + }; + + PermissionStateFull permTestState5 = { + .permissionName = "ohos.permission.GET_SENSITIVE_PERMISSIONS", + .isGeneral = true, + .resDeviceID = {"local"}, + .grantStatus = {PermissionState::PERMISSION_GRANTED}, + .grantFlags = {PermissionFlag::PERMISSION_SYSTEM_FIXED} + }; + + PermissionStateFull permTestState6 = { + .permissionName = "ohos.permission.DISABLE_PERMISSION_DIALOG", + .isGeneral = true, + .resDeviceID = {"local"}, + .grantStatus = {PermissionState::PERMISSION_GRANTED}, + .grantFlags = {PermissionFlag::PERMISSION_SYSTEM_FIXED} + }; + policy.permStateList.emplace_back(permStatAlpha); + policy.permStateList.emplace_back(permStatBeta); + policy.permStateList.emplace_back(permTestState5); + policy.permStateList.emplace_back(permTestState6); } -void GetPermissionsStatusTest::SetUp() +void PreparePermStateList1(HapPolicyParams &policy) +{ + PermissionStateFull permTestState1 = { + .permissionName = "ohos.permission.testPermDef1", + .isGeneral = true, + .resDeviceID = {"local"}, + .grantStatus = {PermissionState::PERMISSION_DENIED}, + .grantFlags = {PermissionFlag::PERMISSION_DEFAULT_FLAG}, + }; + + PermissionStateFull permTestState3 = { + .permissionName = "ohos.permission.testPermDef3", + .isGeneral = true, + .resDeviceID = {"local"}, + .grantStatus = {PermissionState::PERMISSION_DENIED}, + .grantFlags = {PermissionFlag::PERMISSION_USER_FIXED} + }; + + policy.permStateList.emplace_back(permTestState1); + policy.permStateList.emplace_back(permTestState3); + PreparePermStateListExt1(policy); +} + +void PreparePermDefList1(HapPolicyParams &policy) { - LOGI(ATM_DOMAIN, ATM_TAG, "SetUp ok."); + PermissionDef permissionDefAlpha; + permissionDefAlpha.permissionName = TEST_PERMISSION_NAME_ALPHA; + permissionDefAlpha.bundleName = TEST_BUNDLE_NAME; + permissionDefAlpha.grantMode = GrantMode::USER_GRANT; + permissionDefAlpha.availableLevel = APL_NORMAL; + permissionDefAlpha.provisionEnable = false; + permissionDefAlpha.distributedSceneEnable = false; + + PermissionDef permissionDefBeta; + permissionDefBeta.permissionName = TEST_PERMISSION_NAME_BETA; + permissionDefBeta.bundleName = TEST_BUNDLE_NAME; + permissionDefBeta.grantMode = GrantMode::SYSTEM_GRANT; + permissionDefBeta.availableLevel = APL_NORMAL; + permissionDefBeta.provisionEnable = false; + permissionDefBeta.distributedSceneEnable = false; + + PermissionDef testPermDef1; + testPermDef1.permissionName = "ohos.permission.testPermDef1"; + testPermDef1.bundleName = TEST_BUNDLE_NAME; + testPermDef1.grantMode = GrantMode::USER_GRANT; + testPermDef1.availableLevel = APL_NORMAL; + testPermDef1.provisionEnable = false; + testPermDef1.distributedSceneEnable = false; + + PermissionDef testPermDef3; + testPermDef3.permissionName = "ohos.permission.testPermDef3"; + testPermDef3.bundleName = TEST_BUNDLE_NAME; + testPermDef3.grantMode = GrantMode::USER_GRANT; + testPermDef3.availableLevel = APL_NORMAL; + testPermDef3.provisionEnable = false; + testPermDef3.distributedSceneEnable = false; + policy.permList.emplace_back(permissionDefAlpha); + policy.permList.emplace_back(permissionDefBeta); + policy.permList.emplace_back(testPermDef1); + policy.permList.emplace_back(testPermDef3); +} + +void GetPermissionsStatusTest::SetUp() +{ + selfTokenId_ = GetSelfTokenID(); setuid(0); HapInfoParams info = { .userID = TEST_USER_ID, .bundleName = TEST_BUNDLE_NAME, .instIndex = 0, .appIDDesc = "appIDDesc", - .apiVersion = DEFAULT_API_VERSION + .apiVersion = DEFAULT_API_VERSION, + .isSystemApp = true }; HapPolicyParams policy = { .apl = APL_NORMAL, .domain = "domain" }; - TestCommon::TestPreparePermDefList(policy); - TestCommon::TestPreparePermStateList(policy); - + PreparePermDefList1(policy); + PreparePermStateList1(policy); AccessTokenKit::AllocHapToken(info, policy); + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(g_infoManagerTestInfoParms.userID, + g_infoManagerTestInfoParms.bundleName, + g_infoManagerTestInfoParms.instIndex); + AccessTokenKit::DeleteToken(tokenID); } void GetPermissionsStatusTest::TearDown() { + 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); + EXPECT_EQ(0, SetSelfTokenID(selfTokenId_)); +} + +/** + * @tc.name: GetPermissionsStatusFuncTest001 + * @tc.desc: get different permissions status + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetPermissionsStatusTest, GetPermissionsStatusFuncTest001, TestSize.Level1) +{ + AccessTokenIDEx tokenIDEx = AccessTokenKit::GetHapTokenIDEx(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; + ASSERT_NE(INVALID_TOKENID, tokenID); + EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); + + std::vector permsList; + PermissionListState tmpA = { + .permissionName = "ohos.permission.testPermDef1", + .state = SETTING_OPER + }; + PermissionListState tmpB = { + .permissionName = "ohos.permission.testPermDef3", + .state = SETTING_OPER + }; + PermissionListState tmpC = { + .permissionName = TEST_PERMISSION_NAME_BETA, + .state = SETTING_OPER + }; + PermissionListState tmpD = { + .permissionName = "ohos.permission.xxx", + .state = SETTING_OPER + }; + PermissionListState tmpE = { + .permissionName = "ohos.permission.CAMERA", + .state = SETTING_OPER + }; + + permsList.emplace_back(tmpA); + permsList.emplace_back(tmpB); + permsList.emplace_back(tmpC); + permsList.emplace_back(tmpD); + permsList.emplace_back(tmpE); + ASSERT_EQ(RET_SUCCESS, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); + ASSERT_EQ(DYNAMIC_OPER, permsList[0].state); + ASSERT_EQ(SETTING_OPER, permsList[1].state); + ASSERT_EQ(PASS_OPER, permsList[2].state); + ASSERT_EQ(INVALID_OPER, permsList[3].state); + ASSERT_EQ(INVALID_OPER, permsList[4].state); +} + +/** + * @tc.name: GetPermissionsStatusFuncTest002 + * @tc.desc: get different permissions status after set perm dialog cap + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetPermissionsStatusTest, GetPermissionsStatusFuncTest002, TestSize.Level1) +{ + AccessTokenIDEx tokenIDEx = AccessTokenKit::GetHapTokenIDEx(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; + ASSERT_NE(INVALID_TOKENID, tokenID); + EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); + + std::vector permsList; + PermissionListState tmpA = { + .permissionName = "ohos.permission.testPermDef1", + .state = SETTING_OPER + }; + PermissionListState tmpB = { + .permissionName = "ohos.permission.testPermDef3", + .state = SETTING_OPER + }; + PermissionListState tmpC = { + .permissionName = TEST_PERMISSION_NAME_BETA, + .state = SETTING_OPER + }; + PermissionListState tmpD = { + .permissionName = "ohos.permission.xxx", + .state = SETTING_OPER + }; + PermissionListState tmpE = { + .permissionName = "ohos.permission.CAMERA", + .state = SETTING_OPER + }; + + permsList.emplace_back(tmpA); + permsList.emplace_back(tmpB); + permsList.emplace_back(tmpC); + permsList.emplace_back(tmpD); + permsList.emplace_back(tmpE); + + HapBaseInfo hapBaseInfo = { + .userID = TEST_USER_ID, + .bundleName = TEST_BUNDLE_NAME, + .instIndex = 0 + }; + ASSERT_EQ(RET_SUCCESS, AccessTokenKit::SetPermDialogCap(hapBaseInfo, true)); + ASSERT_EQ(RET_SUCCESS, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); + ASSERT_EQ(FORBIDDEN_OPER, permsList[0].state); + ASSERT_EQ(FORBIDDEN_OPER, permsList[1].state); + ASSERT_EQ(FORBIDDEN_OPER, permsList[2].state); + ASSERT_EQ(INVALID_OPER, permsList[3].state); + ASSERT_EQ(INVALID_OPER, permsList[4].state); + ASSERT_EQ(RET_SUCCESS, AccessTokenKit::SetPermDialogCap(hapBaseInfo, false)); +} + +/** + * @tc.name: GetPermissionsStatusAbnormalTest001 + * @tc.desc: invalid input param: tokenID is 0 or permissionList is empty + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetPermissionsStatusTest, GetPermissionsStatusAbnormalTest001, TestSize.Level1) +{ + AccessTokenIDEx tokenIDEx = AccessTokenKit::GetHapTokenIDEx(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; + ASSERT_NE(INVALID_TOKENID, tokenID); + EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); + + std::vector permsList; + ASSERT_EQ(ERR_PARAM_INVALID, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); + PermissionListState tmpA = { + .permissionName = "ohos.permission.testPermDef1", + .state = SETTING_OPER + }; + permsList.emplace_back(tmpA); + + ASSERT_EQ(ERR_PARAM_INVALID, AccessTokenKit::GetPermissionsStatus(0, permsList)); + ASSERT_EQ(SETTING_OPER, permsList[0].state); +} + +/** + * @tc.name: GetPermissionsStatusAbnormalTest002 + * @tc.desc: tokenID not exit + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetPermissionsStatusTest, GetPermissionsStatusAbnormalTest002, TestSize.Level1) +{ + std::vector permsList; + PermissionListState tmpA = { + .permissionName = "ohos.permission.testPermDef1", + .state = SETTING_OPER + }; + permsList.emplace_back(tmpA); + + ASSERT_EQ(ERR_TOKENID_NOT_EXIST, AccessTokenKit::GetPermissionsStatus(TOKENID_NOT_EXIST, permsList)); + ASSERT_EQ(SETTING_OPER, permsList[0].state); +} + +/** + * @tc.name: GetPermissionsStatusAbnormalTest003 + * @tc.desc: callling without permission + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetPermissionsStatusTest, GetPermissionsStatusAbnormalTest003, TestSize.Level1) +{ + AccessTokenIDEx tokenIDEx = {0}; + tokenIDEx = AccessTokenKit::AllocHapToken(g_infoManagerTestSystemInfoParms, g_infoManagerTestPolicyPrams); + AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; + ASSERT_NE(INVALID_TOKENID, tokenID); + EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); + + std::vector permsList; + PermissionListState tmpA = { + .permissionName = "ohos.permission.testPermDef1", + .state = SETTING_OPER + }; + + permsList.emplace_back(tmpA); + int32_t selfUid = getuid(); + setuid(10001); // 10001: UID + + ASSERT_EQ(ERR_PERMISSION_DENIED, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); + ASSERT_EQ(SETTING_OPER, permsList[0].state); + setuid(selfUid); +} + +/** + * @tc.name: GetPermissionsStatusSpecs001 + * @tc.desc: callling is normal hap + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetPermissionsStatusTest, GetPermissionsStatusSpecs001, TestSize.Level1) +{ + AccessTokenIDEx tokenIDEx = {0}; + tokenIDEx = AccessTokenKit::AllocHapToken(g_infoManagerTestNormalInfoParms, g_infoManagerTestPolicyPrams); + AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; + ASSERT_NE(INVALID_TOKENID, tokenID); + EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); + + std::vector permsList; + PermissionListState tmpA = { + .permissionName = "ohos.permission.testPermDef1", + .state = SETTING_OPER + }; + + permsList.emplace_back(tmpA); + + ASSERT_EQ(ERR_NOT_SYSTEM_APP, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); + ASSERT_EQ(SETTING_OPER, permsList[0].state); +} + +/** + * @tc.name: GetPermissionsStatusSpecs002 + * @tc.desc: callling is native SA + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(GetPermissionsStatusTest, GetPermissionsStatusSpecs002, TestSize.Level1) +{ + AccessTokenID tokenID = AccessTokenKit::GetHapTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); + ASSERT_NE(INVALID_TOKENID, tokenID); + + std::vector permsList; + PermissionListState tmpA = { + .permissionName = "ohos.permission.testPermDef1", + .state = SETTING_OPER + }; + + permsList.emplace_back(tmpA); + + ASSERT_EQ(RET_SUCCESS, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); + ASSERT_EQ(DYNAMIC_OPER, permsList[0].state); } } // namespace AccessToken } // namespace Security diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.h b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.h index 60dd60474..f7a0f4072 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.h +++ b/interfaces/innerkits/accesstoken/test/unittest/HapAttributeTest/get_permissions_status_test.h @@ -32,6 +32,7 @@ public: static void TearDownTestCase(); void SetUp(); void TearDown(); + uint64_t selfTokenId_; }; } // namespace AccessToken } // namespace Security diff --git a/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_token_type_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_token_type_test.cpp index 88281d1e8..cd7c0dccf 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_token_type_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/HapTokenTest/get_token_type_test.cpp @@ -188,6 +188,25 @@ HWTEST_F(GetTokenTypeTest, GetTokenTypeFlagFuncTest001, TestSize.Level1) ATokenTypeEnum ret = AccessTokenKit::GetTokenTypeFlag(tokenID); ASSERT_EQ(ret, TOKEN_NATIVE); } + +/** + * @tc.name: GetTokenTypeFlagFuncTest002 + * @tc.desc: Get token type with hap tokenID. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(GetTokenTypeTest, GetTokenTypeFlagFuncTest002, TestSize.Level1) +{ + AccessTokenIDEx tokenIdEx = {0}; + tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams); + ASSERT_NE(INVALID_TOKENID, tokenIdEx.tokenIdExStruct.tokenID); + + ATokenTypeEnum ret = AccessTokenKit::GetTokenTypeFlag(tokenIdEx.tokenIdExStruct.tokenID); + ASSERT_EQ(ret, TOKEN_HAP); + + int res = AccessTokenKit::DeleteToken(tokenIdEx.tokenIdExStruct.tokenID); + ASSERT_EQ(RET_SUCCESS, res); +} } // namespace AccessToken } // namespace Security } // namespace OHOS \ No newline at end of file diff --git a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_extension_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_extension_test.cpp index ad175c4ca..a0ea29eba 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_extension_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_extension_test.cpp @@ -38,7 +38,6 @@ namespace Security { namespace AccessToken { namespace { static constexpr int32_t DEFAULT_API_VERSION = 8; -static constexpr int32_t TOKENID_NOT_EXIST = 123; static const std::string TEST_BUNDLE_NAME = "ohos"; static const std::string TEST_PERMISSION_NAME_ALPHA = "ohos.permission.ALPHA"; static const std::string TEST_PERMISSION_NAME_BETA = "ohos.permission.BETA"; @@ -542,251 +541,6 @@ unsigned int AccessTokenKitExtensionTest::GetAccessTokenID(int userID, std::stri return AccessTokenKit::GetHapTokenID(userID, bundleName, instIndex); } -/** - * @tc.name: GetPermissionsStatus001 - * @tc.desc: get different permissions status - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenKitExtensionTest, GetPermissionsStatus001, TestSize.Level1) -{ - AccessTokenIDEx tokenIDEx = AccessTokenKit::GetHapTokenIDEx(TEST_USER_ID, TEST_BUNDLE_NAME, 0); - AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; - ASSERT_NE(INVALID_TOKENID, tokenID); - EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); - - std::vector permsList; - PermissionListState tmpA = { - .permissionName = "ohos.permission.testPermDef1", - .state = SETTING_OPER - }; - PermissionListState tmpB = { - .permissionName = "ohos.permission.testPermDef3", - .state = SETTING_OPER - }; - PermissionListState tmpC = { - .permissionName = TEST_PERMISSION_NAME_BETA, - .state = SETTING_OPER - }; - PermissionListState tmpD = { - .permissionName = "ohos.permission.xxx", - .state = SETTING_OPER - }; - PermissionListState tmpE = { - .permissionName = "ohos.permission.CAMERA", - .state = SETTING_OPER - }; - - permsList.emplace_back(tmpA); - permsList.emplace_back(tmpB); - permsList.emplace_back(tmpC); - permsList.emplace_back(tmpD); - permsList.emplace_back(tmpE); - ASSERT_EQ(RET_SUCCESS, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); - ASSERT_EQ(DYNAMIC_OPER, permsList[0].state); - ASSERT_EQ(SETTING_OPER, permsList[1].state); - ASSERT_EQ(PASS_OPER, permsList[2].state); - ASSERT_EQ(INVALID_OPER, permsList[3].state); - ASSERT_EQ(INVALID_OPER, permsList[4].state); -} - -/** - * @tc.name: GetPermissionsStatus002 - * @tc.desc: get different permissions status after set perm dialog cap - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenKitExtensionTest, GetPermissionsStatus002, TestSize.Level1) -{ - AccessTokenIDEx tokenIDEx = AccessTokenKit::GetHapTokenIDEx(TEST_USER_ID, TEST_BUNDLE_NAME, 0); - AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; - ASSERT_NE(INVALID_TOKENID, tokenID); - EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); - - std::vector permsList; - PermissionListState tmpA = { - .permissionName = "ohos.permission.testPermDef1", - .state = SETTING_OPER - }; - PermissionListState tmpB = { - .permissionName = "ohos.permission.testPermDef3", - .state = SETTING_OPER - }; - PermissionListState tmpC = { - .permissionName = TEST_PERMISSION_NAME_BETA, - .state = SETTING_OPER - }; - PermissionListState tmpD = { - .permissionName = "ohos.permission.xxx", - .state = SETTING_OPER - }; - PermissionListState tmpE = { - .permissionName = "ohos.permission.CAMERA", - .state = SETTING_OPER - }; - - permsList.emplace_back(tmpA); - permsList.emplace_back(tmpB); - permsList.emplace_back(tmpC); - permsList.emplace_back(tmpD); - permsList.emplace_back(tmpE); - - HapBaseInfo hapBaseInfo = { - .userID = TEST_USER_ID, - .bundleName = TEST_BUNDLE_NAME, - .instIndex = 0 - }; - ASSERT_EQ(RET_SUCCESS, AccessTokenKit::SetPermDialogCap(hapBaseInfo, true)); - ASSERT_EQ(RET_SUCCESS, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); - ASSERT_EQ(FORBIDDEN_OPER, permsList[0].state); - ASSERT_EQ(FORBIDDEN_OPER, permsList[1].state); - ASSERT_EQ(FORBIDDEN_OPER, permsList[2].state); - ASSERT_EQ(INVALID_OPER, permsList[3].state); - ASSERT_EQ(INVALID_OPER, permsList[4].state); - ASSERT_EQ(RET_SUCCESS, AccessTokenKit::SetPermDialogCap(hapBaseInfo, false)); -} - -/** - * @tc.name: GetPermissionsStatus003 - * @tc.desc: invalid input param: tokenID is 0 or permissionList is empty - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenKitExtensionTest, GetPermissionsStatus003, TestSize.Level1) -{ - AccessTokenIDEx tokenIDEx = AccessTokenKit::GetHapTokenIDEx(TEST_USER_ID, TEST_BUNDLE_NAME, 0); - AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; - ASSERT_NE(INVALID_TOKENID, tokenID); - EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); - - std::vector permsList; - ASSERT_EQ(ERR_PARAM_INVALID, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); - PermissionListState tmpA = { - .permissionName = "ohos.permission.testPermDef1", - .state = SETTING_OPER - }; - permsList.emplace_back(tmpA); - - ASSERT_EQ(ERR_PARAM_INVALID, AccessTokenKit::GetPermissionsStatus(0, permsList)); - ASSERT_EQ(SETTING_OPER, permsList[0].state); -} - -/** - * @tc.name: GetPermissionsStatus04 - * @tc.desc: tokenID not exit - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenKitExtensionTest, GetPermissionsStatus004, TestSize.Level1) -{ - std::vector permsList; - PermissionListState tmpA = { - .permissionName = "ohos.permission.testPermDef1", - .state = SETTING_OPER - }; - permsList.emplace_back(tmpA); - - ASSERT_EQ(ERR_TOKENID_NOT_EXIST, AccessTokenKit::GetPermissionsStatus(TOKENID_NOT_EXIST, permsList)); - ASSERT_EQ(SETTING_OPER, permsList[0].state); -} - -/** - * @tc.name: GetPermissionsStatus005 - * @tc.desc: callling without permission - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenKitExtensionTest, GetPermissionsStatus005, TestSize.Level1) -{ - AccessTokenIDEx tokenIDEx = {0}; - tokenIDEx = AccessTokenKit::AllocHapToken(g_infoManagerTestSystemInfoParms, g_infoManagerTestPolicyPrams); - AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; - ASSERT_NE(INVALID_TOKENID, tokenID); - EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); - - std::vector permsList; - PermissionListState tmpA = { - .permissionName = "ohos.permission.testPermDef1", - .state = SETTING_OPER - }; - - permsList.emplace_back(tmpA); - int32_t selfUid = getuid(); - setuid(10001); // 10001: UID - - ASSERT_EQ(ERR_PERMISSION_DENIED, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); - ASSERT_EQ(SETTING_OPER, permsList[0].state); - setuid(selfUid); -} - -/** - * @tc.name: GetPermissionsStatus006 - * @tc.desc: callling is normal hap - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenKitExtensionTest, GetPermissionsStatus006, TestSize.Level1) -{ - AccessTokenIDEx tokenIDEx = {0}; - tokenIDEx = AccessTokenKit::AllocHapToken(g_infoManagerTestNormalInfoParms, g_infoManagerTestPolicyPrams); - AccessTokenID tokenID = tokenIDEx.tokenIdExStruct.tokenID; - ASSERT_NE(INVALID_TOKENID, tokenID); - EXPECT_EQ(0, SetSelfTokenID(tokenIDEx.tokenIDEx)); - - std::vector permsList; - PermissionListState tmpA = { - .permissionName = "ohos.permission.testPermDef1", - .state = SETTING_OPER - }; - - permsList.emplace_back(tmpA); - - ASSERT_EQ(ERR_NOT_SYSTEM_APP, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); - ASSERT_EQ(SETTING_OPER, permsList[0].state); -} - -/** - * @tc.name: GetPermissionsStatus007 - * @tc.desc: callling is native SA - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenKitExtensionTest, GetPermissionsStatus007, TestSize.Level1) -{ - AccessTokenID tokenID = GetAccessTokenID(TEST_USER_ID, TEST_BUNDLE_NAME, 0); - ASSERT_NE(INVALID_TOKENID, tokenID); - - std::vector permsList; - PermissionListState tmpA = { - .permissionName = "ohos.permission.testPermDef1", - .state = SETTING_OPER - }; - - permsList.emplace_back(tmpA); - - ASSERT_EQ(RET_SUCCESS, AccessTokenKit::GetPermissionsStatus(tokenID, permsList)); - ASSERT_EQ(DYNAMIC_OPER, permsList[0].state); -} - -/** - * @tc.name: GetTokenTypeFlag003 - * @tc.desc: Get token type with hap tokenID. - * @tc.type: FUNC - * @tc.require: Issue Number - */ -HWTEST_F(AccessTokenKitExtensionTest, GetTokenTypeFlag003, TestSize.Level1) -{ - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams); - ASSERT_NE(INVALID_TOKENID, tokenIdEx.tokenIdExStruct.tokenID); - - ATokenTypeEnum ret = AccessTokenKit::GetTokenTypeFlag(tokenIdEx.tokenIdExStruct.tokenID); - ASSERT_EQ(ret, TOKEN_HAP); - - int res = AccessTokenKit::DeleteToken(tokenIdEx.tokenIdExStruct.tokenID); - ASSERT_EQ(RET_SUCCESS, res); -} - /** * @tc.name: GetPermissionFlag006 * @tc.desc: Get permission flag after grant permission. @@ -858,732 +612,6 @@ public: bool ready_; }; -/** - * @tc.name: RegisterPermStateChangeCallback001 - * @tc.desc: RegisterPermStateChangeCallback permList - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback001, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {"ohos.permission.CAMERA"}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - - static PermissionStateFull infoManagerTestStateA = { - .permissionName = "ohos.permission.CAMERA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_DENIED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams1 = { - .apl = APL_NORMAL, - .domain = "test.domain2", - .permList = {}, - .permStateList = {infoManagerTestStateA} - }; - - AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams1); - AccessTokenID tokenID = tokenIdEx.tokenIdExStruct.tokenID; - ASSERT_NE(INVALID_TOKENID, tokenID); - - res = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.CAMERA", false); - ASSERT_EQ(PERMISSION_GRANTED, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - callbackPtr->ready_ = false; - - res = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - - callbackPtr->ready_ = false; - - res = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - ASSERT_EQ(false, callbackPtr->ready_); - - callbackPtr->ready_ = false; - - res = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - ASSERT_EQ(false, callbackPtr->ready_); - - res = AccessTokenKit::DeleteToken(tokenID); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback002 - * @tc.desc: RegisterPermStateChangeCallback permList - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback002, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {"ohos.permission.GET_BUNDLE_INFO"}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - - static PermissionStateFull infoManagerTestStateA = { - .permissionName = "ohos.permission.GET_BUNDLE_INFO", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_GRANTED}, - .grantFlags = {1} - }; - static PermissionStateFull infoManagerTestStateB = { - .permissionName = "ohos.permission.CAMERA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_GRANTED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams2 = { - .apl = APL_SYSTEM_BASIC, - .domain = "test.domain2", - .permList = {}, - .permStateList = {infoManagerTestStateA, infoManagerTestStateB} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams2); - - AccessTokenID tokenID = tokenIdEx.tokenIdExStruct.tokenID; - - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.CAMERA", false); - ASSERT_EQ(PERMISSION_GRANTED, res); - - res = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(false, callbackPtr->ready_); - - res = AccessTokenKit::DeleteToken(tokenID); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback003 - * @tc.desc: RegisterPermStateChangeCallback permList - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback003, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - - static PermissionStateFull infoManagerTestStateA = { - .permissionName = "ohos.permission.GET_BUNDLE_INFO", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_DENIED}, - .grantFlags = {1} - }; - static PermissionStateFull infoManagerTestStateB = { - .permissionName = "ohos.permission.CAMERA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_DENIED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams3 = { - .apl = APL_SYSTEM_CORE, - .domain = "test.domain2", - .permList = {}, - .permStateList = {infoManagerTestStateA, infoManagerTestStateB} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams3); - - AccessTokenID tokenID = tokenIdEx.tokenIdExStruct.tokenID; - - callbackPtr->ready_ = false; - res = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.CAMERA", false); - ASSERT_EQ(PERMISSION_GRANTED, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.GET_BUNDLE_INFO", false); - ASSERT_EQ(PERMISSION_DENIED, res); - res = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.GET_BUNDLE_INFO", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - res = AccessTokenKit::DeleteToken(tokenID); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback004 - * @tc.desc: RegisterPermStateChangeCallback with invalid tokenId - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback004, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {"ohos.permission.GET_BUNDLE_INFO", "ohos.permission.CAMERA"}; - scopeInfo.tokenIDs = {555555}; // 555555为模拟的tokenid - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, res); - - static PermissionStateFull infoManagerTestStateA = { - .permissionName = "ohos.permission.GET_BUNDLE_INFO", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_GRANTED}, - .grantFlags = {1}, - }; - static PermissionStateFull infoManagerTestStateB = { - .permissionName = "ohos.permission.CAMERA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_GRANTED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams4 = { - .apl = APL_NORMAL, - .domain = "test.domain2", - .permList = {}, - .permStateList = {infoManagerTestStateA, infoManagerTestStateB} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams4); - - AccessTokenID tokenID = tokenIdEx.tokenIdExStruct.tokenID; - - callbackPtr->ready_ = false; - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.CAMERA", false); - ASSERT_EQ(PERMISSION_GRANTED, res); - res = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.CAMERA", false); - ASSERT_EQ(PERMISSION_DENIED, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(false, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.GET_BUNDLE_INFO", false); - ASSERT_EQ(PERMISSION_GRANTED, res); - res = AccessTokenKit::RevokePermission(tokenID, "ohos.permission.GET_BUNDLE_INFO", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(false, callbackPtr->ready_); - - res = AccessTokenKit::DeleteToken(tokenID); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback005 - * @tc.desc: RegisterPermStateChangeCallback permList - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback005, TestSize.Level1) -{ - static PermissionStateFull infoManagerTestStateA = { - .permissionName = "ohos.permission.CAMERA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_DENIED}, - .grantFlags = {1} - }; - static PermissionStateFull infoManagerTestStateB = { - .permissionName = "ohos.permission.GET_BUNDLE_INFO", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_GRANTED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams5 = { - .apl = APL_NORMAL, - .domain = "test.domain2", - .permList = {}, - .permStateList = {infoManagerTestStateA, infoManagerTestStateB} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams5); - - AccessTokenID tokenID = tokenIdEx.tokenIdExStruct.tokenID; - - PermStateChangeScope scopeInfo; - scopeInfo.permList = {"ohos.permission.GET_BUNDLE_INFO", "ohos.permission.CAMERA"}; - scopeInfo.tokenIDs = {tokenID, 0}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - - callbackPtr->ready_ = false; - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.CAMERA", false); - ASSERT_EQ(PERMISSION_DENIED, res); - res = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.CAMERA", 2); - usleep(500000); // 500000us = 0.5s - ASSERT_EQ(RET_SUCCESS, res); - EXPECT_EQ(true, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::VerifyAccessToken(tokenID, "ohos.permission.GET_BUNDLE_INFO", false); - ASSERT_EQ(PERMISSION_GRANTED, res); - res = AccessTokenKit::GrantPermission(tokenID, "ohos.permission.GET_BUNDLE_INFO", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(false, callbackPtr->ready_); - - res = AccessTokenKit::DeleteToken(tokenID); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback006 - * @tc.desc: RegisterPermStateChangeCallback with invaild permission - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback006, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {"ohos.permission.INVALID"}; - scopeInfo.tokenIDs = {}; - auto callbackPtr1 = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr1); - ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, res); - - static PermissionStateFull infoManagerTestState = { - .permissionName = "ohos.permission.CAMERA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_DENIED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams6 = { - .apl = APL_SYSTEM_BASIC, - .domain = "test.domain2", - .permList = {}, - .permStateList = {infoManagerTestState} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams6); - - scopeInfo.tokenIDs = {tokenIdEx.tokenIdExStruct.tokenID}; - scopeInfo.permList = {"ohos.permission.INVALID", "ohos.permission.CAMERA"}; - auto callbackPtr = std::make_shared(scopeInfo); - res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::GrantPermission(tokenIdEx.tokenIdExStruct.tokenID, "ohos.permission.CAMERA", 2); - ASSERT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - res = AccessTokenKit::DeleteToken(tokenIdEx.tokenIdExStruct.tokenID); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback007 - * @tc.desc: RegisterPermStateChangeCallback with permList, whose size is 1024/1025 - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback007, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {}; - scopeInfo.tokenIDs = {}; - for (int32_t i = 1; i <= 1025; i++) { // 1025 is a invalid size - scopeInfo.permList.emplace_back("ohos.permission.GET_BUNDLE_INFO"); - if (i == 1025) { // 1025 is a invalid size - auto callbackPtr = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, res); - break; - } - auto callbackPtr = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - } -} - -/** - * @tc.name: RegisterPermStateChangeCallback008 - * @tc.desc: RegisterPermStateChangeCallback with tokenList, whose size is 1024/1025 - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback008, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - static HapPolicyParams infoManagerTestPolicyPrams8 = { - .apl = APL_NORMAL, - .domain = "test.domain", - .permList = {}, - .permStateList = {} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams8); - - for (int32_t i = 1; i <= 1025; i++) { // 1025 is a invalid size - scopeInfo.tokenIDs.emplace_back(tokenIdEx.tokenIdExStruct.tokenID); - if (i == 1025) { // 1025 is a invalid size - auto callbackPtr1 = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr1); - ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, res); - break; - } - auto callbackPtr1 = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr1); - ASSERT_EQ(RET_SUCCESS, res); - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr1); - ASSERT_EQ(RET_SUCCESS, res); - } - - int32_t res = AccessTokenKit::DeleteToken(tokenIdEx.tokenIdExStruct.tokenID); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback009 - * @tc.desc: RegisterPermStateChangeCallback - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback009, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {}; - scopeInfo.tokenIDs = {}; - std::vector> callbackList; - - for (int32_t i = 0; i < 200; i++) { // 200 is the max size - if (i == 200) { // 200 is the max size - auto callbackPtr = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(AccessTokenError::ERR_CALLBACKS_EXCEED_LIMITATION, res); - break; - } - auto callbackPtr = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - callbackList.emplace_back(callbackPtr); - } - for (int32_t i = 0; i < 200; i++) { // release 200 callback - auto callbackPtr = callbackList[i]; - int32_t res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - } - callbackList.clear(); -} - -/** - * @tc.name: RegisterPermStateChangeCallback010 - * @tc.desc: RegisterPermStateChangeCallback with nullptr - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback010, TestSize.Level1) -{ - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(nullptr); - ASSERT_EQ(AccessTokenError::ERR_PARAM_INVALID, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback011 - * @tc.desc: RegisterPermStateChangeCallback caller is normal app. - * @tc.type: FUNC - * @tc.require: issueI66BH3 - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback011, TestSize.Level0) -{ - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestNormalInfoParms, g_infoManagerTestPolicyPrams); - ASSERT_NE(INVALID_TOKENID, tokenIdEx.tokenIDEx); - EXPECT_EQ(0, SetSelfTokenID(tokenIdEx.tokenIDEx)); - - PermStateChangeScope scopeInfo; - scopeInfo.permList = {"ohos.permission.CAMERA"}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(ERR_NOT_SYSTEM_APP, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback012 - * @tc.desc: RegisterPermStateChangeCallback caller is system app. - * @tc.type: FUNC - * @tc.require: issueI66BH3 - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback012, TestSize.Level0) -{ - static HapPolicyParams policyPrams = { - .apl = APL_SYSTEM_CORE, - .domain = "test.domain", - }; - policyPrams.permStateList.emplace_back(g_getPermissionReq); - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestSystemInfoParms, policyPrams); - ASSERT_NE(INVALID_TOKENID, tokenIdEx.tokenIDEx); - EXPECT_EQ(0, SetSelfTokenID(tokenIdEx.tokenIDEx)); - - PermStateChangeScope scopeInfo; - scopeInfo.permList = {"ohos.permission.CAMERA"}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback013 - * @tc.desc: ClearUserGrantedPermissionState notify. - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback013, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - static PermissionStateFull infoManagerTestStateA = { - .permissionName = "ohos.permission.CAMERA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_DENIED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams13 = { - .apl = APL_SYSTEM_BASIC, - .domain = "test.domain2", - .permList = {}, - .permStateList = {infoManagerTestStateA} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams13); - - scopeInfo.tokenIDs = {tokenIdEx.tokenIdExStruct.tokenID}; - scopeInfo.permList = {"ohos.permission.CAMERA"}; - auto callbackPtr = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::GrantPermission(tokenIdEx.tokenIdExStruct.tokenID, "ohos.permission.CAMERA", 2); - EXPECT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::ClearUserGrantedPermissionState(tokenIdEx.tokenIdExStruct.tokenID); - EXPECT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::GrantPermission(tokenIdEx.tokenIdExStruct.tokenID, "ohos.permission.CAMERA", 2); - EXPECT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::DeleteToken(tokenIdEx.tokenIdExStruct.tokenID); - EXPECT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: RegisterPermStateChangeCallback014 - * @tc.desc: ClearUserGrantedPermissionState notify. - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, RegisterPermStateChangeCallback014, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - static PermissionStateFull infoManagerTestStateA = { - .permissionName = "ohos.permission.READ_MEDIA", - .isGeneral = true, - .resDeviceID = {"local2"}, - .grantStatus = {PERMISSION_DENIED}, - .grantFlags = {1} - }; - static HapPolicyParams infoManagerTestPolicyPrams14 = { - .apl = APL_SYSTEM_BASIC, - .domain = "testA.domain2", - .permList = {}, - .permStateList = {infoManagerTestStateA} - }; - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, infoManagerTestPolicyPrams14); - - scopeInfo.tokenIDs = {tokenIdEx.tokenIdExStruct.tokenID}; - scopeInfo.permList = {"ohos.permission.READ_MEDIA"}; - auto callbackPtr = std::make_shared(scopeInfo); - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - - res = AccessTokenKit::GrantPermission(tokenIdEx.tokenIdExStruct.tokenID, - "ohos.permission.READ_MEDIA", PERMISSION_SYSTEM_FIXED); - EXPECT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::ClearUserGrantedPermissionState(tokenIdEx.tokenIdExStruct.tokenID); - EXPECT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(false, callbackPtr->ready_); - - callbackPtr->ready_ = false; - res = AccessTokenKit::DeleteToken(tokenIdEx.tokenIdExStruct.tokenID); - EXPECT_EQ(RET_SUCCESS, res); - usleep(500000); // 500000us = 0.5s - EXPECT_EQ(true, callbackPtr->ready_); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - -/** - * @tc.name: UnRegisterPermStateChangeCallback001 - * @tc.desc: UnRegisterPermStateChangeCallback with invalid input. - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, UnRegisterPermStateChangeCallback001, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(AccessTokenError::ERR_INTERFACE_NOT_USED_TOGETHER, res); -} - -/** - * @tc.name: UnRegisterPermStateChangeCallback002 - * @tc.desc: UnRegisterPermStateChangeCallback repeatedly. - * @tc.type: FUNC - * @tc.require: issueI5NT1X - */ -HWTEST_F(AccessTokenKitExtensionTest, UnRegisterPermStateChangeCallback002, TestSize.Level1) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(AccessTokenError::ERR_CALLBACK_ALREADY_EXIST, res); - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(AccessTokenError::ERR_INTERFACE_NOT_USED_TOGETHER, res); -} - -/** - * @tc.name: UnRegisterPermStateChangeCallback003 - * @tc.desc: UnRegisterPermStateChangeCallback caller is normal app. - * @tc.type: FUNC - * @tc.require: issueI66BH3 - */ -HWTEST_F(AccessTokenKitExtensionTest, UnRegisterPermStateChangeCallback003, TestSize.Level0) -{ - PermStateChangeScope scopeInfo; - scopeInfo.permList = {}; - scopeInfo.tokenIDs = {}; - auto callbackPtr = std::make_shared(scopeInfo); - callbackPtr->ready_ = false; - - int32_t res = AccessTokenKit::RegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); - - AccessTokenIDEx tokenIdEx = {0}; - tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestNormalInfoParms, g_infoManagerTestPolicyPrams); - ASSERT_NE(INVALID_TOKENID, tokenIdEx.tokenIDEx); - EXPECT_EQ(0, SetSelfTokenID(tokenIdEx.tokenIDEx)); - - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(ERR_NOT_SYSTEM_APP, res); - - EXPECT_EQ(0, SetSelfTokenID(selfTokenId_)); - res = AccessTokenKit::UnRegisterPermStateChangeCallback(callbackPtr); - ASSERT_EQ(RET_SUCCESS, res); -} - /** * @tc.name: RegisterSelfPermStateChangeCallback001 * @tc.desc: RegisterSelfPermStateChangeCallback permList -- Gitee