diff --git a/services/distributeddataservice/service/rdb/rdb_service_impl.cpp b/services/distributeddataservice/service/rdb/rdb_service_impl.cpp index 2627d685dfba094b9bf142aa80f6e3edce73ffeb..c9662f01a2e1ad169a01b0d56b2ce1226f19aca4 100644 --- a/services/distributeddataservice/service/rdb/rdb_service_impl.cpp +++ b/services/distributeddataservice/service/rdb/rdb_service_impl.cpp @@ -208,7 +208,7 @@ int32_t RdbServiceImpl::OnFeatureExit(pid_t uid, pid_t pid, uint32_t tokenId, co return E_OK; } -bool RdbServiceImpl::CheckAccess(const std::string& bundleName, const std::string& storeName) +bool RdbServiceImpl::IsValidAccess(const std::string& bundleName, const std::string& storeName) { CheckerManager::StoreInfo storeInfo; storeInfo.uid = IPCSkeleton::GetCallingUid(); @@ -222,7 +222,7 @@ bool RdbServiceImpl::CheckAccess(const std::string& bundleName, const std::strin std::string RdbServiceImpl::ObtainDistributedTableName(const RdbSyncerParam ¶m, const std::string &device, const std::string &table) { - if (!CheckAccess(param.bundleName_, "")) { + if (!IsValidAccess(param.bundleName_, "")) { ZLOGE("bundleName:%{public}s. Permission error", param.bundleName_.c_str()); return ""; } @@ -244,7 +244,7 @@ std::string RdbServiceImpl::ObtainDistributedTableName(const RdbSyncerParam &par int32_t RdbServiceImpl::InitNotifier(const RdbSyncerParam ¶m, const sptr notifier) { XCollie xcollie(__FUNCTION__, XCollie::XCOLLIE_LOG | XCollie::XCOLLIE_RECOVERY); - if (!CheckAccess(param.bundleName_, "")) { + if (!IsValidAccess(param.bundleName_, "")) { ZLOGE("bundleName:%{public}s. Permission error", param.bundleName_.c_str()); return RDB_ERROR; } @@ -302,7 +302,7 @@ void RdbServiceImpl::UpdateMeta(const StoreMetaData &meta, const StoreMetaData & int32_t RdbServiceImpl::SetDistributedTables(const RdbSyncerParam ¶m, const std::vector &tables, const std::vector &references, bool isRebuild, int32_t type) { - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidParam(param) || !IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -423,7 +423,7 @@ RdbServiceImpl::DetailAsync RdbServiceImpl::GetCallbacks(uint32_t tokenId, const std::pair> RdbServiceImpl::RemoteQuery(const RdbSyncerParam& param, const std::string& device, const std::string& sql, const std::vector& selectionArgs) { - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidParam(param) || !IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return { RDB_ERROR, nullptr }; @@ -453,7 +453,7 @@ std::pair> RdbServiceImpl::R int32_t RdbServiceImpl::Sync(const RdbSyncerParam ¶m, const Option &option, const PredicatesMemo &predicates, const AsyncDetail &async) { - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidParam(param) || !IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -717,7 +717,7 @@ int32_t RdbServiceImpl::UnregisterAutoSyncCallback(const RdbSyncerParam& param, int32_t RdbServiceImpl::Delete(const RdbSyncerParam ¶m) { XCollie xcollie(__FUNCTION__, XCollie::XCOLLIE_LOG | XCollie::XCOLLIE_RECOVERY); - if (!CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -764,7 +764,7 @@ int32_t RdbServiceImpl::Delete(const RdbSyncerParam ¶m) std::pair> RdbServiceImpl::QuerySharingResource( const RdbSyncerParam& param, const PredicatesMemo& predicates, const std::vector& columns) { - if (!CheckAccess(param.bundleName_, param.storeName_) || + if (!IsValidAccess(param.bundleName_, param.storeName_) || !TokenIdKit::IsSystemAppByFullTokenID(IPCSkeleton::GetCallingFullTokenID())) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); @@ -805,7 +805,7 @@ std::pair> RdbServiceImpl::AllocResource(StoreI return result; } -bool RdbServiceImpl::CheckInvalidPath(const std::string ¶m) +bool RdbServiceImpl::IsValidPath(const std::string ¶m) { if ((param.find("/") != std::string::npos) || (param.find("\\") != std::string::npos) || (param == "..")) { return false; @@ -813,7 +813,7 @@ bool RdbServiceImpl::CheckInvalidPath(const std::string ¶m) return true; } -bool RdbServiceImpl::CheckCustomDir(const std::string &customDir, int32_t upLimit) +bool RdbServiceImpl::IsValidCustomDir(const std::string &customDir, int32_t upLimit) { if (customDir.empty()) { return true; @@ -838,26 +838,26 @@ bool RdbServiceImpl::CheckCustomDir(const std::string &customDir, int32_t upLimi return true; } -bool RdbServiceImpl::CheckParam(const RdbSyncerParam ¶m) +bool RdbServiceImpl::IsValidParam(const RdbSyncerParam ¶m) { if (param.storeName_.find("/") != std::string::npos) { ZLOGE("storeName is Invalid, storeName is %{public}s.", Anonymous::Change(param.storeName_).c_str()); return false; } - if (!CheckInvalidPath(param.bundleName_)) { + if (!IsValidPath(param.bundleName_)) { ZLOGE("bundleName is Invalid, bundleName is %{public}s.", param.bundleName_.c_str()); return false; } - if (!CheckInvalidPath(param.user_)) { + if (!IsValidPath(param.user_)) { ZLOGE("user is Invalid, user is %{public}s.", param.user_.c_str()); return false; } - if (!CheckInvalidPath(param.hapName_)) { + if (!IsValidPath(param.hapName_)) { ZLOGE("hapName is Invalid, hapName is %{public}s.", param.hapName_.c_str()); return false; } int32_t upLimit = param.hapName_.empty() ? 1 : VALID_PARAM_LENGTH; - if (!CheckCustomDir(param.customDir_, upLimit)) { + if (!IsValidCustomDir(param.customDir_, upLimit)) { ZLOGE("customDir is Invalid, customDir is %{public}s.", Anonymous::Change(param.customDir_).c_str()); return false; } @@ -867,7 +867,7 @@ bool RdbServiceImpl::CheckParam(const RdbSyncerParam ¶m) int32_t RdbServiceImpl::BeforeOpen(RdbSyncerParam ¶m) { XCollie xcollie(__FUNCTION__, XCollie::XCOLLIE_LOG | XCollie::XCOLLIE_RECOVERY); - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidParam(param) || !IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -943,7 +943,7 @@ void RdbServiceImpl::SaveSecretKeyMeta(const StoreMetaData &metaData, const std: int32_t RdbServiceImpl::AfterOpen(const RdbSyncerParam ¶m) { XCollie xcollie(__FUNCTION__, XCollie::XCOLLIE_LOG | XCollie::XCOLLIE_RECOVERY); - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidParam(param) || !IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -1004,7 +1004,7 @@ bool RdbServiceImpl::SaveAppIDMeta(const StoreMetaData &meta, const StoreMetaDat int32_t RdbServiceImpl::ReportStatistic(const RdbSyncerParam& param, const RdbStatEvent &statEvent) { - if (!CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -1232,8 +1232,8 @@ int32_t RdbServiceImpl::OnReady(const std::string &device) dataBase.autoSyncType == AutoSyncType::SYNC_ON_CHANGE_READY) && index > 0) { std::vector devices = {device}; - if (!DoOnlineSync(devices, dataBase)) { - ZLOGE("store online sync fail, storeId:%{public}s", dataBase.name.c_str()); + if (DoOnlineSync(devices, dataBase) != RDB_OK) { + ZLOGE("store online sync fail, storeId:%{public}s", Anonymous::Change(dataBase.name).c_str()); } index--; } @@ -1401,7 +1401,7 @@ int32_t RdbServiceImpl::NotifyDataChange( const RdbSyncerParam ¶m, const RdbChangedData &rdbChangedData, const RdbNotifyConfig &rdbNotifyConfig) { XCollie xcollie(__FUNCTION__, XCollie::XCOLLIE_LOG | XCollie::XCOLLIE_RECOVERY); - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidParam(param) || !IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -1417,7 +1417,7 @@ int32_t RdbServiceImpl::NotifyDataChange( storeInfo.deviceId = DmAdapter::GetInstance().GetLocalDevice().uuid; DataChangeEvent::EventInfo eventInfo; eventInfo.isFull = rdbNotifyConfig.isFull_; - if (!DoDataChangeSync(storeInfo, rdbChangedData)) { + if (DoDataChangeSync(storeInfo, rdbChangedData) != RDB_OK) { ZLOGE("store datachange sync fail, storeId:%{public}s", Anonymous::Change(storeInfo.storeName).c_str()); } for (const auto &[key, value] : rdbChangedData.tableData) { @@ -1473,7 +1473,7 @@ bool RdbServiceImpl::IsPostImmediately(const int32_t callingPid, const RdbNotify int32_t RdbServiceImpl::SetSearchable(const RdbSyncerParam& param, bool isSearchable) { XCollie xcollie(__FUNCTION__, XCollie::XCOLLIE_LOG | XCollie::XCOLLIE_RECOVERY); - if (!CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -1545,7 +1545,7 @@ std::vector RdbServiceImpl::LoadSecretKey(const StoreMetaData &metaData int32_t RdbServiceImpl::GetPassword(const RdbSyncerParam ¶m, std::vector> &password) { - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -1578,7 +1578,7 @@ StoreInfo RdbServiceImpl::GetStoreInfo(const RdbSyncerParam ¶m) std::pair RdbServiceImpl::LockCloudContainer(const RdbSyncerParam ¶m) { std::pair result { RDB_ERROR, 0 }; - if (!CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return result; @@ -1600,7 +1600,7 @@ std::pair RdbServiceImpl::LockCloudContainer(const RdbSyncerP int32_t RdbServiceImpl::UnlockCloudContainer(const RdbSyncerParam ¶m) { int32_t result = RDB_ERROR; - if (!CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return result; @@ -1621,7 +1621,7 @@ int32_t RdbServiceImpl::UnlockCloudContainer(const RdbSyncerParam ¶m) int32_t RdbServiceImpl::GetDebugInfo(const RdbSyncerParam ¶m, std::map &debugInfo) { - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; @@ -1674,7 +1674,7 @@ int32_t RdbServiceImpl::SaveDebugInfo(const StoreMetaData &metaData, const RdbSy int32_t RdbServiceImpl::GetDfxInfo(const RdbSyncerParam ¶m, DistributedRdb::RdbDfxInfo &dfxInfo) { - if (!CheckParam(param) || !CheckAccess(param.bundleName_, param.storeName_)) { + if (!IsValidAccess(param.bundleName_, param.storeName_)) { ZLOGE("bundleName:%{public}s, storeName:%{public}s. Permission error", param.bundleName_.c_str(), Anonymous::Change(param.storeName_).c_str()); return RDB_ERROR; diff --git a/services/distributeddataservice/service/rdb/rdb_service_impl.h b/services/distributeddataservice/service/rdb/rdb_service_impl.h index 33c01c74e16cbde63d8388fa59ddd5d2ffe8e554..326ece088b4ebe721b393e33e8c2c129cb57f746 100644 --- a/services/distributeddataservice/service/rdb/rdb_service_impl.h +++ b/services/distributeddataservice/service/rdb/rdb_service_impl.h @@ -211,13 +211,13 @@ private: void SaveLaunchInfo(StoreMetaData &meta); - static bool CheckAccess(const std::string& bundleName, const std::string& storeName); + static bool IsValidAccess(const std::string& bundleName, const std::string& storeName); - static bool CheckInvalidPath(const std::string& param); + static bool IsValidPath(const std::string& param); - static bool CheckCustomDir(const std::string &customDir, int32_t upLimit); + static bool IsValidCustomDir(const std::string &customDir, int32_t upLimit); - static bool CheckParam(const RdbSyncerParam ¶m); + static bool IsValidParam(const RdbSyncerParam ¶m); static StoreMetaData GetStoreMetaData(const RdbSyncerParam ¶m); diff --git a/services/distributeddataservice/service/test/rdb_service_impl_test.cpp b/services/distributeddataservice/service/test/rdb_service_impl_test.cpp index 5a59ce33d624604ef72509e2d96f1e7ff50bb0e5..479f8291398c045175ae0a989ead35d3db0eec8c 100644 --- a/services/distributeddataservice/service/test/rdb_service_impl_test.cpp +++ b/services/distributeddataservice/service/test/rdb_service_impl_test.cpp @@ -29,6 +29,7 @@ #include "metadata/meta_data_manager.h" #include "metadata/store_meta_data.h" #include "metadata/store_meta_data_local.h" +#include "metadata/store_debug_info.h" #include "mock/db_store_mock.h" #include "rdb_service_impl.h" #include "rdb_types.h" @@ -996,23 +997,43 @@ HWTEST_F(RdbServiceImplTest, GetPassword005, TestSize.Level0) /** * @tc.name: GetPassword006 - * @tc.desc: Test GetPassword when CheckParam not pass. + * @tc.desc: Test GetPassword when meta data is found. * @tc.type: FUNC * @tc.require: - * @tc.author: zd + * @tc.author: zhaojh */ HWTEST_F(RdbServiceImplTest, GetPassword006, TestSize.Level0) { + MetaDataManager::GetInstance().Initialize(dbStoreMock_, nullptr, ""); + auto meta = metaData_; + meta.isEncrypt = true; + auto sKey = Random(KEY_LENGTH); + ASSERT_FALSE(sKey.empty()); + SecretKeyMetaData secretKey; + CryptoManager::CryptoParams encryptParams; + secretKey.sKey = CryptoManager::GetInstance().Encrypt(sKey, encryptParams); + secretKey.area = encryptParams.area; + secretKey.storeType = meta.storeType; + secretKey.nonce = encryptParams.nonce; + + EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(meta.GetKey(), meta, true), true); + EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(meta.GetCloneSecretKey(), secretKey, true), true); + RdbServiceImpl service; RdbSyncerParam param; - param.bundleName_ = TEST_BUNDLE; - param.storeName_ = TEST_STORE; - param.hapName_ = "test/test"; + param.bundleName_ = meta.bundleName; + param.storeName_ = meta.storeId; + param.type_ = meta.storeType; + param.customDir_ = "../../../base/haps/entry/files/.backup/textautofill"; std::vector> password; int32_t result = service.GetPassword(param, password); - EXPECT_EQ(result, RDB_ERROR); + EXPECT_EQ(result, RDB_OK); + ASSERT_GT(password.size(), 0); + EXPECT_EQ(password.at(0), sKey); + MetaDataManager::GetInstance().DelMeta(meta.GetKey(), true); + MetaDataManager::GetInstance().DelMeta(meta.GetCloneSecretKey(), true); } /** @@ -1243,81 +1264,32 @@ HWTEST_F(RdbServiceImplTest, GetDfxInfo001, TestSize.Level0) /** * @tc.name: GetDfxInfo002 - * @tc.desc: Test GetDfxInfo when CheckParam not pass. + * @tc.desc: Test GetPassword when meta data is found. * @tc.type: FUNC * @tc.require: - * @tc.author: zd + * @tc.author: zhaojh */ HWTEST_F(RdbServiceImplTest, GetDfxInfo002, TestSize.Level0) { - RdbServiceImpl service; - RdbSyncerParam param; - param.bundleName_ = TEST_BUNDLE; - param.storeName_ = TEST_STORE; - param.hapName_ = "test/test"; - DistributedRdb::RdbDfxInfo dfxInfo; - int32_t result = service.GetDfxInfo(param, dfxInfo); - EXPECT_EQ(result, RDB_ERROR); -} - -/** - * @tc.name: GetDfxInfo003 - * @tc.desc: Test GetDfxInfo when CheckParam not pass. - * @tc.type: FUNC - * @tc.require: - * @tc.author: zd - */ -HWTEST_F(RdbServiceImplTest, GetDfxInfo003, TestSize.Level0) -{ - RdbServiceImpl service; - RdbSyncerParam param; - param.bundleName_ = TEST_BUNDLE; - param.storeName_ = TEST_STORE; - DistributedRdb::RdbDfxInfo dfxInfo; - int32_t result = service.GetDfxInfo(param, dfxInfo); - EXPECT_EQ(result, RDB_OK); -} + MetaDataManager::GetInstance().Initialize(dbStoreMock_, nullptr, ""); + auto meta = metaData_; + DistributedData::StoreDfxInfo dfxMeta; + dfxMeta.lastOpenTime = "test"; + EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(meta.GetKey(), meta, true), true); + EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(meta.GetDfxInfoKey(), dfxMeta, true), true); -/** - * @tc.name: GetDfxInfo004 - * @tc.desc: Test GetDfxInfo when CheckParam not pass. - * @tc.type: FUNC - * @tc.require: - * @tc.author: zd - */ -HWTEST_F(RdbServiceImplTest, GetDfxInfo004, TestSize.Level0) -{ - EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(metaData_.GetKeyWithoutPath(), metaData_, false), true); RdbServiceImpl service; RdbSyncerParam param; - param.bundleName_ = TEST_BUNDLE; - param.storeName_ = TEST_STORE; - DistributedRdb::RdbDfxInfo dfxInfo; - int32_t result = service.GetDfxInfo(param, dfxInfo); - EXPECT_EQ(result, RDB_OK); - EXPECT_EQ(MetaDataManager::GetInstance().DelMeta(metaData_.GetKeyWithoutPath(), false), true); -} - -/** - * @tc.name: GetDfxInfo005 - * @tc.desc: Test GetDfxInfo when CheckParam not pass. - * @tc.type: FUNC - * @tc.require: - * @tc.author: zd - */ -HWTEST_F(RdbServiceImplTest, GetDfxInfo005, TestSize.Level0) -{ - EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(metaData_.GetKeyWithoutPath(), metaData_, false), true); - EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(metaData_.GetDfxInfoKey(), metaData_, false), true); - RdbServiceImpl service; - RdbSyncerParam param; - param.bundleName_ = TEST_BUNDLE; - param.storeName_ = TEST_STORE; + param.bundleName_ = meta.bundleName; + param.storeName_ = meta.storeId; + param.type_ = meta.storeType; + param.customDir_ = "../../../base/haps/entry/files/.backup/textautofill"; DistributedRdb::RdbDfxInfo dfxInfo; int32_t result = service.GetDfxInfo(param, dfxInfo); + EXPECT_EQ(dfxInfo.lastOpenTime_, "test"); EXPECT_EQ(result, RDB_OK); - EXPECT_EQ(MetaDataManager::GetInstance().DelMeta(metaData_.GetKeyWithoutPath(), false), true); - EXPECT_EQ(MetaDataManager::GetInstance().DelMeta(metaData_.GetDfxInfoKey(), false), true); + MetaDataManager::GetInstance().DelMeta(meta.GetKey(), true); + MetaDataManager::GetInstance().DelMeta(meta.GetDfxInfoKey(), true); } /** @@ -1425,24 +1397,52 @@ HWTEST_F(RdbServiceImplTest, GetDebugInfo001, TestSize.Level0) /** * @tc.name: GetDebugInfo002 - * @tc.desc: Test GetDebugInfo when CheckSyncParam fails. + * @tc.desc: Test GetDebugInfo when CheckAccess pass. * @tc.type: FUNC * @tc.require: * @tc.author: zhaojh */ HWTEST_F(RdbServiceImplTest, GetDebugInfo002, TestSize.Level0) { + auto meta = metaData_; + DistributedData::StoreDebugInfo debugMeta; + DistributedData::StoreDebugInfo::FileInfo fileInfo1; + fileInfo1.inode = 4; + fileInfo1.size = 5; + fileInfo1.dev = 6; + fileInfo1.mode = 7; + fileInfo1.uid = 8; + fileInfo1.gid = 9; + debugMeta.fileInfos.insert(std::pair{ "test1", fileInfo1 }); + EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(meta.GetKey(), meta, true), true); + EXPECT_EQ(MetaDataManager::GetInstance().SaveMeta(meta.GetDebugInfoKey(), debugMeta, true), true); RdbServiceImpl service; RdbSyncerParam param; param.bundleName_ = metaData_.bundleName; + param.type_ = metaData_.storeType; + param.level_ = metaData_.securityLevel; + param.area_ = metaData_.area; + param.hapName_ = metaData_.bundleName; param.storeName_ = metaData_.storeId; - param.hapName_ = "test/test"; + param.isEncrypt_ = metaData_.isEncrypt; + param.isSearchable_ = metaData_.isSearchable; + param.haMode_ = metaData_.haMode; + param.asyncDownloadAsset_ = metaData_.asyncDownloadAsset; + param.user_ = metaData_.user; + param.customDir_ = "../../../base/haps/entry/files/.backup/textautofill"; std::map debugInfo; - int32_t result = service.GetDebugInfo(param, debugInfo); - - EXPECT_EQ(result, RDB_ERROR); - EXPECT_TRUE(debugInfo.empty()); + EXPECT_EQ(result, RDB_OK); + RdbDebugInfo rdbInfo = debugInfo["test1"]; + EXPECT_EQ(rdbInfo.inode_, 4); + EXPECT_EQ(rdbInfo.size_, 5); + EXPECT_EQ(rdbInfo.dev_, 6); + EXPECT_EQ(rdbInfo.mode_, 7); + EXPECT_EQ(rdbInfo.uid_, 8); + EXPECT_EQ(rdbInfo.gid_, 9); + EXPECT_EQ(debugInfo.size(), 1); + MetaDataManager::GetInstance().DelMeta(meta.GetKey(), true); + MetaDataManager::GetInstance().DelMeta(meta.GetDebugInfoKey(), true); } /** @@ -1518,18 +1518,18 @@ HWTEST_F(RdbServiceImplTest, CheckParam001, TestSize.Level0) param.user_ = "test"; param.customDir_ = "test"; - bool result = service.CheckParam(param); + bool result = service.IsValidParam(param); EXPECT_EQ(result, false); param.bundleName_ = ".."; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.bundleName_ = "test\\..test"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); } @@ -1551,18 +1551,18 @@ HWTEST_F(RdbServiceImplTest, CheckParam002, TestSize.Level0) param.user_ = "test"; param.customDir_ = "test"; - bool result = service.CheckParam(param); + bool result = service.IsValidParam(param); EXPECT_EQ(result, false); param.hapName_ = ".."; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.hapName_ = "test\\..test"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); } @@ -1584,18 +1584,18 @@ HWTEST_F(RdbServiceImplTest, CheckParam003, TestSize.Level0) param.user_ = "test/test"; param.customDir_ = "test"; - bool result = service.CheckParam(param); + bool result = service.IsValidParam(param); EXPECT_EQ(result, false); param.user_ = ".."; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.user_ = "test\\..test"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); } @@ -1617,7 +1617,7 @@ HWTEST_F(RdbServiceImplTest, CheckParam004, TestSize.Level0) param.user_ = "test"; param.customDir_ = "test"; - bool result = service.CheckParam(param); + bool result = service.IsValidParam(param); EXPECT_EQ(result, true); } @@ -1639,7 +1639,7 @@ HWTEST_F(RdbServiceImplTest, CheckParam005, TestSize.Level0) param.user_ = "test"; param.customDir_ = "test"; - bool result = service.CheckParam(param); + bool result = service.IsValidParam(param); EXPECT_EQ(result, false); } @@ -1660,59 +1660,59 @@ HWTEST_F(RdbServiceImplTest, CheckParam006, TestSize.Level0) param.storeName_ = "test"; param.user_ = "test"; param.customDir_ = "test/../../test/../../../"; - bool result = service.CheckParam(param); + bool result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/../test/../../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/../../../test/../../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/./../../test/../../../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/.../../../test/../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "test/test/../../../test/test/../test/../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "test/test/../../../../../test/test/test/"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = ""; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "/test"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test//////////////////..///////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "test/..//////////////////..///////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/..//////////////////..///////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/..////./././///////////..///////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/..////./././//////////////////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); } @@ -1732,59 +1732,59 @@ HWTEST_F(RdbServiceImplTest, CheckParam007, TestSize.Level0) param.storeName_ = "test"; param.user_ = "test"; param.customDir_ = "test/../../test/../../../"; - bool result = service.CheckParam(param); + bool result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/../test/../../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/../../../test/../../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/../../../test/../../../../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/.../../test/../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "test/test/../../../test/test/../test/../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "test/test/../../../../../test/test/test/"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = ""; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "/test"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test//////////////////..///////../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); param.customDir_ = "test/..//////////////////..///////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/..//////////////////..///////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/..////./././///////////..///////../../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, false); param.customDir_ = "test/..////./././///////////////////../"; - result = service.CheckParam(param); + result = service.IsValidParam(param); EXPECT_EQ(result, true); }