• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #define LOG_TAG "ObjectServiceImplTest"
17 
18 #include "object_service_impl.h"
19 
20 #include <gtest/gtest.h>
21 
22 #include "accesstoken_kit.h"
23 #include "device_manager_adapter_mock.h"
24 #include "ipc_skeleton.h"
25 #include "token_setproc.h"
26 
27 using namespace testing::ext;
28 using namespace OHOS::DistributedObject;
29 using namespace std;
30 using namespace testing;
31 namespace OHOS::Test {
32 class ObjectServiceImplTest : public testing::Test {
33 public:
34     void SetUp();
35     void TearDown();
36 protected:
37     ObjectStore::Asset asset_;
38     std::string uri_;
39     std::string appId_ = "ObjectServiceImplTest_appid_1";
40     std::string sessionId_ = "123";
41     std::vector<uint8_t> data_;
42     std::string deviceId_ = "7001005458323933328a258f413b3900";
43     uint64_t sequenceId_ = 10;
44     uint64_t sequenceId_2 = 20;
45     uint64_t sequenceId_3 = 30;
46     std::string userId_ = "100";
47     std::string bundleName_ = "test_bundleName";
48     ObjectStore::AssetBindInfo assetBindInfo_;
49     pid_t pid_ = 10;
50     uint32_t tokenId_ = 100;
51     static inline std::shared_ptr<DeviceManagerAdapterMock> devMgrAdapterMock = nullptr;
52 };
53 
SetUp()54 void ObjectServiceImplTest::SetUp()
55 {
56     uri_ = "file:://com.examples.notepad/data/storage/el2/distributedfiles/dir/asset1.jpg";
57     ObjectStore::Asset asset{
58         .id = "test_name",
59         .name = uri_,
60         .uri = uri_,
61         .createTime = "2025.03.05",
62         .modifyTime = "modifyTime",
63         .size = "size",
64         .hash = "modifyTime_size",
65         .path = "/data/storage/el2",
66     };
67     asset_ = asset;
68 
69     data_.push_back(sequenceId_);
70     data_.push_back(sequenceId_2);
71     data_.push_back(sequenceId_3);
72 
73     ObjectStore::AssetBindInfo AssetBindInfo{
74         .storeName = "store_test",
75         .tableName = "table_test",
76         .field = "attachment",
77         .assetName = "asset1.jpg",
78     };
79     assetBindInfo_ = AssetBindInfo;
80     devMgrAdapterMock = make_shared<DeviceManagerAdapterMock>();
81     BDeviceManagerAdapter::deviceManagerAdapter = devMgrAdapterMock;
82 }
83 
TearDown()84 void ObjectServiceImplTest::TearDown()
85 {
86     devMgrAdapterMock = nullptr;
87 }
88 
89 /**
90  * @tc.name: OnAssetChanged001
91  * @tc.desc: OnAssetChanged test.
92  * @tc.type: FUNC
93  */
94 HWTEST_F(ObjectServiceImplTest, OnAssetChanged001, TestSize.Level1)
95 {
96     std::string bundleName = "com.examples.notepad";
97     OHOS::Security::AccessToken::AccessTokenID tokenId =
98         OHOS::Security::AccessToken::AccessTokenKit::GetHapTokenID(100, bundleName, 0);
99         SetSelfTokenID(tokenId);
100 
101     std::shared_ptr<ObjectServiceImpl> objectServiceImpl = std::make_shared<ObjectServiceImpl>();
102 
103     // bundleName not equal tokenId
104     auto ret = objectServiceImpl->OnAssetChanged(bundleName_, sessionId_, deviceId_, asset_);
105     EXPECT_EQ(ret, OBJECT_PERMISSION_DENIED);
106 }
107 
108 /**
109  * @tc.name: BindAssetStore001
110  * @tc.desc: BindAssetStore test.
111  * @tc.type: FUNC
112  */
113 HWTEST_F(ObjectServiceImplTest, BindAssetStore001, TestSize.Level1)
114 {
115     std::string bundleName = "com.examples.notepad";
116     OHOS::Security::AccessToken::AccessTokenID tokenId =
117         OHOS::Security::AccessToken::AccessTokenKit::GetHapTokenID(100, bundleName, 0);
118         SetSelfTokenID(tokenId);
119 
120     std::shared_ptr<ObjectServiceImpl> objectServiceImpl = std::make_shared<ObjectServiceImpl>();
121 
122     // bundleName not equal tokenId
123     auto ret = objectServiceImpl->BindAssetStore(bundleName_, sessionId_, asset_, assetBindInfo_);
124     EXPECT_EQ(ret, OBJECT_PERMISSION_DENIED);
125 }
126 
127 /**
128  * @tc.name: DeleteSnapshot001
129  * @tc.desc: DeleteSnapshot test.
130  * @tc.type: FUNC
131  */
132 HWTEST_F(ObjectServiceImplTest, DeleteSnapshot001, TestSize.Level1)
133 {
134     std::string bundleName = "com.examples.notepad";
135     OHOS::Security::AccessToken::AccessTokenID tokenId =
136         OHOS::Security::AccessToken::AccessTokenKit::GetHapTokenID(100, bundleName, 0);
137         SetSelfTokenID(tokenId);
138 
139     std::shared_ptr<ObjectServiceImpl> objectServiceImpl = std::make_shared<ObjectServiceImpl>();
140 
141     // bundleName not equal tokenId
142     auto ret = objectServiceImpl->DeleteSnapshot(bundleName_, sessionId_);
143     EXPECT_EQ(ret, OBJECT_PERMISSION_DENIED);
144 }
145 
146 /**
147  * @tc.name: ResolveAutoLaunch001
148  * @tc.desc: ResolveAutoLaunch test.
149  * @tc.type: FUNC
150  */
151 HWTEST_F(ObjectServiceImplTest, ResolveAutoLaunch001, TestSize.Level1)
152 {
153     DistributedDB::AutoLaunchParam param {
154         .userId = userId_,
155         .appId = appId_,
156         .storeId = "storeId",
157     };
158     std::string identifier = "identifier";
159     std::shared_ptr<ObjectServiceImpl> objectServiceImpl = std::make_shared<ObjectServiceImpl>();
160     int32_t ret = objectServiceImpl->ResolveAutoLaunch(identifier, param);
161     EXPECT_EQ(ret, OBJECT_SUCCESS);
162 }
163 
164 /**
165  * @tc.name: OnInitialize001
166  * @tc.desc: OnInitialize test.
167  * @tc.type: FUNC
168  */
169 HWTEST_F(ObjectServiceImplTest, OnInitialize001, TestSize.Level1)
170 {
171     std::shared_ptr<ObjectServiceImpl> objectServiceImpl = std::make_shared<ObjectServiceImpl>();
172     objectServiceImpl->executors_ = nullptr;
173     DeviceInfo devInfo = { .uuid = "123" };
174     EXPECT_CALL(*devMgrAdapterMock, GetLocalDevice())
175         .WillOnce(Return(devInfo));
176     int32_t ret = objectServiceImpl->OnInitialize();
177     EXPECT_EQ(ret, OBJECT_INNER_ERROR);
178 }
179 
180 /**
181  * @tc.name: RegisterProgressObserver001
182  * @tc.desc: RegisterProgressObserver test.
183  * @tc.type: FUNC
184  */
185 HWTEST_F(ObjectServiceImplTest, RegisterProgressObserver001, TestSize.Level1)
186 {
187     std::shared_ptr<ObjectServiceImpl> objectServiceImpl = std::make_shared<ObjectServiceImpl>();
188     sptr<IRemoteObject> callback;
189     int32_t ret = objectServiceImpl->RegisterProgressObserver(bundleName_, sessionId_, callback);
190     EXPECT_EQ(ret, OBJECT_PERMISSION_DENIED);
191 }
192 
193 /**
194  * @tc.name: UnregisterProgressObserver001
195  * @tc.desc: UnregisterProgressObserver test.
196  * @tc.type: FUNC
197  */
198 HWTEST_F(ObjectServiceImplTest, UnregisterProgressObserver001, TestSize.Level1)
199 {
200     std::shared_ptr<ObjectServiceImpl> objectServiceImpl = std::make_shared<ObjectServiceImpl>();
201     int32_t ret = objectServiceImpl->UnregisterProgressObserver(bundleName_, sessionId_);
202     EXPECT_EQ(ret, OBJECT_PERMISSION_DENIED);
203 }
204 }