1 /*
2  * Copyright (c) 2024 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 #include "network/softbus/softbus_handler_asset.h"
16 
17 #include <fcntl.h>
18 #include <gmock/gmock.h>
19 #include "gtest/gtest.h"
20 #include <memory>
21 #include <string>
22 
23 #include "device_manager_impl_mock.h"
24 #include "dfs_error.h"
25 #include "network/softbus/softbus_session_pool.h"
26 #include "socket_mock.h"
27 
28 namespace OHOS {
29 namespace Storage {
30 namespace DistributedFile {
31 namespace Test {
32 using namespace OHOS::FileManagement;
33 using namespace std;
34 using namespace testing;
35 using namespace testing::ext;
36 
37 DistributedHardware::DmDeviceInfo deviceInfo = {
38     .deviceId = "testdevid",
39     .deviceName = "testdevname",
40     .deviceTypeId = 1,
41     .networkId = "testNetWork",
42     .authForm = DmAuthForm::ACROSS_ACCOUNT,
43 };
44 
45 class SoftBusHandlerAssetTest : public testing::Test {
46 public:
47     static void SetUpTestCase(void);
48     static void TearDownTestCase(void);
49     void SetUp();
50     void TearDown();
51     static inline shared_ptr<SocketMock> socketMock_ = nullptr;
52     static inline shared_ptr<DeviceManagerImplMock> deviceManagerImplMock_ = nullptr;
53 };
54 
SetUpTestCase(void)55 void SoftBusHandlerAssetTest::SetUpTestCase(void)
56 {
57     GTEST_LOG_(INFO) << "SetUpTestCase";
58     socketMock_ = make_shared<SocketMock>();
59     SocketMock::dfsSocket = socketMock_;
60     deviceManagerImplMock_ = make_shared<DeviceManagerImplMock>();
61     DeviceManagerImplMock::dfsDeviceManagerImpl = deviceManagerImplMock_;
62 }
63 
TearDownTestCase(void)64 void SoftBusHandlerAssetTest::TearDownTestCase(void)
65 {
66     GTEST_LOG_(INFO) << "TearDownTestCase";
67     SocketMock::dfsSocket = nullptr;
68     socketMock_ = nullptr;
69     DeviceManagerImplMock::dfsDeviceManagerImpl = nullptr;
70     deviceManagerImplMock_ = nullptr;
71 }
72 
SetUp(void)73 void SoftBusHandlerAssetTest::SetUp(void)
74 {
75     GTEST_LOG_(INFO) << "SetUp";
76 }
77 
TearDown(void)78 void SoftBusHandlerAssetTest::TearDown(void)
79 {
80     GTEST_LOG_(INFO) << "TearDown";
81 }
82 
83 /**
84  * @tc.name: SoftBusHandlerAssetTest_CreateAssetLocalSessionServer_0100
85  * @tc.desc: Verify the CreateAssetLocalSessionServe function.
86  * @tc.type: FUNC
87  * @tc.require: I9JXPR
88  */
89 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_CreateAssetLocalSessionServer_0100, TestSize.Level1)
90 {
91     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_CreateAssetLocalSessionServer_0100 start";
92     std::string sessionName = SoftBusHandlerAsset::ASSET_LOCAL_SESSION_NAME;
93     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
94     softBusHandlerAsset.serverIdMap_.clear();
95     EXPECT_CALL(*socketMock_, Socket(_)).WillOnce(Return(-1));
96     softBusHandlerAsset.CreateAssetLocalSessionServer();
97     EXPECT_EQ(softBusHandlerAsset.serverIdMap_.size(), 0);
98 
99     EXPECT_CALL(*socketMock_, Socket(_)).WillOnce(Return(0));
100     EXPECT_CALL(*socketMock_, Listen(_, _, _, _)).WillOnce(Return(-1));
101     softBusHandlerAsset.CreateAssetLocalSessionServer();
102     EXPECT_EQ(softBusHandlerAsset.serverIdMap_.size(), 0);
103 
104     EXPECT_CALL(*socketMock_, Socket(_)).WillOnce(Return(0));
105     EXPECT_CALL(*socketMock_, Listen(_, _, _, _)).WillOnce(Return(0));
106     softBusHandlerAsset.CreateAssetLocalSessionServer();
107     if (softBusHandlerAsset.serverIdMap_.find(sessionName) != softBusHandlerAsset.serverIdMap_.end()) {
108         EXPECT_TRUE(true);
109     } else {
110         EXPECT_TRUE(false);
111     }
112     SoftBusSessionPool::SessionInfo sessionInfo;
113     bool flag = SoftBusSessionPool::GetInstance().GetSessionInfo(sessionName, sessionInfo);
114     EXPECT_EQ(flag, true);
115     softBusHandlerAsset.CreateAssetLocalSessionServer();
116     EXPECT_EQ(softBusHandlerAsset.serverIdMap_.size(), 1);
117 
118     softBusHandlerAsset.serverIdMap_.clear();
119     SoftBusSessionPool::GetInstance().DeleteSessionInfo(sessionName);
120     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_CreateAssetLocalSessionServer_0100 end";
121 }
122 
123 /**
124  * @tc.name: SoftBusHandlerAssetTest_DeleteAssetLocalSessionServer_0100
125  * @tc.desc: Verify the DeleteAssetLocalSessionServer function.
126  * @tc.type: FUNC
127  * @tc.require: I9JXPR
128  */
129 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_DeleteAssetLocalSessionServer_0100, TestSize.Level1)
130 {
131     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_DeleteAssetLocalSessionServer_0100 start";
132     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
133     softBusHandlerAsset.DeleteAssetLocalSessionServer();
134     std::string sessionName = SoftBusHandlerAsset::ASSET_LOCAL_SESSION_NAME;
135     EXPECT_CALL(*socketMock_, Socket(_)).WillOnce(Return(0));
136     EXPECT_CALL(*socketMock_, Listen(_, _, _, _)).WillOnce(Return(0));
137     softBusHandlerAsset.CreateAssetLocalSessionServer();
138     if (softBusHandlerAsset.serverIdMap_.find(sessionName) != softBusHandlerAsset.serverIdMap_.end()) {
139         EXPECT_TRUE(true);
140     } else {
141         EXPECT_TRUE(false);
142     }
143 
144     softBusHandlerAsset.serverIdMap_.insert(make_pair("test", 0));
145     SoftBusSessionPool::SessionInfo sessionInfo;
146     bool flag = SoftBusSessionPool::GetInstance().GetSessionInfo(sessionName, sessionInfo);
147     EXPECT_EQ(flag, true);
148     softBusHandlerAsset.DeleteAssetLocalSessionServer();
149     EXPECT_EQ(softBusHandlerAsset.serverIdMap_.size(), 1);
150     flag = SoftBusSessionPool::GetInstance().GetSessionInfo(sessionName, sessionInfo);
151     EXPECT_EQ(flag, false);
152 
153     softBusHandlerAsset.DeleteAssetLocalSessionServer();
154     EXPECT_EQ(softBusHandlerAsset.serverIdMap_.size(), 1);
155     softBusHandlerAsset.serverIdMap_.clear();
156     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_DeleteAssetLocalSessionServer_0100 end";
157 }
158 
159 /**
160  * @tc.name: SoftBusHandlerAssetTest_AssetBind_0100
161  * @tc.desc: Verify the AssetBind function.
162  * @tc.type: FUNC
163  * @tc.require: I9JXPR
164  */
165 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_AssetBind_0100, TestSize.Level1)
166 {
167     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_AssetBind_0100 start";
168     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
169     int32_t socketId = 0;
170     EXPECT_EQ(softBusHandlerAsset.AssetBind("", socketId), E_OPEN_SESSION);
171 
172     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _)).WillOnce(Return(0));
173     EXPECT_EQ(softBusHandlerAsset.AssetBind("test", socketId), E_OPEN_SESSION);
174 
175     std::vector<DmDeviceInfo> deviceList;
176     deviceInfo.authForm = DmAuthForm::IDENTICAL_ACCOUNT;
177     deviceList.push_back(deviceInfo);
178     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
179         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
180     EXPECT_CALL(*socketMock_, Socket(_)).WillOnce(Return(-1));
181     EXPECT_EQ(softBusHandlerAsset.AssetBind("testNetWork", socketId), E_OPEN_SESSION);
182 
183     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
184         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
185     EXPECT_CALL(*socketMock_, Socket(_)).WillOnce(Return(E_OK));
186     EXPECT_CALL(*socketMock_, Bind(_, _, _, _)).WillOnce(Return(-1));
187     EXPECT_EQ(softBusHandlerAsset.AssetBind("testNetWork", socketId), -1);
188 
189     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
190         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
191     EXPECT_CALL(*socketMock_, Socket(_)).WillOnce(Return(E_OK));
192     EXPECT_CALL(*socketMock_, Bind(_, _, _, _)).WillOnce(Return(E_OK));
193     EXPECT_EQ(softBusHandlerAsset.AssetBind("testNetWork", socketId), E_OK);
194     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_AssetBind_0100 end";
195 }
196 
197 /**
198  * @tc.name: SoftBusHandlerAssetTest_IsSameAccount_0100
199  * @tc.desc: Verify the IsSameAccount function.
200  * @tc.type: FUNC
201  * @tc.require: I9JXPR
202  */
203 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_IsSameAccount_0100, TestSize.Level1)
204 {
205     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_IsSameAccount_0100 start";
206     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
207     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _)).WillOnce(Return(0));
208     bool flag = softBusHandlerAsset.IsSameAccount("test");
209     EXPECT_EQ(flag, false);
210 
211     std::vector<DmDeviceInfo> deviceList;
212     deviceList.push_back(deviceInfo);
213     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
214         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
215     flag = softBusHandlerAsset.IsSameAccount("test");
216     EXPECT_EQ(flag, false);
217 
218     deviceList.clear();
219     deviceInfo.authForm = DmAuthForm::ACROSS_ACCOUNT;
220     deviceList.push_back(deviceInfo);
221     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
222         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
223     flag = softBusHandlerAsset.IsSameAccount("testNetWork");
224     EXPECT_EQ(flag, false);
225 
226     deviceList.clear();
227     deviceInfo.authForm = DmAuthForm::IDENTICAL_ACCOUNT;
228     deviceList.push_back(deviceInfo);
229     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
230         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
231     flag = softBusHandlerAsset.IsSameAccount("testNetWork");
232     EXPECT_EQ(flag, true);
233     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_IsSameAccount_0100 end";
234 }
235 
236 /**
237  * @tc.name: SoftBusHandlerAssetTest_OnAssetRecvBind_0100
238  * @tc.desc: Verify the OnAssetRecvBind function.
239  * @tc.type: FUNC
240  * @tc.require: I9JXPR
241  */
242 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_OnAssetRecvBind_0100, TestSize.Level1)
243 {
244     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_OnAssetRecvBind_0100 start";
245     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
246     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _)).WillOnce(Return(0));
247     softBusHandlerAsset.OnAssetRecvBind(0, "test");
248     auto iter = softBusHandlerAsset.clientInfoMap_.find(0);
249     if (iter == softBusHandlerAsset.clientInfoMap_.end()) {
250         EXPECT_TRUE(true);
251     } else {
252         EXPECT_TRUE(false);
253     }
254     EXPECT_EQ(softBusHandlerAsset.GetClientInfo(0), "");
255 
256     std::vector<DmDeviceInfo> deviceList;
257     deviceInfo.authForm = DmAuthForm::IDENTICAL_ACCOUNT;
258     deviceList.push_back(deviceInfo);
259     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
260         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
261     softBusHandlerAsset.OnAssetRecvBind(0, deviceInfo.networkId);
262     EXPECT_EQ(softBusHandlerAsset.GetClientInfo(0), deviceInfo.networkId);
263 
264     softBusHandlerAsset.RemoveClientInfo(0);
265     EXPECT_EQ(softBusHandlerAsset.GetClientInfo(0), "");
266     iter = softBusHandlerAsset.clientInfoMap_.find(0);
267     if (iter == softBusHandlerAsset.clientInfoMap_.end()) {
268         EXPECT_TRUE(true);
269     } else {
270         EXPECT_TRUE(false);
271     }
272     softBusHandlerAsset.RemoveClientInfo(0);
273     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_OnAssetRecvBind_0100 end";
274 }
275 
276 /**
277  * @tc.name: SoftBusHandlerAssetTest_AddAssetObj_0100
278  * @tc.desc: Verify the OnAssetRecvBind function.
279  * @tc.type: FUNC
280  * @tc.require: I9JXPR
281  */
282 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_AddAssetObj_0100, TestSize.Level1)
283 {
284     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_AddAssetObj_0100 start";
285     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
286     sptr<AssetObj> assetObj (new (std::nothrow) AssetObj());
287     softBusHandlerAsset.AddAssetObj(0, assetObj);
288     softBusHandlerAsset.AddAssetObj(0, assetObj);
289     auto iter = softBusHandlerAsset.assetObjMap_.find(0);
290     if (iter != softBusHandlerAsset.assetObjMap_.end()) {
291         EXPECT_TRUE(true);
292     } else {
293         EXPECT_TRUE(false);
294     }
295 
296     EXPECT_EQ(softBusHandlerAsset.GetAssetObj(0), assetObj);
297 
298     softBusHandlerAsset.RemoveAssetObj(0);
299     EXPECT_EQ(softBusHandlerAsset.GetAssetObj(0), nullptr);
300     iter = softBusHandlerAsset.assetObjMap_.find(0);
301     if (iter == softBusHandlerAsset.assetObjMap_.end()) {
302         EXPECT_TRUE(true);
303     } else {
304         EXPECT_TRUE(false);
305     }
306 
307     softBusHandlerAsset.RemoveAssetObj(0);
308     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_AddAssetObj_0100 end";
309 }
310 
311 /**
312  * @tc.name: SoftBusHandlerAssetTest_GetDstFile_0100
313  * @tc.desc: Verify the GetDstFile function.
314  * @tc.type: FUNC
315  * @tc.require: I9JXPR
316  */
317 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_GetDstFile_0100, TestSize.Level1)
318 {
319     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GetDstFile_0100 start";
320     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
321     string file = "test123";
322     auto rlt = softBusHandlerAsset.GetDstFile(file, "demoA", "demoB", "0", true);
323     EXPECT_EQ(rlt, "");
324 
325     file = "demoA/test";
326     rlt = softBusHandlerAsset.GetDstFile(file, "demoA", "demoB", "0", true);
327     string execptRlt = "demoB/ASSET_TEMP/test.asset_single?srcBundleName=demoA&sessionId=0";
328     EXPECT_EQ(rlt, execptRlt);
329 
330     execptRlt = "demoB/ASSET_TEMP/test.asset_zip?srcBundleName=demoA&sessionId=0";
331     rlt = softBusHandlerAsset.GetDstFile(file, "demoA", "demoB", "0", false);
332     EXPECT_EQ(rlt, execptRlt);
333     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GetDstFile_0100 end";
334 }
335 
336 /**
337  * @tc.name: SoftBusHandlerAssetTest_AssetSendFile_0100
338  * @tc.desc: Verify the AssetSendFile function.
339  * @tc.type: FUNC
340  * @tc.require: I9JXPR
341  */
342 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_AssetSendFile_0100, TestSize.Level1)
343 {
344     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_AssetSendFile_0100 start";
345     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
346     string file = "test123";
347     EXPECT_EQ(softBusHandlerAsset.AssetSendFile(0, file, true), ERR_BAD_VALUE);
348 
349     sptr<AssetObj> assetObj (new (std::nothrow) AssetObj());
350     softBusHandlerAsset.AddAssetObj(0, assetObj);
351     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _)).WillOnce(Return(0));
352     EXPECT_EQ(softBusHandlerAsset.AssetSendFile(0, file, true), ERR_BAD_VALUE);
353 
354     softBusHandlerAsset.RemoveAssetObj(0);
355     assetObj->dstNetworkId_ = "testNetWork";
356     assetObj->srcBundleName_ = "demoA";
357     assetObj->dstBundleName_ = "demoB";
358     assetObj->sessionId_ = "0";
359     softBusHandlerAsset.AddAssetObj(0, assetObj);
360 
361     std::vector<DmDeviceInfo> deviceList;
362     deviceInfo.authForm = DmAuthForm::IDENTICAL_ACCOUNT;
363     deviceList.push_back(deviceInfo);
364     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
365         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
366     EXPECT_EQ(softBusHandlerAsset.AssetSendFile(0, file, true), ERR_BAD_VALUE);
367 
368     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
369         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
370     EXPECT_CALL(*socketMock_, SendFile(_, _, _, _)).WillOnce(Return(-1));
371     file = "demoA/test";
372     EXPECT_EQ(softBusHandlerAsset.AssetSendFile(0, file, true), -1);
373 
374     EXPECT_CALL(*deviceManagerImplMock_, GetTrustedDeviceList(_, _, _))
375         .WillOnce(DoAll(SetArgReferee<2>(deviceList), Return(0)));
376     EXPECT_CALL(*socketMock_, SendFile(_, _, _, _)).WillOnce(Return(E_OK));
377     EXPECT_EQ(softBusHandlerAsset.AssetSendFile(0, file, true), E_OK);
378     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_AssetSendFile_0100 end";
379 }
380 
381 /**
382  * @tc.name: SoftBusHandlerAssetTest_GetLocalNetworkId_0100
383  * @tc.desc: Verify the GetLocalNetworkId function.
384  * @tc.type: FUNC
385  * @tc.require: I9JXPR
386  */
387 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_GetLocalNetworkId_0100, TestSize.Level1)
388 {
389     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GetLocalNetworkId_0100 start";
390     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
391     EXPECT_CALL(*deviceManagerImplMock_, GetLocalNodeDeviceInfo(_, _)).WillOnce(Return(-1));
392     string ret = softBusHandlerAsset.GetLocalNetworkId();
393     EXPECT_EQ(ret, "");
394 
395     EXPECT_CALL(*deviceManagerImplMock_, GetLocalNodeDeviceInfo(_, _)).WillOnce(Return(0));
396     ret = softBusHandlerAsset.GetLocalNetworkId();
397     EXPECT_EQ(ret, "100");
398     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GetLocalNetworkId_0100 end";
399 }
400 
401 /**
402  * @tc.name: SoftBusHandlerAssetTest_GenerateAssetObjInfo_0100
403  * @tc.desc: Verify the GenerateAssetObjInfo function.
404  * @tc.type: FUNC
405  * @tc.require: I9JXPR
406  */
407 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_GenerateAssetObjInfo_0100, TestSize.Level1)
408 {
409     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GenerateAssetObjInfo_0100 start";
410     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
411     sptr<AssetObj> assetObj (new (std::nothrow) AssetObj());
412     string fileName = "test";
413     auto ret = softBusHandlerAsset.GenerateAssetObjInfo(0, fileName, assetObj);
414     EXPECT_EQ(ret, ERR_BAD_VALUE);
415 
416     fileName = "/account/device_view/local/data/test";
417     ret = softBusHandlerAsset.GenerateAssetObjInfo(0, fileName, assetObj);
418     EXPECT_EQ(ret, ERR_BAD_VALUE);
419 
420     fileName = "/account/device_view/local/data/test/";
421     ret = softBusHandlerAsset.GenerateAssetObjInfo(0, fileName, assetObj);
422     EXPECT_EQ(ret, ERR_BAD_VALUE);
423 
424     fileName = "/account/device_view/local/data/test/sessionId=20";
425     ret = softBusHandlerAsset.GenerateAssetObjInfo(0, fileName, assetObj);
426     EXPECT_EQ(ret, ERR_BAD_VALUE);
427 
428     fileName = "/account/device_view/local/data/test/sessionId=20&srcBundleName=demoA";
429     EXPECT_CALL(*deviceManagerImplMock_, GetLocalNodeDeviceInfo(_, _)).WillOnce(Return(-1));
430     ret = softBusHandlerAsset.GenerateAssetObjInfo(0, fileName, assetObj);
431     EXPECT_EQ(ret, ERR_BAD_VALUE);
432 
433     fileName = "/account/device_view/local/data/test/sessionId=20&srcBundleName=demoA";
434     EXPECT_CALL(*deviceManagerImplMock_, GetLocalNodeDeviceInfo(_, _)).WillOnce(Return(0));
435     ret = softBusHandlerAsset.GenerateAssetObjInfo(0, fileName, assetObj);
436     EXPECT_EQ(ret, E_OK);
437     EXPECT_EQ(assetObj->dstBundleName_, "test");
438     EXPECT_EQ(assetObj->sessionId_, "20");
439     EXPECT_EQ(assetObj->srcBundleName_, "demoA");
440     EXPECT_EQ(assetObj->dstNetworkId_, "100");
441     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GenerateAssetObjInfo_0100 end";
442 }
443 
444 /**
445  * @tc.name: SoftBusHandlerAssetTest_GenerateUris_0100
446  * @tc.desc: Verify the GenerateUris function.
447  * @tc.type: FUNC
448  * @tc.require: I9JXPR
449  */
450 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_GenerateUris_0100, TestSize.Level1)
451 {
452     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GenerateUris_0100 start";
453     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
454     string fileName = "test";
455     vector<string> fileList;
456     fileList.push_back(fileName);
457     auto rlt = softBusHandlerAsset.GenerateUris(fileList, "demoB", true);
458     EXPECT_EQ(rlt.size(), 0);
459 
460     fileList[0].clear();
461     fileList[0] = "demoB/ASSET_TEMP";
462     rlt = softBusHandlerAsset.GenerateUris(fileList, "demoB", true);
463     EXPECT_EQ(rlt.size(), 0);
464 
465     fileList[0].clear();
466     fileList[0] = "demoB/ASSET_TEMP/test.asset_single?";
467     rlt = softBusHandlerAsset.GenerateUris(fileList, "demoB", true);
468     EXPECT_EQ(rlt.size(), 1);
469     EXPECT_EQ(rlt[0], "file://demoB/data/storage/el2/distributedfiles/test");
470     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GenerateUris_0100 end";
471 }
472 
473 /**
474  * @tc.name: SoftBusHandlerAssetTest_GenerateUris_0200
475  * @tc.desc: Verify the GenerateUris function.
476  * @tc.type: FUNC
477  * @tc.require: I9JXPR
478  */
479 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_GenerateUris_0200, TestSize.Level1)
480 {
481     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GenerateUris_0200 start";
482     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
483     string fileName = "test";
484     vector<string> fileList;
485     fileList.push_back(fileName);
486     auto rlt = softBusHandlerAsset.GenerateUris(fileList, "demoB", false);
487     EXPECT_EQ(rlt.size(), 0);
488 
489     fileList[0].clear();
490     fileList[0] = "demoB/ASSET_TEMP/test1";
491     fileList.push_back("demoB/ASSET_TEMP/test2");
492     rlt = softBusHandlerAsset.GenerateUris(fileList, "demoB", false);
493     EXPECT_EQ(rlt.size(), 2);
494     EXPECT_EQ(rlt[0], "file://demoB/data/storage/el2/distributedfiles/test1");
495     EXPECT_EQ(rlt[1], "file://demoB/data/storage/el2/distributedfiles/test2");
496     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_GenerateUris_0200 end";
497 }
498 
499 /**
500  * @tc.name: SoftBusHandlerAssetTest_IsDir_0100
501  * @tc.desc: Verify the IsDir function.
502  * @tc.type: FUNC
503  * @tc.require: I9JXPR
504  */
505 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_IsDir_0100, TestSize.Level1)
506 {
507     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_IsDir_0100 start";
508     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
509     string fileName =  "/data/test/";
510     auto rlt = softBusHandlerAsset.IsDir(fileName);
511     EXPECT_EQ(rlt, true);
512 
513     fileName.clear();
514     fileName = "/data/test/test.txt";
515     int32_t fd = open(fileName.c_str(), O_RDWR | O_CREAT);
516     ASSERT_TRUE(fd != -1) << "SoftBusHandlerAssetTest_IsDir_0100 Create File Failed!";
517     close(fd);
518     rlt = softBusHandlerAsset.IsDir(fileName);
519     EXPECT_EQ(rlt, false);
520 
521     softBusHandlerAsset.RemoveFile(fileName, true);
522     rlt = softBusHandlerAsset.IsDir(fileName);
523     EXPECT_EQ(rlt, false);
524     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_IsDir_0100 end";
525 }
526 
527 /**
528  * @tc.name: SoftBusHandlerAssetTest_RemoveFile_0100
529  * @tc.desc: Verify the RemoveFile function.
530  * @tc.type: FUNC
531  * @tc.require: I9JXPR
532  */
533 HWTEST_F(SoftBusHandlerAssetTest, SoftBusHandlerAssetTest_RemoveFile_0100, TestSize.Level1)
534 {
535     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_RemoveFile_0100 start";
536     string fileName = "/data/test/test.txt";
537     int32_t fd = open(fileName.c_str(), O_RDWR | O_CREAT);
538     ASSERT_TRUE(fd != -1) << "SoftBusHandlerAssetTest_RemoveFile_0100 Create File Failed!";
539     close(fd);
540 
541     auto &&softBusHandlerAsset = SoftBusHandlerAsset::GetInstance();
542     softBusHandlerAsset.RemoveFile(fileName, false);
543     auto ret = access(fileName.c_str(), F_OK);
544     EXPECT_EQ(ret, 0);
545 
546     softBusHandlerAsset.RemoveFile(fileName, true);
547     ret = access(fileName.c_str(), F_OK);
548     EXPECT_NE(ret, 0);
549     softBusHandlerAsset.RemoveFile(fileName, true);
550     GTEST_LOG_(INFO) << "SoftBusHandlerAssetTest_RemoveFile_0100 end";
551 }
552 } // namespace Test
553 } // namespace DistributedFile
554 } // namespace Storage
555 } // namespace OHOS
556