* Copyright (c) 2022-2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "UTTest_permission_manager.h"
#include "access_token.h"
#include "accesstoken_kit.h"
#include "nativetoken_kit.h"
#include "token_setproc.h"
#include "access_token.h"
using namespace testing;
using namespace testing::ext;
namespace OHOS {
namespace DistributedHardware {
void PermissionManagerTest::SetUp()
{
const int32_t permsNum = 2;
const int32_t indexZero = 0;
const int32_t indexOne = 1;
uint64_t tokenId;
const char *perms[permsNum];
perms[indexZero] = "ohos.permission.ACCESS_SERVICE_DM";
perms[indexOne] = "ohos.permission.DISTRIBUTED_DATASYNC";
NativeTokenInfoParams infoInstance = {
.dcapsNum = 0,
.permsNum = permsNum,
.aclsNum = 0,
.dcaps = NULL,
.perms = perms,
.acls = NULL,
.processName = "dsoftbus_service",
.aplStr = "system_core",
};
tokenId = GetAccessTokenId(&infoInstance);
SetSelfTokenID(tokenId);
OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
}
constexpr int32_t PAKAGE_NAME_SIZE_MAX = 256;
#define SYSTEM_SA_WHITE_LIST_NUM (4)
constexpr const static char systemSaWhiteList[SYSTEM_SA_WHITE_LIST_NUM][PAKAGE_NAME_SIZE_MAX] = {
"Samgr_Networking",
"ohos.distributeddata.service",
"ohos.dslm",
"ohos.deviceprofile",
};
void PermissionManagerTest::TearDown()
{
}
void PermissionManagerTest::SetUpTestCase()
{
DMIPCSkeleton::dmIpcSkeleton_ = ipcSkeletonMock_;
DmAccessTokenKit::accessToken_ = accessTokenKitMock_;
}
void PermissionManagerTest::TearDownTestCase()
{
DMIPCSkeleton::dmIpcSkeleton_ = nullptr;
ipcSkeletonMock_ = nullptr;
DmAccessTokenKit::accessToken_ = nullptr;
accessTokenKitMock_ = nullptr;
}
namespace {
* @tc.name: PinAuthUi::CheckPermission_001
* @tc.desc: the return value is true
* @tc.type: FUNC
* @tc.require: AR000GHSJK
*/
HWTEST_F(PermissionManagerTest, CheckPermission_001, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckAccessServicePermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT));
ret = PermissionManager::GetInstance().CheckAccessServicePermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckAccessServicePermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
ret = PermissionManager::GetInstance().CheckAccessServicePermission();
ASSERT_TRUE(ret);
}
* @tc.name: PinAuthUi::CheckWhiteListSystemSA_001
* @tc.desc: the return value is false
* @tc.type:FUNC
* @tc.require: AR000GHSJK
*/
HWTEST_F(PermissionManagerTest, CheckWhiteListSystemSA_001, testing::ext::TestSize.Level1)
{
std::string pkgName;
bool ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName);
ASSERT_EQ(ret, false);
pkgName = "pkgName";
ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName);
ASSERT_EQ(ret, false);
}
* @tc.name: PinAuthUi::CheckWhiteListSystemSA_002
* @tc.desc: the return value is true
* @tc.type:FUNC
* @tc.require: AR000GHSJK
*/
HWTEST_F(PermissionManagerTest, CheckWhiteListSystemSA_002, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
std::string pkgName1(systemSaWhiteList[0]);
bool ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName1);
ASSERT_EQ(ret, true);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
std::string pkgName2(systemSaWhiteList[1]);
ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName2);
ASSERT_EQ(ret, true);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
std::string pkgName3(systemSaWhiteList[2]);
ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName3);
ASSERT_EQ(ret, true);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
std::string pkgName4(systemSaWhiteList[3]);
ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName4);
ASSERT_EQ(ret, true);
}
HWTEST_F(PermissionManagerTest, CheckWhiteListSystemSA_101, testing::ext::TestSize.Level1)
{
std::string pkgName = "pkgName";
bool ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName);
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckWhiteListSystemSA_102, testing::ext::TestSize.Level1)
{
std::string pkgName = "ohos.dhardware";
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
bool ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName);
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckMonitorPermission_001, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckMonitorPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT));
ret = PermissionManager::GetInstance().CheckMonitorPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckMonitorPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
ret = PermissionManager::GetInstance().CheckMonitorPermission();
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, GetWhiteListSystemSA_001, testing::ext::TestSize.Level1)
{
auto ret = PermissionManager::GetInstance().GetWhiteListSystemSA();
ASSERT_FALSE(ret.empty());
}
HWTEST_F(PermissionManagerTest, CheckSystemSA_001, testing::ext::TestSize.Level1)
{
std::string pkgName = "pkgName";
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckSystemSA(pkgName);
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
ret = PermissionManager::GetInstance().CheckSystemSA(pkgName);
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1002));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT));
ret = PermissionManager::GetInstance().CheckSystemSA(pkgName);
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, GetCallerProcessName_002, testing::ext::TestSize.Level1)
{
std::string processName;
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
int32_t ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
ASSERT_EQ(ret, ERR_DM_FAILED);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, GetHapTokenInfo(_, _)).WillOnce(Return(ERR_DM_FAILED));
ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
ASSERT_EQ(ret, ERR_DM_FAILED);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, GetHapTokenInfo(_, _)).WillOnce(Return(DM_OK));
ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
ASSERT_EQ(ret, ERR_DM_FAILED);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, GetNativeTokenInfo(_, _)).WillOnce(Return(ERR_DM_FAILED));
ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
ASSERT_EQ(ret, ERR_DM_FAILED);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, GetNativeTokenInfo(_, _)).WillOnce(Return(DM_OK));
ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
ASSERT_EQ(ret, DM_OK);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT));
ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
ASSERT_EQ(ret, ERR_DM_FAILED);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnGetDeviceInfo_001, testing::ext::TestSize.Level1)
{
std::string processName = "";
auto ret = PermissionManager::GetInstance().CheckProcessNameValidOnGetDeviceInfo(processName);
ASSERT_FALSE(ret);
processName = "processName";
ret = PermissionManager::GetInstance().CheckProcessNameValidOnGetDeviceInfo(processName);
ASSERT_FALSE(ret);
processName = "gameservice_server";
ret = PermissionManager::GetInstance().CheckProcessNameValidOnGetDeviceInfo(processName);
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckReadLocalDeviceName_001, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckReadLocalDeviceName();
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckDataSyncPermission_001, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckDataSyncPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT));
ret = PermissionManager::GetInstance().CheckDataSyncPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckDataSyncPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
ret = PermissionManager::GetInstance().CheckDataSyncPermission();
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckAccessUdidPermission_001, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckAccessUdidPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(20));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_TYPE_BUTT));
ret = PermissionManager::GetInstance().CheckAccessUdidPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(20));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckAccessUdidPermission();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(20));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
ret = PermissionManager::GetInstance().CheckAccessUdidPermission();
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckMonitorPermission_002, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
bool ret = PermissionManager::GetInstance().CheckMonitorPermission();
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckMonitorPermission();
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckWhiteListSystemSA_201, testing::ext::TestSize.Level1)
{
std::string pkgName("ohos.dhardware");
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName);
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
ret = PermissionManager::GetInstance().CheckWhiteListSystemSA(pkgName);
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_001, testing::ext::TestSize.Level1)
{
std::string emptyName;
bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(emptyName);
ASSERT_FALSE(ret);
std::string invalidName = "invalid_process";
ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode(invalidName);
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode("CollaborationFwk");
ASSERT_TRUE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode("car_distributed_engine");
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnPinHolder_001, testing::ext::TestSize.Level1)
{
std::string emptyName;
bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnPinHolder(emptyName);
ASSERT_FALSE(ret);
std::string invalidName = "invalid_process";
ret = PermissionManager::GetInstance().CheckProcessNameValidOnPinHolder(invalidName);
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnPinHolder("CollaborationFwk");
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnSetDnPolicy_001, testing::ext::TestSize.Level1)
{
std::string emptyName;
bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnSetDnPolicy(emptyName);
ASSERT_FALSE(ret);
std::string invalidName = "invalid_process";
ret = PermissionManager::GetInstance().CheckProcessNameValidOnSetDnPolicy(invalidName);
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnSetDnPolicy("collaboration_service");
ASSERT_TRUE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnSetDnPolicy("glasses_collaboration_service");
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnGetDeviceInfo_002, testing::ext::TestSize.Level1)
{
bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnGetDeviceInfo("token_sync_service");
ASSERT_TRUE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnGetDeviceInfo("com.example.genericassistant");
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidModifyLocalDeviceName_001, testing::ext::TestSize.Level1)
{
std::string emptyName;
bool ret = PermissionManager::GetInstance().CheckProcessNameValidModifyLocalDeviceName(emptyName);
ASSERT_FALSE(ret);
std::string invalidName = "invalid_process";
ret = PermissionManager::GetInstance().CheckProcessNameValidModifyLocalDeviceName(invalidName);
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidModifyLocalDeviceName("com.ohos.settings");
ASSERT_TRUE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidModifyLocalDeviceName("com.example.tvservice");
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidModifyRemoteDeviceName_001, testing::ext::TestSize.Level1)
{
std::string emptyName;
bool ret = PermissionManager::GetInstance().CheckProcessNameValidModifyRemoteDeviceName(emptyName);
ASSERT_FALSE(ret);
std::string invalidName = "invalid_process";
ret = PermissionManager::GetInstance().CheckProcessNameValidModifyRemoteDeviceName(invalidName);
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidModifyRemoteDeviceName("com.ohos.settings");
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidPutDeviceProfileInfoList_001, testing::ext::TestSize.Level1)
{
std::string emptyName;
bool ret = PermissionManager::GetInstance().CheckProcessNameValidPutDeviceProfileInfoList(emptyName);
ASSERT_FALSE(ret);
std::string invalidName = "invalid_process";
ret = PermissionManager::GetInstance().CheckProcessNameValidPutDeviceProfileInfoList(invalidName);
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidPutDeviceProfileInfoList("com.example.validsvc");
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidPutDeviceProfileInfoList("com.example.tvservice");
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessValidOnGetTrustedDeviceList_001, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckProcessValidOnGetTrustedDeviceList();
ASSERT_FALSE(ret);
NativeTokenInfo invalidInfo;
invalidInfo.processName = "invalid_process";
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, GetNativeTokenInfo(_, _))
.WillOnce(DoAll(SetArgReferee<1>(invalidInfo), Return(DM_OK)));
ret = PermissionManager::GetInstance().CheckProcessValidOnGetTrustedDeviceList();
ASSERT_FALSE(ret);
NativeTokenInfo trustedInfo;
trustedInfo.processName = "distributedsched";
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, GetNativeTokenInfo(_, _))
.WillOnce(DoAll(SetArgReferee<1>(trustedInfo), Return(DM_OK)));
ret = PermissionManager::GetInstance().CheckProcessValidOnGetTrustedDeviceList();
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckReadLocalDeviceName_002, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
bool ret = PermissionManager::GetInstance().CheckReadLocalDeviceName();
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_HAP));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckReadLocalDeviceName();
ASSERT_FALSE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
ret = PermissionManager::GetInstance().CheckReadLocalDeviceName();
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckOnReadyRetrospectiveNotificationBlackList_001, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(0));
bool ret = PermissionManager::GetInstance().CheckOnReadyRetrospectiveNotificationBlackList();
ASSERT_FALSE(ret);
NativeTokenInfo normalInfo;
normalInfo.processName = "invalid_process";
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, GetNativeTokenInfo(_, _))
.WillOnce(DoAll(SetArgReferee<1>(normalInfo), Return(DM_OK)));
ret = PermissionManager::GetInstance().CheckOnReadyRetrospectiveNotificationBlackList();
ASSERT_FALSE(ret);
NativeTokenInfo blackInfo;
blackInfo.processName = "distributeddata";
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1001));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, GetNativeTokenInfo(_, _))
.WillOnce(DoAll(SetArgReferee<1>(blackInfo), Return(DM_OK)));
ret = PermissionManager::GetInstance().CheckOnReadyRetrospectiveNotificationBlackList();
ASSERT_TRUE(ret);
}
* (the || TOKEN_NATIVE operand on line 370 was only exercised via TOKEN_HAP). */
HWTEST_F(PermissionManagerTest, CheckAccessServicePermission_002, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
bool ret = PermissionManager::GetInstance().CheckAccessServicePermission();
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckAccessServicePermission();
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckDataSyncPermission_002, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
bool ret = PermissionManager::GetInstance().CheckDataSyncPermission();
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckDataSyncPermission();
ASSERT_FALSE(ret);
}
HWTEST_F(PermissionManagerTest, CheckAccessUdidPermission_002, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(20));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
bool ret = PermissionManager::GetInstance().CheckAccessUdidPermission();
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(20));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, VerifyAccessToken(_, _))
.WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
ret = PermissionManager::GetInstance().CheckAccessUdidPermission();
ASSERT_FALSE(ret);
}
* exercising more loop iterations of CheckWhiteListSystemSA. */
HWTEST_F(PermissionManagerTest, CheckWhiteListSystemSA_202, testing::ext::TestSize.Level1)
{
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
bool ret = PermissionManager::GetInstance().CheckWhiteListSystemSA("distributed_bundle_framework");
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
ret = PermissionManager::GetInstance().CheckWhiteListSystemSA("audio_manager_service");
ASSERT_TRUE(ret);
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(10));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
ret = PermissionManager::GetInstance().CheckWhiteListSystemSA("hmos.collaborationfwk.deviceDetect");
ASSERT_TRUE(ret);
}
* std::move(tokenInfo.processName), verified by reading it back. */
HWTEST_F(PermissionManagerTest, GetCallerProcessName_003, testing::ext::TestSize.Level1)
{
std::string processName;
NativeTokenInfo nativeInfo;
nativeInfo.processName = "native_proc_003";
EXPECT_CALL(*ipcSkeletonMock_, GetCallingTokenID()).WillOnce(Return(1003));
EXPECT_CALL(*accessTokenKitMock_, GetTokenTypeFlag(_)).WillOnce(Return(ATokenTypeEnum::TOKEN_NATIVE));
EXPECT_CALL(*accessTokenKitMock_, GetNativeTokenInfo(_, _))
.WillOnce(DoAll(SetArgReferee<1>(nativeInfo), Return(0)));
int32_t ret = PermissionManager::GetInstance().GetCallerProcessName(processName);
ASSERT_EQ(ret, DM_OK);
ASSERT_EQ(processName, "native_proc_003");
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnAuthCode_002, testing::ext::TestSize.Level1)
{
bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode("wear_link_service");
ASSERT_TRUE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode("caas_service");
ASSERT_TRUE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnAuthCode("xr_glass_app_service");
ASSERT_TRUE(ret);
}
HWTEST_F(PermissionManagerTest, CheckProcessNameValidOnSetDnPolicy_002, testing::ext::TestSize.Level1)
{
bool ret = PermissionManager::GetInstance().CheckProcessNameValidOnSetDnPolicy("watch_system_service");
ASSERT_TRUE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnSetDnPolicy("com.example.walletservice");
ASSERT_FALSE(ret);
ret = PermissionManager::GetInstance().CheckProcessNameValidOnSetDnPolicy("com.ohos.distributedjstest");
ASSERT_TRUE(ret);
}
}
}
}