diff --git a/services/bundlemgr/include/app_control/app_control_manager_db_interface.h b/services/bundlemgr/include/app_control/app_control_manager_db_interface.h index 91586ba0af8f40ba4e640843b5033f150b419972..d3fb12db317a5807b409d8d61350003bdce42b30 100644 --- a/services/bundlemgr/include/app_control/app_control_manager_db_interface.h +++ b/services/bundlemgr/include/app_control/app_control_manager_db_interface.h @@ -46,7 +46,7 @@ public: virtual ErrCode DeleteAppRunningControlRule(const std::string &callingName, int32_t userId) = 0; virtual ErrCode GetAppRunningControlRule(const std::string &callingName, int32_t userId, std::vector &appIds, bool &allowRunning) = 0; - virtual ErrCode GetAppRunningControlRule(const std::vector &appIds, + virtual ErrCode GetAppRunningControlRule(const std::string &appIds, int32_t userId, AppRunningControlRuleResult &controlRuleResult) = 0; virtual ErrCode SetDisposedStatus(const std::string &callingName, const std::string &appId, const Want& want, int32_t userId) = 0; diff --git a/services/bundlemgr/include/app_control/app_control_manager_rdb.h b/services/bundlemgr/include/app_control/app_control_manager_rdb.h index 4e08a5643d14a6c149da123bd6c0443722bcffe2..5a8a7e3b9208a677a96d48d8516c0e5f8b252cee 100644 --- a/services/bundlemgr/include/app_control/app_control_manager_rdb.h +++ b/services/bundlemgr/include/app_control/app_control_manager_rdb.h @@ -43,7 +43,7 @@ public: virtual ErrCode DeleteAppRunningControlRule(const std::string &callingName, int32_t userId) override; virtual ErrCode GetAppRunningControlRule(const std::string &callingName, int32_t userId, std::vector &appIds, bool &allowRunning) override; - virtual ErrCode GetAppRunningControlRule(const std::vector &appIds, + virtual ErrCode GetAppRunningControlRule(const std::string &appIds, int32_t userId, AppRunningControlRuleResult &controlRuleResult) override; virtual ErrCode SetDisposedStatus(const std::string &callingName, const std::string &appId, const Want& want, int32_t userId) override; diff --git a/services/bundlemgr/src/app_control/app_control_manager.cpp b/services/bundlemgr/src/app_control/app_control_manager.cpp index 0dac9e6360dd92997d223e599c3b84d2b5a5e12a..dc87411c5ce21f7ed06cf84eb5ec12f1ab7e9002 100644 --- a/services/bundlemgr/src/app_control/app_control_manager.cpp +++ b/services/bundlemgr/src/app_control/app_control_manager.cpp @@ -378,10 +378,6 @@ ErrCode AppControlManager::GetAppRunningControlRule( LOG_W(BMS_TAG_DEFAULT, "getAppId failed,-n:%{public}s", bundleName.c_str()); return ret; } - std::vector appIds = {appId}; - if (!appIdentifier.empty()) { - appIds.emplace_back(appIdentifier); - } std::string key = appId + std::string("_") + std::to_string(userId); auto statusRet = GetAppRunningControlRuleCache(key, controlRuleResult); if (statusRet) { @@ -391,7 +387,11 @@ ErrCode AppControlManager::GetAppRunningControlRule( } return ERR_OK; } - ret = appControlManagerDb_->GetAppRunningControlRule(appIds, userId, controlRuleResult); + ret = appIdentifier.empty() ? appControlManagerDb_->GetAppRunningControlRule(appId, userId, controlRuleResult) : + appControlManagerDb_->GetAppRunningControlRule(appIdentifier, userId, controlRuleResult); + if (ret != ERR_OK && !appIdentifier.empty()) { + ret = appControlManagerDb_->GetAppRunningControlRule(appId, userId, controlRuleResult); + } bool findRule = (ret == ERR_OK); ret = CheckAppControlRuleIntercept(bundleName, userId, findRule, controlRuleResult); SetAppRunningControlRuleCache(key, controlRuleResult); diff --git a/services/bundlemgr/src/app_control/app_control_manager_host_impl.cpp b/services/bundlemgr/src/app_control/app_control_manager_host_impl.cpp index d800875dc5c47f5c19cdbd8f9244ea9a3891bcbe..d5432c7d7b52097b9feced9217578a7049ba0482 100644 --- a/services/bundlemgr/src/app_control/app_control_manager_host_impl.cpp +++ b/services/bundlemgr/src/app_control/app_control_manager_host_impl.cpp @@ -83,7 +83,7 @@ ErrCode AppControlManagerHostImpl::AddAppInstallControlRule(const std::vectorAppIdAndAppIdentifierTransform(appId); if (!transformAppId.empty()) { transformAppIds.emplace_back(transformAppId); @@ -129,7 +129,7 @@ ErrCode AppControlManagerHostImpl::DeleteAppInstallControlRule(const AppInstallC LOG_E(BMS_TAG_DEFAULT, "dataMgr_ is nullptr"); return ERR_APPEXECFWK_NULL_PTR; } - for (auto &appId : appIds) { + for (auto &appId : modifyAppIds) { std::string transformAppId = dataMgr_->AppIdAndAppIdentifierTransform(appId); if (!transformAppId.empty()) { transformAppIds.emplace_back(transformAppId); @@ -201,11 +201,11 @@ ErrCode AppControlManagerHostImpl::GetAppInstallControlRule( } ErrCode ret = appControlManager_->GetAppInstallControlRule(callingName, ruleType, userId, appIds); std::vector transformAppIds = appIds; + if (dataMgr_ == nullptr) { + LOG_E(BMS_TAG_DEFAULT, "dataMgr_ is nullptr"); + return ERR_APPEXECFWK_NULL_PTR; + } for (auto &appId : appIds) { - if (dataMgr_ == nullptr) { - LOG_E(BMS_TAG_DEFAULT, "dataMgr_ is nullptr"); - return ERR_APPEXECFWK_NULL_PTR; - } std::string transformAppId = dataMgr_->AppIdAndAppIdentifierTransform(appId); transformAppIds.emplace_back(transformAppId); } diff --git a/services/bundlemgr/src/app_control/app_control_manager_rdb.cpp b/services/bundlemgr/src/app_control/app_control_manager_rdb.cpp index be35e67171a17dcb132fb6f473ae4eabf4d1cb8c..336b60b9b9b38869914011b7c2d56646e46d4c67 100644 --- a/services/bundlemgr/src/app_control/app_control_manager_rdb.cpp +++ b/services/bundlemgr/src/app_control/app_control_manager_rdb.cpp @@ -432,12 +432,12 @@ ErrCode AppControlManagerRdb::GetAppRunningControlRule(const std::string &callin return ERR_OK; } -ErrCode AppControlManagerRdb::GetAppRunningControlRule(const std::vector &appIds, +ErrCode AppControlManagerRdb::GetAppRunningControlRule(const std::string &appId, int32_t userId, AppRunningControlRuleResult &controlRuleResult) { HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); NativeRdb::AbsRdbPredicates absRdbPredicates(APP_CONTROL_RDB_TABLE_NAME); - absRdbPredicates.In(APP_ID, appIds); + absRdbPredicates.EqualTo(APP_ID, appId); absRdbPredicates.EqualTo(APP_CONTROL_LIST, RUNNING_CONTROL); absRdbPredicates.EqualTo(USER_ID, std::to_string(userId)); absRdbPredicates.OrderByAsc(PRIORITY); // ascending diff --git a/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_app_control_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_app_control_test.cpp index 0c0d8f7f07b591ca3cf0c09ee5a0219295a3d31e..c6db99252db1233853063c5dab7590a712778f21 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_app_control_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_app_control_test.cpp @@ -551,12 +551,11 @@ HWTEST_F(BmsBundleAppControlTest, AppRunningControlRule_0600, Function | SmallTe controlRules.emplace_back(controlRule); AppRunningControlRuleResult controlRuleResult; bool allowRunning = false; - std::vector runningAppIds = {APPID}; auto RunningRes = appControlManagerDb_->AddAppRunningControlRule( AppControlConstants::EDM_CALLING, controlRules, 100); auto RunningRes1 = appControlManagerDb_->GetAppRunningControlRule( AppControlConstants::EDM_CALLING, 100, appIds, allowRunning); - auto RunningRes2 = appControlManagerDb_->GetAppRunningControlRule(runningAppIds, 100, controlRuleResult); + auto RunningRes2 = appControlManagerDb_->GetAppRunningControlRule(APPID, 100, controlRuleResult); auto RunningRes3 = appControlManagerDb_->DeleteAppRunningControlRule( AppControlConstants::EDM_CALLING, controlRules, 100); appControlManagerDb_->AddAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, 100); @@ -590,8 +589,7 @@ HWTEST_F(BmsBundleAppControlTest, AppRunningControlRule_0700, Function | SmallTe ret = appControlManagerDb_->AddAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, 100); EXPECT_EQ(ret, ERR_OK); AppRunningControlRuleResult controlRuleResult; - std::vector runningAppIds = {APPID}; - ret = appControlManagerDb_->GetAppRunningControlRule(runningAppIds, 100, controlRuleResult); + ret = appControlManagerDb_->GetAppRunningControlRule(APPID, 100, controlRuleResult); EXPECT_EQ(ret, ERR_OK); EXPECT_EQ(controlRuleResult.controlMessage, "test message"); EXPECT_EQ(controlRuleResult.controlWant, nullptr); @@ -602,7 +600,7 @@ HWTEST_F(BmsBundleAppControlTest, AppRunningControlRule_0700, Function | SmallTe controlRules.emplace_back(controlRule); ret = appControlManagerDb_->AddAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, 100); EXPECT_EQ(ret, ERR_OK); - ret = appControlManagerDb_->GetAppRunningControlRule(runningAppIds, 100, controlRuleResult); + ret = appControlManagerDb_->GetAppRunningControlRule(APPID, 100, controlRuleResult); EXPECT_EQ(controlRuleResult.controlMessage, APP_CONTROL_EDM_DEFAULT_MESSAGE); EXPECT_EQ(controlRuleResult.controlWant, nullptr); ret = appControlManagerDb_->DeleteAppRunningControlRule(AppControlConstants::EDM_CALLING, 100); @@ -612,7 +610,7 @@ HWTEST_F(BmsBundleAppControlTest, AppRunningControlRule_0700, Function | SmallTe ret = appControlManagerDb_->SetDisposedStatus(PERMISSION_DISPOSED_STATUS, APPID, want, 100); EXPECT_EQ(ret, ERR_OK); AppRunningControlRuleResult ruleResult; - ret = appControlManagerDb_->GetAppRunningControlRule(runningAppIds, 100, ruleResult); + ret = appControlManagerDb_->GetAppRunningControlRule(APPID, 100, ruleResult); EXPECT_EQ(ret, ERR_OK); EXPECT_EQ(ruleResult.controlMessage, ""); EXPECT_NE(ruleResult.controlWant, nullptr); @@ -629,8 +627,8 @@ HWTEST_F(BmsBundleAppControlTest, AppRunningControlRule_0700, Function | SmallTe HWTEST_F(BmsBundleAppControlTest, AppRunningControlRule_0800, Function | SmallTest | Level1) { AppRunningControlRuleResult controlRuleResult; - std::vector runningAppIds = {APPID}; - auto RunningRes = appControlManagerDb_->GetAppRunningControlRule(runningAppIds, USERID, controlRuleResult); + std::string runningAppId = APPID; + auto RunningRes = appControlManagerDb_->GetAppRunningControlRule(runningAppId, USERID, controlRuleResult); EXPECT_EQ(RunningRes, ERR_BUNDLE_MANAGER_BUNDLE_NOT_SET_CONTROL); } @@ -4313,4 +4311,205 @@ HWTEST_F(BmsBundleAppControlTest, DeleteDisposedRules_0200, Function | SmallTest ErrCode res = impl->DeleteDisposedRules(disposedRuleConfigurations, USERID); EXPECT_EQ(res, ERR_OK); } + +/** + * @tc.number: AppRunningControlRule_1100 + * @tc.name: test running control rule + * @tc.desc: 1.AppRunningControlRule test + */ +HWTEST_F(BmsBundleAppControlTest, AppRunningControlRule_1100, Function | SmallTest | Level1) +{ + auto appControlManager = DelayedSingleton::GetInstance(); + ASSERT_NE(appControlManager, nullptr); + std::vector controlRules; + AppRunningControlRule ruleParam; + ruleParam.appId = APPID; + ruleParam.controlMessage = CONTROL_MESSAGE; + ruleParam.allowRunning = true; + controlRules.emplace_back(ruleParam); + DelayedSingleton::GetInstance()->dataMgr_ = nullptr; + auto res = appControlManager->AddAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, USERID); + EXPECT_EQ(res, ERR_APPEXECFWK_NULL_PTR); + res = appControlManager->DeleteAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, USERID); + EXPECT_EQ(res, ERR_APPEXECFWK_NULL_PTR); + DelayedSingleton::GetInstance()->dataMgr_ = std::make_shared(); +} + +/** + * @tc.number: AppControlManagerHostImpl_8500 + * @tc.name: test UpdateAppControlledInfo by AppControlManagerHostImpl + * @tc.desc: 1.UpdateAppControlledInfo test + */ +HWTEST_F(BmsBundleAppControlTest, AppControlManagerHostImpl_8500, Function | SmallTest | Level1) +{ + auto impl = std::make_shared(); + ASSERT_NE(impl, nullptr); + ASSERT_NE(impl->dataMgr_, nullptr); + InnerBundleInfo innerBundleInfo; + + std::map innerModuleInfos; + InnerModuleInfo innerModuleInfo; + innerModuleInfo.moduleName = "entry"; + innerModuleInfos.try_emplace("module", innerModuleInfo); + innerBundleInfo.innerModuleInfos_ = innerModuleInfos; + + InnerBundleUserInfo userInfo; + userInfo.bundleName = BUNDLE_NAME; + innerBundleInfo.SetAppIdentifier("appId4"); + innerBundleInfo.baseBundleInfo_->appId = "appId5"; + impl->dataMgr_->bundleInfos_.emplace(BUNDLE_NAME, innerBundleInfo); + std::string key = BUNDLE_NAME + Constants::FILE_UNDERLINE + std::to_string(ALL_USERID); + impl->dataMgr_->bundleInfos_.at(BUNDLE_NAME).innerBundleUserInfos_.emplace(key, userInfo); + + std::vector appIds = {"appId1", "appId2", "appId3"}; + ErrCode res = appControlManagerDb_->AddAppInstallControlRule( + AppControlConstants::EDM_CALLING, appIds, AppControlConstants::APP_DISALLOWED_UNINSTALL, ALL_USERID); + EXPECT_EQ(res, ERR_OK); + impl->UpdateAppControlledInfo(ALL_USERID, appIds); + impl->dataMgr_->bundleInfos_.at(BUNDLE_NAME).GetInnerBundleUserInfo(ALL_USERID, userInfo); + EXPECT_TRUE(userInfo.isRemovable); + + innerBundleInfo.baseBundleInfo_->appId = "appId3"; + impl->dataMgr_->bundleInfos_.emplace(BUNDLE_NAME, innerBundleInfo); + impl->UpdateAppControlledInfo(ALL_USERID, appIds); + impl->dataMgr_->bundleInfos_.at(BUNDLE_NAME).GetInnerBundleUserInfo(ALL_USERID, userInfo); + EXPECT_FALSE(userInfo.isRemovable); + + innerBundleInfo.SetAppIdentifier("appId3"); + innerBundleInfo.baseBundleInfo_->appId = "appId4"; + impl->dataMgr_->bundleInfos_.emplace(BUNDLE_NAME, innerBundleInfo); + impl->UpdateAppControlledInfo(ALL_USERID, appIds); + impl->dataMgr_->bundleInfos_.at(BUNDLE_NAME).GetInnerBundleUserInfo(ALL_USERID, userInfo); + EXPECT_FALSE(userInfo.isRemovable); + + res = appControlManagerDb_->DeleteAppInstallControlRule( + AppControlConstants::EDM_CALLING, AppControlConstants::APP_DISALLOWED_UNINSTALL, appIds, ALL_USERID); + EXPECT_EQ(res, ERR_OK); + impl->dataMgr_->bundleInfos_.erase(BUNDLE_NAME); +} + +/** + * @tc.number: AppControlManagerHostImpl_8600 + * @tc.name: test UpdateAppControlledInfo by AppControlManagerHostImpl + * @tc.desc: 1.UpdateAppControlledInfo test + */ +HWTEST_F(BmsBundleAppControlTest, AppControlManagerHostImpl_8600, Function | SmallTest | Level1) +{ + auto impl = std::make_shared(); + ASSERT_NE(impl, nullptr); + ASSERT_NE(impl->dataMgr_, nullptr); + InnerBundleInfo innerBundleInfo; + + std::map innerModuleInfos; + InnerModuleInfo innerModuleInfo; + innerModuleInfo.moduleName = "entry"; + innerModuleInfos.try_emplace("module", innerModuleInfo); + innerBundleInfo.innerModuleInfos_ = innerModuleInfos; + + InnerBundleUserInfo userInfo; + userInfo.bundleName = BUNDLE_NAME; + innerBundleInfo.SetAppIdentifier("appId1"); + innerBundleInfo.baseBundleInfo_->appId = "appId1"; + impl->dataMgr_->bundleInfos_.emplace(BUNDLE_NAME, innerBundleInfo); + std::string key = BUNDLE_NAME + Constants::FILE_UNDERLINE + std::to_string(ALL_USERID); + impl->dataMgr_->bundleInfos_.at(BUNDLE_NAME).innerBundleUserInfos_.emplace(key, userInfo); + + std::vector appIds; + impl->UpdateAppControlledInfo(ALL_USERID, appIds); + impl->dataMgr_->bundleInfos_.at(BUNDLE_NAME).GetInnerBundleUserInfo(ALL_USERID, userInfo); + EXPECT_TRUE(userInfo.isRemovable); + + appIds = {"appId1", "appId2"}; + ErrCode res = appControlManagerDb_->AddAppInstallControlRule( + AppControlConstants::EDM_CALLING, appIds, AppControlConstants::APP_DISALLOWED_UNINSTALL, USERID); + EXPECT_EQ(res, ERR_OK); + innerBundleInfo.SetAppIdentifier("appId3"); + innerBundleInfo.baseBundleInfo_->appId = "appId3"; + impl->dataMgr_->bundleInfos_.emplace(BUNDLE_NAME, innerBundleInfo); + impl->UpdateAppControlledInfo(ALL_USERID, appIds); + impl->dataMgr_->bundleInfos_.at(BUNDLE_NAME).GetInnerBundleUserInfo(ALL_USERID, userInfo); + EXPECT_TRUE(userInfo.isRemovable); + + res = appControlManagerDb_->DeleteAppInstallControlRule( + AppControlConstants::EDM_CALLING, AppControlConstants::APP_DISALLOWED_UNINSTALL, appIds, ALL_USERID); + EXPECT_EQ(res, ERR_OK); + impl->dataMgr_->bundleInfos_.erase(BUNDLE_NAME); +} + +/** + * @tc.number: GetAppRunningControlRule_0400 + * @tc.name: Test GetAppRunningControlRule by AppControlManager + * @tc.desc: 1.GetAppRunningControlRule test + */ +HWTEST_F(BmsBundleAppControlTest, GetAppRunningControlRule_0400, Function | SmallTest | Level1) +{ + auto appControlManager = DelayedSingleton::GetInstance(); + ASSERT_NE(appControlManager, nullptr); + auto dataMgr = DelayedSingleton::GetInstance()->GetDataMgr(); + ASSERT_NE(dataMgr, nullptr); + InnerBundleInfo innerBundleInfo; + innerBundleInfo.baseBundleInfo_->appId = APPID; + dataMgr->bundleInfos_.emplace(BUNDLE_NAME, innerBundleInfo); + AppRunningControlRuleResult rule; + auto ret = appControlManager->GetAppRunningControlRule(BUNDLE_NAME, USERID, rule); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_SET_CONTROL); + appControlManager->appRunningControlRuleResult_.clear(); + + std::vector controlRules; + AppRunningControlRule controlRule; + controlRule.appId = APPID; + controlRule.controlMessage = CONTROL_MESSAGE; + controlRule.allowRunning = true; + controlRules.emplace_back(controlRule); + ret = appControlManagerDb_->AddAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, USERID); + EXPECT_EQ(ret, ERR_OK); + ret = appControlManager->GetAppRunningControlRule(BUNDLE_NAME, USERID, rule); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_SET_CONTROL); + EXPECT_EQ(rule.controlMessage, INVALID_MESSAGE); + appControlManager->appRunningControlRuleResult_.clear(); + ret = appControlManagerDb_->DeleteAppRunningControlRule(AppControlConstants::EDM_CALLING, USERID); + EXPECT_EQ(ret, ERR_OK); +} + +/** + * @tc.number: GetAppRunningControlRule_0500 + * @tc.name: Test GetAppRunningControlRule by AppControlManager + * @tc.desc: 1.GetAppRunningControlRule test + */ +HWTEST_F(BmsBundleAppControlTest, GetAppRunningControlRule_0500, Function | SmallTest | Level1) +{ + auto appControlManager = DelayedSingleton::GetInstance(); + ASSERT_NE(appControlManager, nullptr); + auto dataMgr = DelayedSingleton::GetInstance()->GetDataMgr(); + ASSERT_NE(dataMgr, nullptr); + InnerBundleInfo innerBundleInfo; + innerBundleInfo.baseBundleInfo_->appId = APPID; + innerBundleInfo.SetAppIdentifier("appIdentifier_test"); + dataMgr->bundleInfos_.emplace(BUNDLE_NAME, innerBundleInfo); + AppRunningControlRuleResult rule; + + std::vector controlRules; + AppRunningControlRule controlRule; + controlRule.appId = "appId"; + controlRule.controlMessage = CONTROL_MESSAGE; + controlRule.allowRunning = true; + controlRules.emplace_back(controlRule); + auto ret = appControlManagerDb_->AddAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, USERID); + EXPECT_EQ(ret, ERR_OK); + ret = appControlManager->GetAppRunningControlRule(BUNDLE_NAME, USERID, rule); + EXPECT_EQ(ret, ERR_OK); + appControlManager->appRunningControlRuleResult_.clear(); + + controlRule.appId = APPID; + controlRule.controlMessage = "message"; + controlRules.emplace_back(controlRule); + ret = appControlManagerDb_->AddAppRunningControlRule(AppControlConstants::EDM_CALLING, controlRules, USERID); + EXPECT_EQ(ret, ERR_OK); + ret = appControlManager->GetAppRunningControlRule(BUNDLE_NAME, USERID, rule); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_SET_CONTROL); + EXPECT_EQ(rule.controlMessage, INVALID_MESSAGE); + appControlManager->appRunningControlRuleResult_.clear(); + ret = appControlManagerDb_->DeleteAppRunningControlRule(AppControlConstants::EDM_CALLING, USERID); + EXPECT_EQ(ret, ERR_OK); +} } // OHOS \ No newline at end of file diff --git a/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_mock_app_control.cpp b/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_mock_app_control.cpp index c5e1032ecda886e9d6e42c6cf99b4a464b6c694b..2602f94579c3580ad9288030f6e4ccd653c0f261 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_mock_app_control.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_app_control_test/bms_bundle_mock_app_control.cpp @@ -249,10 +249,9 @@ HWTEST_F(BmsBundleMockAppControlTest, AppControlManagerRdb_0100, Function | Smal HWTEST_F(BmsBundleMockAppControlTest, AppControlManagerRdb_0110, Function | SmallTest | Level1) { AppControlManagerRdb rdb; - std::vector appIds; - appIds.push_back("appId"); + std::string appId = "appId"; AppRunningControlRuleResult controlRuleResult; - auto res = rdb.GetAppRunningControlRule(appIds, USERID, controlRuleResult); + auto res = rdb.GetAppRunningControlRule(appId, USERID, controlRuleResult); EXPECT_EQ(res, ERR_APPEXECFWK_DB_RESULT_SET_EMPTY); } diff --git a/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp index a5e3a0edd8ec599de4dd516488d4a74daca8c273..97315ef79db9ea8a7b47d2d7dc31484def460924 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp @@ -4931,6 +4931,58 @@ HWTEST_F(BmsBundleInstallerTest, UnInstallAppControl_0100, Function | SmallTest ret = installer.UninstallAppControl(installAppId, appIdentifier, userId); EXPECT_FALSE(ret); } + +/** + * @tc.number: UpdateAppInstallControlled_0100 + * @tc.name: test UpdateAppInstallControlled + * @tc.desc: test UpdateAppInstallControlled when set appIdentifier + */ +HWTEST_F(BmsBundleInstallerTest, UpdateAppInstallControlled_0100, Function | SmallTest | Level0) +{ + std::vector appIds = {APPID}; + auto result = DelayedSingleton::GetInstance()->AddAppInstallControlRule( + AppControlConstants::EDM_CALLING, appIds, AppControlConstants::APP_DISALLOWED_UNINSTALL, -5); + EXPECT_EQ(result, OHOS::ERR_OK); + + BaseBundleInstaller installer; + installer.bundleName_ = BUNDLE_NAME; + installer.dataMgr_ = DelayedSingleton::GetInstance()->GetDataMgr(); + installer.isAppExist_ = true; + InnerBundleInfo info; + info.baseApplicationInfo_->bundleName = BUNDLE_NAME; + info.SetAppIdentifier(APPID); + InnerBundleUserInfo innerUserInfo; + BundleUserInfo userInfo; + userInfo.userId = -5; + innerUserInfo.bundleUserInfo = userInfo; + info.SetBundleStatus(InnerBundleInfo::BundleStatus::DISABLED); + bool ret = installer.tempInfo_.SetTempBundleInfo(info); + EXPECT_TRUE(ret); + + InnerBundleInfo tempInfo; + installer.tempInfo_.GetTempBundleInfo(tempInfo); + installer.UpdateAppInstallControlled(-5); + info.SetBundleStatus(InnerBundleInfo::BundleStatus::DISABLED); + ret = installer.tempInfo_.SetTempBundleInfo(info); + EXPECT_TRUE(ret); + + info.baseBundleInfo_->appId = APPID; + ret = installer.tempInfo_.SetTempBundleInfo(info); + EXPECT_TRUE(ret); + installer.UpdateAppInstallControlled(-5); + installer.tempInfo_.GetTempBundleInfo(tempInfo); + EXPECT_EQ(tempInfo.GetBundleStatus(), InnerBundleInfo::BundleStatus::ENABLED); + info.SetBundleStatus(InnerBundleInfo::BundleStatus::DISABLED); + ret = installer.tempInfo_.SetTempBundleInfo(info); + EXPECT_TRUE(ret); + + info.SetAppIdentifier("appIdentifier"); + ret = installer.tempInfo_.SetTempBundleInfo(info); + EXPECT_TRUE(ret); + installer.UpdateAppInstallControlled(-5); + installer.tempInfo_.GetTempBundleInfo(tempInfo); + EXPECT_EQ(tempInfo.GetBundleStatus(), InnerBundleInfo::BundleStatus::ENABLED); +} #endif /**