diff --git a/services/distributeddataservice/service/test/BUILD.gn b/services/distributeddataservice/service/test/BUILD.gn index ef922b621965cfc869cf64f12b4f7270b907e679..75a0978423070cbd2a1f0b578e75dea5f7f7d257 100755 --- a/services/distributeddataservice/service/test/BUILD.gn +++ b/services/distributeddataservice/service/test/BUILD.gn @@ -1119,6 +1119,8 @@ ohos_unittest("UdmfServiceImplTest") { external_deps = [ "ability_runtime:uri_permission_mgr", "access_token:libaccesstoken_sdk", + "access_token:libnativetoken", + "access_token:libtoken_setproc", "app_file_service:remote_file_share_native", "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", diff --git a/services/distributeddataservice/service/test/udmf_service_impl_test.cpp b/services/distributeddataservice/service/test/udmf_service_impl_test.cpp index d93a559053eff8627f4732a64cfbba2c83a59132..84624a3d1ad67ea5c94cd0a9e4e7a34992a05d7a 100644 --- a/services/distributeddataservice/service/test/udmf_service_impl_test.cpp +++ b/services/distributeddataservice/service/test/udmf_service_impl_test.cpp @@ -14,22 +14,105 @@ */ #define LOG_TAG "UdmfServiceImplTest" +#include +#include +#include "token_setproc.h" +#include "accesstoken_kit.h" +#include "plain_text.h" +#include "nativetoken_kit.h" +#include "unified_data_helper.h" #include "udmf_service_impl.h" #include "gtest/gtest.h" #include "error_code.h" #include "text.h" using namespace OHOS::DistributedData; +using namespace OHOS::Security::AccessToken; namespace OHOS::UDMF { using namespace testing::ext; class UdmfServiceImplTest : public testing::Test { public: - static void SetUpTestCase(void) {} - static void TearDownTestCase(void) {} - void SetUp() {} - void TearDown() {} + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp() override; + void TearDown() override; + static void AllocHapToken1(); + void SetHapToken1(); + void SetNativeToken(const std::string &processName); + static constexpr int userId = 100; + static constexpr int instIndex = 0; }; +void UdmfServiceImplTest::SetUpTestCase() +{ + AllocHapToken1(); +} + +void UdmfServiceImplTest::TearDownTestCase() +{ + auto tokenId = AccessTokenKit::GetHapTokenID(userId, "ohos.file.manger.test.demo1", instIndex); + AccessTokenKit::DeleteToken(tokenId); +} + +void UdmfServiceImplTest::SetUp() +{ + SetHapToken1(); +} + +void UdmfServiceImplTest::TearDown() +{ +} + +void UdmfServiceImplTest::SetNativeToken(const std::string &processName) +{ + auto tokenId = AccessTokenKit::GetNativeTokenId(processName); + SetSelfTokenID(tokenId); +} + +void UdmfServiceImplTest::AllocHapToken1() +{ + HapInfoParams info = { + .userID = userId, + .bundleName = "ohos.test.demo1", + .instIndex = instIndex, + .appIDDesc = "ohos.test.demo1" + }; + + HapPolicyParams policy = { + .apl = APL_NORMAL, + .domain = "test.domain", + .permList = { + { + .permissionName = "ohos.permission.test", + .bundleName = "ohos.test.demo1", + .grantMode = 1, + .availableLevel = APL_NORMAL, + .label = "label", + .labelId = 1, + .description = "test1", + .descriptionId = 1 + } + }, + .permStateList = { + { + .permissionName = "ohos.permission.test", + .isGeneral = true, + .resDeviceID = { "local" }, + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .grantFlags = { 1 } + } + } + }; + auto tokenID = AccessTokenKit::AllocHapToken(info, policy); + SetSelfTokenID(tokenID.tokenIDEx); +} + +void UdmfServiceImplTest::SetHapToken1() +{ + auto tokenId = AccessTokenKit::GetHapTokenID(userId, "ohos.test.demo1", instIndex); + SetSelfTokenID(tokenId); +} + /** * @tc.name: SaveData001 * @tc.desc: Abnormal test of SaveData, unifiedData is invalid @@ -240,4 +323,127 @@ HWTEST_F(UdmfServiceImplTest, TransferToEntriesIfNeedTest001, TestSize.Level1) int recordSize = 2; EXPECT_EQ(data.GetRecords().size(), recordSize); } + +/** +* @tc.name: UpdataDataTest001 +* @tc.desc: UpdataData test +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(UdmfServiceImplTest, UpdataDataTest001, TestSize.Level1) +{ + UnifiedData data; + auto plainText = std::make_shared(); + plainText->SetContent("content1"); + data.AddRecord(plainText); + CustomOption customOption = { .intention = Intention::UD_INTENTION_DRAG }; + std::string key; + UdmfServiceImpl udmfServiceImpl; + customOption.tokenId = AccessTokenKit::GetHapTokenID(userId, "ohos.file.manger.test.demo1", instIndex); + auto status = udmfServiceImpl.SetData(customOption, data, key); + ASSERT_EQ(status, E_OK); + QueryOption query; + query.key = key; + status = udmfServiceImpl.UpdateData(query, data); + ASSERT_EQ(status, E_INVALID_PARAMETERS); +} + +/** +* @tc.name: UpdataDataTest002 +* @tc.desc: UpdataData test +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(UdmfServiceImplTest, UpdataDataTest002, TestSize.Level1) +{ + UnifiedData data; + auto plainText = std::make_shared<PlainText>(); + plainText->SetContent("content1"); + data.AddRecord(plainText); + CustomOption customOption = { .intention = Intention::UD_INTENTION_MENU }; + std::string key; + UdmfServiceImpl udmfServiceImpl; + customOption.tokenId = AccessTokenKit::GetHapTokenID(userId, "ohos.file.manger.test.demo1", instIndex); + auto status = udmfServiceImpl.SetData(customOption, data, key); + ASSERT_EQ(status, E_OK); + QueryOption query; + query.key = key; + status = udmfServiceImpl.UpdateData(query, data); + ASSERT_EQ(status, E_INVALID_PARAMETERS); +} + +/** +* @tc.name: ProcessData001 +* @tc.desc: ProcessData test +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(UdmfServiceImplTest, ProcessData001, TestSize.Level1) +{ + std::vector<UnifiedData> unifiedDataSet; + QueryOption query; + query.key = "//aaabbbccc/com.hmos.photos/CSl;cdcGFcmdkasaccCSCAAScscdc"; + UdmfServiceImpl udmfServiceImpl; + auto status = udmfServiceImpl.ProcessData(query, unifiedDataSet); + EXPECT_EQ(status, E_INVALID_PARAMETERS); + status = udmfServiceImpl.DeleteData(query, unifiedDataSet); + EXPECT_EQ(status, E_INVALID_PARAMETERS); + std::shared_ptr<Store> store; + status = udmfServiceImpl.QueryDataCommon(query, unifiedDataSet, store); + EXPECT_EQ(status, E_INVALID_PARAMETERS); +} + +/** +* @tc.name: DeleteDataTest001 +* @tc.desc: DeleteData test +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(UdmfServiceImplTest, DeleteDataTest001, TestSize.Level1) +{ + UnifiedData data; + auto plainText = std::make_shared<PlainText>(); + plainText->SetContent("content1"); + data.AddRecord(plainText); + CustomOption customOption = { .intention = Intention::UD_INTENTION_MENU }; + std::string key; + UdmfServiceImpl udmfServiceImpl; + customOption.tokenId = AccessTokenKit::GetHapTokenID(userId, "ohos.file.manger.test.demo1", instIndex); + auto status = udmfServiceImpl.SetData(customOption, data, key); + ASSERT_EQ(status, E_OK); + QueryOption query; + query.key = key; + query.intention = Intention::UD_INTENTION_SYSTEM_SHARE; + std::vector<UnifiedData> unifiedDataSet; + status = udmfServiceImpl.DeleteData(query, unifiedDataSet); + ASSERT_EQ(status, E_INVALID_PARAMETERS); +} + +/** +* @tc.name: CheckAddPrivilegePermissionTest001 +* @tc.desc: CheckAddPrivilegePermission test +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(UdmfServiceImplTest, CheckAddPrivilegePermissionTest001, TestSize.Level1) +{ + UdmfServiceImpl udmfServiceImpl; + UnifiedData data; + auto plainText = std::make_shared<PlainText>(); + plainText->SetContent("content1"); + data.AddRecord(plainText); + CustomOption customOption = { .intention = Intention::UD_INTENTION_MENU }; + std::string key; + customOption.tokenId = AccessTokenKit::GetHapTokenID(userId, "ohos.file.manger.test.demo1", instIndex); + auto status = udmfServiceImpl.SetData(customOption, data, key); + ASSERT_EQ(status, E_OK); + QueryOption query; + query.key = key; + query.intention = Intention::UD_INTENTION_SYSTEM_SHARE; + Privilege privilege; + privilege.tokenId = AccessTokenKit::GetHapTokenID(userId, "ohos.file.manger.test.demo1", instIndex); + SetNativeToken("foundation"); + status = udmfServiceImpl.AddPrivilege(query, privilege); + ASSERT_EQ(status, E_INVALID_PARAMETERS); +} }; // namespace UDMF \ No newline at end of file