1 /*
2  * Copyright (c) 2022-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 
16 #include <fcntl.h>
17 #include <gtest/gtest.h>
18 #include <securec.h>
19 #include <sys/stat.h>
20 #include <sys/types.h>
21 
22 #include "client_trans_file_listener.h"
23 #include "client_trans_proxy_file_helper.c"
24 #include "client_trans_proxy_file_manager.c"
25 #include "client_trans_proxy_manager.c"
26 #include "client_trans_session_manager.c"
27 #include "client_trans_socket_manager.c"
28 #include "session.h"
29 #include "softbus_access_token_test.h"
30 #include "softbus_app_info.h"
31 #include "softbus_def.h"
32 #include "softbus_errcode.h"
33 #include "softbus_server_frame.h"
34 
35 #define TEST_FILE_LENGTH 10
36 #define TEST_FILE_CNT 2
37 #define TEST_CHANNEL_ID 2
38 #define TEST_SESSION_ID 1
39 #define TEST_SEQ 1020
40 #define TEST_SEQ_SECOND 2
41 #define TEST_HEADER_LENGTH 24
42 #define TEST_HEADER_LENGTH_MIN 13
43 #define TEST_FILE_PATH "/data/file.txt"
44 #define TEST_DATA_LENGTH 6
45 #define TEST_FILE_SIZE 1000
46 #define TEST_PATH_SIZE 50
47 #define TEST_FILE_TEST_TXT_FILE 16
48 #define TEST_FILE_MAGIC_OFFSET 0
49 #define TEST_FRAME_NUMBER 2
50 #define TEST_FRAME_DATA_LENGTH 10
51 #define TEST_FILEPATH_LENGTH 4
52 #define TEST_SEQ8 8
53 #define TEST_SEQ16 16
54 #define TEST_SEQ32 32
55 #define TEST_SEQ126 126
56 #define TEST_SEQ128 128
57 #define TEST_OS_TYPE 10
58 #define TEST_PACKET_SIZE 1024
59 #define TEST_INVALID_LEN (-1)
60 
61 using namespace std;
62 using namespace testing::ext;
63 
64 namespace OHOS {
65 const char *g_pkgName = "dms";
66 const char *g_sessionName = "ohos.distributedschedule.dms.test";
67 const char *g_peerNetworkId = "1234567789";
68 const char *g_groupId = "123";
69 FILE *g_fileTest = NULL;
70 FILE *g_fileSs = NULL;
71 int g_fd = 0;
72 char g_writeData[128] = "test111111111111111111111111111111111111111111111111111111111111";
73 const char *g_rootDir = "/data";
74 const char *g_destFile = "test.txt";
75 char g_recvFile[] = "/data/test.txt";
76 const char *g_sessionKey = "www.huaweitest.com";
77 
78 SessionAttribute g_attr = {
79     .dataType = TYPE_MESSAGE,
80     .linkTypeNum = LINK_TYPE_WIFI_WLAN_5G,
81 };
82 
83 SessionParam g_param = {
84     .sessionName = g_sessionName,
85     .peerSessionName = g_sessionName,
86     .peerDeviceId = g_peerNetworkId,
87     .groupId = g_groupId,
88     .attr = &g_attr,
89 };
90 
91 const char *g_testProxyFileList[] = {
92     "/data/test.txt",
93     "/data/ss.txt",
94 };
95 
96 const char *g_fileList[] = {
97     "/data/data/test.txt",
98     "/path/max/length/512/"
99     "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
100     "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
101     "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
102     "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
103     "111111111111111111111111111111111111111111111111111",
104 };
105 
OnSessionOpened(int sessionId,int result)106 static int OnSessionOpened(int sessionId, int result)
107 {
108     return SOFTBUS_OK;
109 }
110 
OnSessionClosed(int sessionId)111 static void OnSessionClosed(int sessionId)
112 {
113 }
114 
OnBytesReceived(int sessionId,const void * data,unsigned int len)115 static void OnBytesReceived(int sessionId, const void *data, unsigned int len)
116 {
117 }
118 
OnMessageReceived(int sessionId,const void * data,unsigned int len)119 static void OnMessageReceived(int sessionId, const void *data, unsigned int len)
120 {
121 }
122 
123 static ISessionListener g_sessionlistener = {
124     .OnSessionOpened = OnSessionOpened,
125     .OnSessionClosed = OnSessionClosed,
126     .OnBytesReceived = OnBytesReceived,
127     .OnMessageReceived = OnMessageReceived,
128 };
129 
OnSendFileProcess(int sessionId,uint64_t bytesUpload,uint64_t bytesTotal)130 static int OnSendFileProcess(int sessionId, uint64_t bytesUpload, uint64_t bytesTotal)
131 {
132     return SOFTBUS_OK;
133 }
134 
OnSendFileFinished(int sessionId,const char * firstFile)135 static int OnSendFileFinished(int sessionId, const char *firstFile)
136 {
137     return SOFTBUS_OK;
138 }
139 
OnFileTransError(int sessionId)140 void OnFileTransError(int sessionId)
141 {
142     return;
143 }
144 
OnReceiveFileStarted(int sessionId,const char * files,int fileCnt)145 static int OnReceiveFileStarted(int sessionId, const char *files, int fileCnt)
146 {
147     return SOFTBUS_OK;
148 }
149 
OnReceiveFileProcess(int sessionId,const char * firstFile,uint64_t bytesUpload,uint64_t bytesTotal)150 static int OnReceiveFileProcess(int sessionId, const char *firstFile, uint64_t bytesUpload, uint64_t bytesTotal)
151 {
152     return SOFTBUS_OK;
153 }
OnReceiveFileFinished(int sessionId,const char * files,int fileCnt)154 static void OnReceiveFileFinished(int sessionId, const char *files, int fileCnt)
155 {
156     return;
157 }
158 
159 const IFileSendListener g_listener = {
160     .OnSendFileProcess = OnSendFileProcess,
161     .OnSendFileFinished = OnSendFileFinished,
162     .OnFileTransError = OnFileTransError,
163 };
164 
165 const IFileReceiveListener g_fileRecvListener = {
166     .OnReceiveFileStarted = OnReceiveFileStarted,
167     .OnReceiveFileProcess = OnReceiveFileProcess,
168     .OnReceiveFileFinished = OnReceiveFileFinished,
169     .OnFileTransError = OnFileTransError,
170 };
171 
172 class ClientTransProxyFileManagerTest : public testing::Test {
173 public:
ClientTransProxyFileManagerTest()174     ClientTransProxyFileManagerTest() {}
~ClientTransProxyFileManagerTest()175     ~ClientTransProxyFileManagerTest() {}
176     static void SetUpTestCase(void);
177     static void TearDownTestCase(void);
SetUp()178     void SetUp() override {}
TearDown()179     void TearDown() override {}
180 };
181 
SetUpTestCase(void)182 void ClientTransProxyFileManagerTest::SetUpTestCase(void)
183 {
184     SetAceessTokenPermission("dsoftbusTransTest");
185     g_fileTest = fopen(g_testProxyFileList[0], "w+");
186     EXPECT_NE(g_fileTest, nullptr);
187 
188     g_fileSs = fopen(g_testProxyFileList[1], "w+");
189     EXPECT_NE(g_fileSs, nullptr);
190     int ret = fprintf(g_fileSs, "%s", "Hello world!\n");
191     EXPECT_LT(0, ret);
192     g_fd = open(TEST_FILE_PATH, O_RDWR | O_CREAT, S_IRWXU);
193     EXPECT_NE(g_fd, -1);
194     write(g_fd, g_writeData, sizeof(g_writeData));
195     ClientTransProxyListInit();
196 }
197 
TearDownTestCase(void)198 void ClientTransProxyFileManagerTest::TearDownTestCase(void)
199 {
200     int ret = fclose(g_fileTest);
201     EXPECT_EQ(ret, 0);
202     g_fileTest = NULL;
203     ret = fclose(g_fileSs);
204     EXPECT_EQ(ret, 0);
205     g_fileSs = NULL;
206     close(g_fd);
207     g_fd = -1;
208     ret = remove(g_testProxyFileList[0]);
209     EXPECT_EQ(SOFTBUS_OK, ret);
210 
211     ret = remove(g_testProxyFileList[1]);
212     EXPECT_EQ(SOFTBUS_OK, ret);
213 
214     ret = remove(TEST_FILE_PATH);
215     EXPECT_EQ(SOFTBUS_OK, ret);
216     ClinetTransProxyFileManagerDeinit();
217     ClientTransProxyListDeinit();
218 }
219 
220 /**
221  * @tc.name: ClinetTransProxySendFileTest001
222  * @tc.desc: client trans proxy send file test, use the wrong parameter.
223  * @tc.type: FUNC
224  * @tc.require:
225  */
226 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxySendFileTest001, TestSize.Level0)
227 {
228     int32_t channelId = 1;
229     int ret = ProxyChannelSendFile(channelId, g_testProxyFileList, g_testProxyFileList, 0);
230     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
231 
232     ret = ProxyChannelSendFile(channelId, nullptr, g_testProxyFileList, TEST_FILE_CNT);
233     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
234 
235     const char *proxyNullFileList[] = {
236         nullptr,
237         "/path/max/length/512",
238     };
239     ret = ProxyChannelSendFile(channelId, proxyNullFileList, g_testProxyFileList, TEST_FILE_CNT);
240     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
241 
242     const char *proxyZeroLileList[] = {
243         "",
244         "/path/max/length/512",
245     };
246     ret = ProxyChannelSendFile(channelId, proxyZeroLileList, g_testProxyFileList, TEST_FILE_CNT);
247     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
248 
249     const char *proxyLengthFileList[] = {
250         "/path/max/length/512",
251         "/path/max/length/512/"
252         "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
253         "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
254         "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
255         "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
256         "111111111111111111111111111111111111111111111111111",
257     };
258     ret = ProxyChannelSendFile(channelId, proxyLengthFileList, g_testProxyFileList, TEST_FILE_CNT);
259     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
260 
261     ret = ProxyChannelSendFile(channelId, g_testProxyFileList, nullptr, TEST_FILE_CNT);
262     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
263 
264     ret = ProxyChannelSendFile(channelId, g_testProxyFileList, proxyNullFileList, TEST_FILE_CNT);
265     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
266 
267     ret = ProxyChannelSendFile(channelId, g_testProxyFileList, g_testProxyFileList, TEST_FILE_CNT);
268     EXPECT_EQ(SOFTBUS_LOCK_ERR, ret);
269 }
270 
271 /**
272  * @tc.name: ClinetTransRecvFileFrameDataTest001
273  * @tc.desc: clent trans recv file frame data test, use the wrong parameter.
274  * @tc.type: FUNC
275  * @tc.require:
276  */
277 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransRecvFileFrameDataTest001, TestSize.Level0)
278 {
279     int32_t channelId = 1;
280     int32_t sessionId = 1;
281     int32_t ret = ProcessRecvFileFrameData(sessionId, channelId, nullptr);
282     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
283 
284     ChannelInfo *channel = static_cast<ChannelInfo *>(SoftBusCalloc(sizeof(ChannelInfo)));
285     ASSERT_TRUE(channel != nullptr);
286     channel->channelId = 1;
287     channel->isEncrypt = 0;
288     channel->linkType = LANE_BR;
289     channel->sessionKey = const_cast<char *>(g_sessionKey);
290     channel->osType = OH_TYPE;
291     ret = ClientTransProxyAddChannelInfo(ClientTransProxyCreateChannelInfo(channel));
292     EXPECT_EQ(SOFTBUS_OK, ret);
293     SoftBusFree(channel);
294     FileFrame fileFrame;
295     fileFrame.frameLength = PROXY_BR_MAX_PACKET_SIZE + 1;
296     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
297     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
298 
299     fileFrame.frameType = TRANS_SESSION_FILE_FIRST_FRAME;
300     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
301     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
302     ret = ClientTransProxyDelChannelInfo(1);
303     EXPECT_EQ(SOFTBUS_OK, ret);
304 }
305 
306 /**
307  * @tc.name: ClinetTransRecvFileFrameDataTest002
308  * @tc.desc: client trans recv file frame data test, use the wrong parameter.
309  * @tc.type: FUNC
310  * @tc.require:
311  */
312 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransRecvFileFrameDataTest002, TestSize.Level0)
313 {
314     int32_t channelId = 1;
315     int32_t sessionId = 1;
316 
317     ChannelInfo *channel = static_cast<ChannelInfo *>(SoftBusCalloc(sizeof(ChannelInfo)));
318     ASSERT_TRUE(channel != nullptr);
319     channel->channelId = 1;
320     channel->isEncrypt = 0;
321     channel->linkType = LANE_BR;
322     channel->sessionKey = const_cast<char *>(g_sessionKey);
323     int32_t ret = ClientTransProxyAddChannelInfo(ClientTransProxyCreateChannelInfo(channel));
324     EXPECT_EQ(SOFTBUS_OK, ret);
325     SoftBusFree(channel);
326     FileFrame fileFrame;
327     fileFrame.frameLength = PROXY_BR_MAX_PACKET_SIZE - 1;
328 
329     fileFrame.frameType = TRANS_SESSION_FILE_FIRST_FRAME;
330     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
331     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
332 
333     fileFrame.frameType = TRANS_SESSION_FILE_ONGOINE_FRAME;
334     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
335     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
336 
337     fileFrame.frameType = TRANS_SESSION_FILE_ONLYONE_FRAME;
338     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
339     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
340 
341     fileFrame.frameType = TRANS_SESSION_FILE_LAST_FRAME;
342     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
343     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
344 
345     fileFrame.frameType = TRANS_SESSION_FILE_ACK_REQUEST_SENT;
346     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
347     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
348 
349     fileFrame.frameType = TRANS_SESSION_FILE_ACK_RESPONSE_SENT;
350     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
351     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
352 
353     fileFrame.frameType = TRANS_SESSION_FILE_CRC_CHECK_FRAME;
354     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
355     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
356 
357     fileFrame.frameType = TRANS_SESSION_FILE_RESULT_FRAME;
358     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
359     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
360 
361     fileFrame.frameType = TRANS_SESSION_FILE_ALLFILE_SENT;
362     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
363     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
364 
365     fileFrame.frameType = -1;
366     ret = ProcessRecvFileFrameData(sessionId, channelId, &fileFrame);
367     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
368     ret = ClientTransProxyDelChannelInfo(1);
369     EXPECT_EQ(SOFTBUS_OK, ret);
370 }
371 
372 /**
373  * @tc.name: ClinetTransProxyFileManagerInitDataTest001
374  * @tc.desc: client trans proxy file manager init data test, use the wrong or normal parameter.
375  * @tc.type: FUNC
376  * @tc.require:
377  */
378 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileManagerInitDataTest001, TestSize.Level0)
379 {
380     int32_t ret = ClinetTransProxyFileManagerInit();
381     EXPECT_EQ(SOFTBUS_OK, ret);
382 
383     int32_t channelId = 1;
384     uint32_t seq = TEST_SEQ;
385     int32_t result = 0;
386     uint32_t side = 0;
387     ret = SendFileTransResult(channelId, seq, result, side);
388     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
389 
390     uint32_t data = 0;
391     const uint8_t *data1 = (const uint8_t *)&data;
392     uint32_t len = TEST_HEADER_LENGTH;
393     ret = UnpackFileTransResultFrame(data1, len, nullptr, &result, &side);
394     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
395 
396     ret = UnpackFileTransResultFrame(nullptr, len, &seq, &result, &side);
397     EXPECT_NE(SOFTBUS_OK, ret);
398 
399     ret = UnpackFileTransResultFrame(data1, len, &seq, &result, &side);
400     EXPECT_NE(SOFTBUS_OK, ret);
401 
402     data = FILE_MAGIC_NUMBER;
403     const uint8_t *data2 = (const uint8_t *)&data;
404     ret = UnpackFileTransResultFrame(data2, len, &seq, &result, &side);
405     EXPECT_NE(SOFTBUS_OK, ret);
406 }
407 
408 /**
409  * @tc.name: ClinetTransProxyGetSessionFileLockTest001
410  * @tc.desc: client trans proxy get session file lock test, use the wrong or normal parameter.
411  * @tc.type: FUNC
412  * @tc.require:
413  */
414 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetSessionFileLockTest001, TestSize.Level0)
415 {
416     int32_t channelId = 1;
417     ProxyFileMutexLock *sessionLock = GetSessionFileLock(channelId);
418     EXPECT_NE(nullptr, sessionLock);
419 
420     sessionLock = GetSessionFileLock(channelId);
421     EXPECT_NE(nullptr, sessionLock);
422 
423     DelSessionFileLock(nullptr);
424     sessionLock->count = 1;
425     DelSessionFileLock(sessionLock);
426 
427     sessionLock->count = 2;
428     DelSessionFileLock(sessionLock);
429 }
430 
431 /**
432  * @tc.name: ClinetTransProxyCreateSendListenerInfoTest001
433  * @tc.desc: client trans proxy create send listener info test, use the wrong or normal parameter.
434  * @tc.type: FUNC
435  * @tc.require:
436  */
437 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyCreateSendListenerInfoTest001, TestSize.Level0)
438 {
439     int ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
440     ASSERT_EQ(SOFTBUS_OK, ret);
441 
442     int32_t sessionId = 1;
443     SessionEnableStatus isEnabled = ENABLE_STATUS_INIT;
444 
445     ret = ClientAddSession(&g_param, &sessionId, &isEnabled);
446     ASSERT_EQ(SOFTBUS_OK, ret);
447 
448     SendListenerInfo *sendListenerInfo;
449     ret = CreateSendListenerInfo(&sendListenerInfo, TEST_CHANNEL_ID, 0);
450     EXPECT_EQ(SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND, ret);
451 
452     int32_t channelId = 1;
453     int32_t osType = TEST_OS_TYPE;
454     SessionInfo sessionInfo;
455     sessionInfo.sessionId = sessionId;
456     sessionInfo.channelId = channelId;
457     sessionInfo.channelType = CHANNEL_TYPE_PROXY;
458     ret = TransClientInit();
459     ASSERT_EQ(SOFTBUS_OK, ret);
460     ret = AddSession(g_sessionName, &sessionInfo);
461     ASSERT_EQ(SOFTBUS_TRANS_SESSIONSERVER_NOT_CREATED, ret);
462 
463     ret = TransSetFileSendListener(g_sessionName, &g_listener);
464     ASSERT_EQ(SOFTBUS_OK, ret);
465 
466     ret = TransSetFileReceiveListener(g_sessionName, &g_fileRecvListener, g_rootDir);
467     ASSERT_EQ(SOFTBUS_OK, ret);
468 
469     ret = CreateSendListenerInfo(&sendListenerInfo, channelId, 0);
470     EXPECT_EQ(SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND, ret);
471 
472     ret = CreateSendListenerInfo(&sendListenerInfo, channelId, 0);
473     EXPECT_EQ(SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND, ret);
474 
475     ret = AddSendListenerInfo(nullptr);
476     EXPECT_NE(SOFTBUS_OK, ret);
477 
478     FileRecipientInfo *result = CreateNewRecipient(sessionId, channelId, osType);
479     EXPECT_EQ(nullptr, result);
480 }
481 
482 /**
483  * @tc.name: ClinetTransProxyGetAndCheckFileSizeTest001
484  * @tc.desc: improve branch coverage, use the wrong or normal parameter.
485  * @tc.type: FUNC
486  * @tc.require:
487  */
488 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetAndCheckFileSizeTest001, TestSize.Level0)
489 {
490     uint64_t fileSize = 0;
491     uint64_t frameNum = 0;
492     int ret =
493         GetAndCheckFileSize(nullptr, &fileSize, &frameNum, APP_INFO_FILE_FEATURES_SUPPORT, PROXY_BLE_MAX_PACKET_SIZE);
494     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
495 
496     ret = GetAndCheckFileSize(
497         g_testProxyFileList[0], &fileSize, &frameNum, APP_INFO_FILE_FEATURES_SUPPORT, PROXY_BLE_MAX_PACKET_SIZE);
498     EXPECT_EQ(SOFTBUS_OK, ret);
499 
500     ret = GetAndCheckFileSize(
501         g_testProxyFileList[1], &fileSize, &frameNum, APP_INFO_FILE_FEATURES_NO_SUPPORT, PROXY_BLE_MAX_PACKET_SIZE);
502     EXPECT_EQ(SOFTBUS_OK, ret);
503 }
504 
505 /**
506  * @tc.name: ClinetTransProxySendOneFrameTest001
507  * @tc.desc: client trans proxy send one frame test, use the wrong or normal parameter.
508  * @tc.type: FUNC
509  * @tc.require:
510  */
511 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxySendOneFrameTest001, TestSize.Level0)
512 {
513     SendListenerInfo info;
514     info.sessionId = TEST_SESSION_ID;
515     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
516     info.channelId = TEST_CHANNEL_ID;
517 
518     FileFrame fileFrame = {
519         .frameType = TRANS_SESSION_BYTES,
520         .data = nullptr,
521     };
522     int ret = SendOneFrame(nullptr, &fileFrame);
523     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
524 
525     ret = SendOneFrame(&info, &fileFrame);
526     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
527 
528     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
529     uint32_t dataTest = TEST_DATA_LENGTH;
530     fileFrame.data = (uint8_t *)&dataTest;
531     ret = SendOneFrame(&info, &fileFrame);
532     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
533 
534     fileFrame.frameType = TRANS_SESSION_FILE_FIRST_FRAME;
535     ret = SendOneFrame(&info, &fileFrame);
536     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
537 
538     ret = SendOneFrameFront(nullptr, fileFrame.frameType);
539     EXPECT_NE(SOFTBUS_OK, ret);
540 
541     SendListenerInfo infoMiddle;
542     infoMiddle.sessionId = 1;
543     infoMiddle.channelId = 1;
544     infoMiddle.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
545     ret = SendOneFrameMiddle(nullptr, TRANS_SESSION_FILE_ONGOINE_FRAME);
546     EXPECT_NE(SOFTBUS_OK, ret);
547 
548     ret = SendOneFrameMiddle(&infoMiddle, TRANS_SESSION_FILE_ONGOINE_FRAME);
549     EXPECT_EQ(SOFTBUS_OK, ret);
550 
551     ret = SendOneFrameFront(&infoMiddle, TRANS_SESSION_FILE_ONGOINE_FRAME);
552     EXPECT_EQ(SOFTBUS_OK, ret);
553 
554     infoMiddle.crc = APP_INFO_FILE_FEATURES_SUPPORT;
555     infoMiddle.seq = 0;
556     ret = SendOneFrameMiddle(&infoMiddle, TRANS_SESSION_BYTES);
557     EXPECT_EQ(SOFTBUS_OK, ret);
558 
559     ret = SendOneFrameMiddle(&infoMiddle, TRANS_SESSION_FILE_ONGOINE_FRAME);
560     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
561 
562     ret = SendOneFrameFront(&infoMiddle, TRANS_SESSION_FILE_ONGOINE_FRAME);
563     EXPECT_EQ(SOFTBUS_OK, ret);
564 
565     ret = SendOneFrameFront(&infoMiddle, TRANS_SESSION_FILE_FIRST_FRAME);
566     EXPECT_EQ(SOFTBUS_OK, ret);
567 
568     infoMiddle.seq = TEST_SEQ;
569     ret = SendOneFrameMiddle(&infoMiddle, TRANS_SESSION_FILE_ONGOINE_FRAME);
570     EXPECT_EQ(SOFTBUS_OK, ret);
571 }
572 
573 /**
574  * @tc.name: ClinetTransProxySendOneFrameTest002
575  * @tc.desc: client trans proxy send one frame test, use the wrong or normal parameter.
576  * @tc.type: FUNC
577  * @tc.require:
578  */
579 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxySendOneFrameTest002, TestSize.Level0)
580 {
581     SendListenerInfo *infoRear = static_cast<SendListenerInfo *>(SoftBusCalloc(sizeof(SendListenerInfo)));
582     infoRear->sessionId = 1;
583     infoRear->channelId = 1;
584     infoRear->crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
585     int ret = SendOneFrameRear(nullptr, TRANS_SESSION_BYTES);
586     EXPECT_NE(SOFTBUS_OK, ret);
587 
588     ret = SendOneFrameRear(infoRear, TRANS_SESSION_BYTES);
589     EXPECT_EQ(SOFTBUS_OK, ret);
590 
591     infoRear->crc = APP_INFO_FILE_FEATURES_SUPPORT;
592     ret = SendOneFrameRear(infoRear, TRANS_SESSION_FILE_ONLYONE_FRAME);
593     EXPECT_EQ(SOFTBUS_OK, ret);
594 
595     infoRear->waitSeq = 0;
596     ret = SendOneFrameRear(infoRear, TRANS_SESSION_FILE_LAST_FRAME);
597     EXPECT_EQ(SOFTBUS_OK, ret);
598 
599     infoRear->waitSeq = TEST_SEQ;
600     ret = SendOneFrameRear(infoRear, TRANS_SESSION_FILE_LAST_FRAME);
601     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
602 
603     SoftBusFree(infoRear);
604 }
605 
606 /**
607  * @tc.name: ClinetTransProxyFileRecipientInfoTest001
608  * @tc.desc: client trans proxy file recipient info test, use the wrong or normal parameter.
609  * @tc.type: FUNC
610  * @tc.require:
611  */
612 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileRecipientInfoTest001, TestSize.Level0)
613 {
614     FileRecipientInfo info;
615     info.recvFileInfo.fileFd = -2;
616     info.recvState = TRANS_FILE_RECV_ERR_STATE;
617     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
618     info.channelId = 1;
619     info.recvFileInfo.seq = TEST_SEQ;
620     info.fileListener.recvListener.OnFileTransError = nullptr;
621     ClearRecipientResources(&info);
622 
623     info.fileListener.recvListener.OnFileTransError = OnFileTransError;
624     SetRecipientRecvState(&info, TRANS_FILE_RECV_IDLE_STATE);
625     EXPECT_EQ(info.recvFileInfo.fileFd, INVALID_FD);
626     ClearRecipientResources(&info);
627 
628     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
629     ClearRecipientResources(&info);
630 
631     info.recvState = TRANS_FILE_RECV_IDLE_STATE;
632     SetRecipientRecvState(&info, TRANS_FILE_RECV_IDLE_STATE);
633     EXPECT_EQ(info.recvFileInfo.fileFd, INVALID_FD);
634     SetRecipientRecvState(&info, TRANS_FILE_RECV_PROCESS_STATE);
635     EXPECT_EQ(info.recvFileInfo.fileFd, INVALID_FD);
636     ClearRecipientResources(&info);
637 
638     info.recvFileInfo.fileFd = INVALID_FD;
639     ClearRecipientResources(&info);
640 }
641 
642 /**
643  * @tc.name: ClinetTransProxyFileAckReqAndResDataTest001
644  * @tc.desc: client trans proxy file ack req and res data test, use the wrong or normal parameter.
645  * @tc.type: FUNC
646  * @tc.require:
647  */
648 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileAckReqAndResDataTest001, TestSize.Level0)
649 {
650     int32_t channelId = 1;
651     uint32_t startSeq = TEST_SEQ;
652     uint32_t value = 0;
653     int ret = SendFileAckReqAndResData(channelId, startSeq, value, CHANNEL_TYPE_PROXY);
654     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
655 
656     FileFrame frame;
657     frame.frameLength = 0;
658     frame.data = nullptr;
659     uint64_t dataTest = 0;
660     ret = UnpackAckReqAndResData(nullptr, &startSeq, &value);
661     EXPECT_NE(SOFTBUS_OK, ret);
662 
663     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
664     EXPECT_NE(SOFTBUS_OK, ret);
665 
666     frame.data = (uint8_t *)&dataTest;
667     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
668     EXPECT_NE(SOFTBUS_OK, ret);
669 
670     frame.frameLength = TEST_HEADER_LENGTH;
671     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
672     EXPECT_NE(SOFTBUS_OK, ret);
673 
674     dataTest = FILE_MAGIC_NUMBER;
675     frame.data = (uint8_t *)&dataTest;
676     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
677     EXPECT_EQ(SOFTBUS_OK, ret);
678 }
679 
680 /**
681  * @tc.name: ClinetTransProxyPackFileDataTest001
682  * @tc.desc: client trans proxy pack file data test, use the wrong parameter.
683  * @tc.type: FUNC
684  * @tc.require:
685  */
686 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyPackFileDataTest001, TestSize.Level0)
687 {
688     FileFrame fileFrame = {
689         .frameType = TRANS_SESSION_BYTES,
690         .data = nullptr,
691     };
692     uint64_t readLength = TEST_FILE_LENGTH;
693     uint64_t fileOffset = 0;
694     SendListenerInfo info;
695     info.fd = g_fd;
696     info.packetSize = PROXY_BLE_MAX_PACKET_SIZE;
697     uint32_t seq = TEST_SEQ;
698     int64_t len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
699     EXPECT_TRUE(len == -1);
700 
701     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
702     len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
703     EXPECT_TRUE(len == -1);
704 
705     len = PackReadFileRetransData(&fileFrame, seq, readLength, fileOffset, &info);
706     EXPECT_TRUE(len == -1);
707 
708     uint32_t dataTest = TEST_DATA_LENGTH;
709     fileFrame.data = (uint8_t *)&dataTest;
710     fileFrame.fileData = (uint8_t *)&dataTest;
711     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
712     len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
713     EXPECT_EQ(TEST_FILE_LENGTH, len);
714 
715     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
716     len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
717     EXPECT_EQ(TEST_FILE_LENGTH, len);
718 
719     len = PackReadFileRetransData(&fileFrame, seq, readLength, fileOffset, &info);
720     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, len);
721 }
722 
723 /**
724  * @tc.name: ClinetTransProxyPackFileDataFrameTest001
725  * @tc.desc: client trans proxy pack file data frame test, use normal parameter.
726  * @tc.type: FUNC
727  * @tc.require:
728  */
729 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyPackFileDataFrameTest001, TestSize.Level0)
730 {
731     uint32_t dataTest = TEST_DATA_LENGTH;
732     FileFrame fileFrame = {
733         .magic = FILE_MAGIC_NUMBER,
734         .frameType = TRANS_SESSION_BYTES,
735         .frameLength = 0,
736         .data = (uint8_t *)&dataTest,
737         .fileData = (uint8_t *)&dataTest,
738     };
739 
740     FileRecipientInfo info = {
741         .crc = APP_INFO_FILE_FEATURES_NO_SUPPORT,
742         .osType = OH_TYPE,
743     };
744 
745     uint32_t fileDataLen = 0;
746     int ret = UnpackFileDataFrame(&info, &fileFrame, &fileDataLen);
747     EXPECT_NE(SOFTBUS_OK, ret);
748 
749     fileFrame.frameLength = TEST_HEADER_LENGTH;
750     ret = UnpackFileDataFrame(&info, &fileFrame, &fileDataLen);
751     EXPECT_EQ(SOFTBUS_OK, ret);
752 
753     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
754     info.osType = OH_TYPE;
755     ret = UnpackFileDataFrame(&info, &fileFrame, &fileDataLen);
756     EXPECT_EQ(SOFTBUS_INVALID_DATA_HEAD, ret);
757 
758     fileFrame.magic = 0;
759     fileFrame.frameLength = TEST_HEADER_LENGTH_MIN;
760     ret = UnpackFileDataFrame(&info, &fileFrame, &fileDataLen);
761     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
762 }
763 
764 /**
765  * @tc.name: ClinetTransProxyRetransFileFrameTest001
766  * @tc.desc: client trans proxy retrans file frame test, use normal parameter.
767  * @tc.type: FUNC
768  * @tc.require:
769  */
770 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyRetransFileFrameTest001, TestSize.Level0)
771 {
772     SendListenerInfo info = {
773         .channelId = 1,
774         .fd = g_fd,
775         .fileSize = TEST_FILE_SIZE,
776         .frameNum = 1,
777         .crc = APP_INFO_FILE_FEATURES_NO_SUPPORT,
778     };
779     int ret = RetransFileFrameBySeq(nullptr, TEST_SEQ);
780     EXPECT_NE(SOFTBUS_OK, ret);
781 
782     ret = RetransFileFrameBySeq(&info, TEST_SEQ);
783     EXPECT_EQ(SOFTBUS_OK, ret);
784 
785     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
786     int32_t seq = TEST_SEQ_SECOND;
787     ret = RetransFileFrameBySeq(&info, seq);
788     EXPECT_NE(SOFTBUS_OK, ret);
789 
790     ret = RetransFileFrameBySeq(&info, TEST_SEQ);
791     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
792 }
793 
794 /**
795  * @tc.name: ClinetTransProxyAckResponseDataHandleTest001
796  * @tc.desc: client trans proxy handle response data test, use normal parameter.
797  * @tc.type: FUNC
798  * @tc.require:
799  */
800 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyAckResponseDataHandleTest001, TestSize.Level0)
801 {
802     SendListenerInfo info = {
803         .fileSize = TEST_FILE_SIZE,
804         .crc = APP_INFO_FILE_FEATURES_NO_SUPPORT,
805     };
806     uint32_t len = 0;
807     int ret = AckResponseDataHandle(&info, nullptr, len);
808     EXPECT_EQ(SOFTBUS_OK, ret);
809 
810     const char *data = "test_data";
811     ret = AckResponseDataHandle(&info, data, len);
812     EXPECT_EQ(SOFTBUS_OK, ret);
813 
814     len = sizeof(AckResponseData);
815     ret = AckResponseDataHandle(&info, data, len);
816     EXPECT_EQ(SOFTBUS_OK, ret);
817 
818     AckResponseData ackResponseData = {
819         .startSeq = FILE_SEND_ACK_RESULT_SUCCESS,
820         .seqResult = TEST_SEQ_SECOND,
821     };
822     const char *dataTest = reinterpret_cast<const char*>(&ackResponseData);
823     ret = AckResponseDataHandle(&info, dataTest, len);
824     EXPECT_EQ(SOFTBUS_OK, ret);
825 }
826 
827 /**
828  * @tc.name: ClinetTransProxyGetFullRecvPathTest001
829  * @tc.desc: client trans proxy get full recv path test, use normal parameter.
830  * @tc.type: FUNC
831  * @tc.require:
832  */
833 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetFullRecvPathTest001, TestSize.Level0)
834 {
835     char *result = GetFullRecvPath(nullptr, nullptr);
836     EXPECT_EQ(nullptr, result);
837     const char *filePath1 = "";
838     const char *recvRootDir1 = "";
839 
840     result = GetFullRecvPath(filePath1, recvRootDir1);
841     EXPECT_NE(nullptr, result);
842 
843     const char *filePath2 = "/test.txt";
844     result = GetFullRecvPath(filePath2, recvRootDir1);
845     EXPECT_NE(nullptr, result);
846 
847     const char *recvRootDir2 = "/data/";
848     result = GetFullRecvPath(filePath1, recvRootDir2);
849     EXPECT_NE(nullptr, result);
850 
851     result = GetFullRecvPath(filePath2, recvRootDir2);
852     EXPECT_NE(nullptr, result);
853 
854     const char *filePath3 = "/test.txt";
855     const char *recvRootDir3 = "/data";
856     result = GetFullRecvPath(filePath3, recvRootDir2);
857     EXPECT_NE(nullptr, result);
858 
859     result = GetFullRecvPath(filePath2, recvRootDir3);
860     EXPECT_NE(nullptr, result);
861 }
862 
863 /**
864  * @tc.name: ClinetTransProxyGetDirPathTest001
865  * @tc.desc: client trans proxy get dir path test, use normal parameter.
866  * @tc.type: FUNC
867  * @tc.require:
868  */
869 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetDirPathTest001, TestSize.Level0)
870 {
871     int ret = GetDirPath(nullptr, nullptr, 0);
872     EXPECT_NE(SOFTBUS_OK, ret);
873 
874     const char *fullPath1 = "";
875     char dirPath1[TEST_FILE_LENGTH] = {0};
876     ret = GetDirPath(fullPath1, nullptr, 0);
877     EXPECT_NE(SOFTBUS_OK, ret);
878 
879     const char *fullPath2 = "/data/txt/";
880     ret = GetDirPath(fullPath2, nullptr, 0);
881     EXPECT_NE(SOFTBUS_OK, ret);
882 
883     const char *fullPath3 = "/d/t.txt";
884     ret = GetDirPath(fullPath3, dirPath1, 0);
885     EXPECT_NE(SOFTBUS_OK, ret);
886 
887     ret = GetDirPath(fullPath3, dirPath1, TEST_FILE_LENGTH);
888     EXPECT_EQ(SOFTBUS_OK, ret);
889 }
890 
891 /**
892  * @tc.name: ClinetTransProxyGetAbsFullPathTest001
893  * @tc.desc: client trans proxy get path test, use normal parameter.
894  * @tc.type: FUNC
895  * @tc.require:
896  */
897 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetAbsFullPathTest001, TestSize.Level0)
898 {
899     int ret = GetAbsFullPath(nullptr, nullptr, 0);
900     EXPECT_NE(SOFTBUS_OK, ret);
901 
902     char recvAbsPath[TEST_PATH_SIZE];
903     ret = GetAbsFullPath(g_testProxyFileList[0], recvAbsPath, TEST_PATH_SIZE);
904     EXPECT_EQ(SOFTBUS_OK, ret);
905 
906     ret = GetAbsFullPath(g_testProxyFileList[0], recvAbsPath, TEST_FILE_LENGTH);
907     EXPECT_NE(SOFTBUS_OK, ret);
908 
909     ret = CreateDirAndGetAbsPath(g_testProxyFileList[0], nullptr, TEST_PATH_SIZE);
910     EXPECT_NE(SOFTBUS_OK, ret);
911 
912     ret = CreateDirAndGetAbsPath(g_testProxyFileList[0], recvAbsPath, TEST_PATH_SIZE);
913     EXPECT_EQ(SOFTBUS_OK, ret);
914 
915     ret = CreateDirAndGetAbsPath(g_testProxyFileList[0], recvAbsPath, TEST_FILE_LENGTH);
916     EXPECT_NE(SOFTBUS_OK, ret);
917 }
918 
919 /**
920  * @tc.name: ClinetTransProxySendListenerInfoTest001
921  * @tc.desc: client trans proxy add and del SendListenerInfo test, use normal parameter.
922  * @tc.type: FUNC
923  * @tc.require:
924  */
925 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxySendListenerInfoTest001, TestSize.Level0)
926 {
927     SendListenerInfo *info = static_cast<SendListenerInfo *>(SoftBusCalloc(sizeof(SendListenerInfo)));
928     EXPECT_TRUE(info != nullptr);
929     info->sessionId = 1;
930     info->crc = 1;
931     info->channelId = 1;
932     int32_t ret = AddSendListenerInfo(info);
933     EXPECT_EQ(SOFTBUS_OK, ret);
934 
935     int32_t sessionId = 1;
936     uint32_t seq = 0;
937     int32_t res = 0;
938     ret = ProcessFileRecvResult(sessionId, seq, res);
939     EXPECT_EQ(SOFTBUS_OK, ret);
940 
941     DelSendListenerInfo(nullptr);
942 
943     DelSendListenerInfo(info);
944 }
945 
946 /**
947  * @tc.name: ClinetTransProxyFileTransStartInfoTest001
948  * @tc.desc: client trans proxy pack file start info test, use normal parameter.
949  * @tc.type: FUNC
950  * @tc.require:
951  */
952 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileTransStartInfoTest001, TestSize.Level0)
953 {
954     int ret = PackFileTransStartInfo(nullptr, nullptr, TEST_FILE_TEST_TXT_FILE, nullptr);
955     EXPECT_NE(SOFTBUS_OK, ret);
956 
957     uint32_t dataTest = TEST_DATA_LENGTH;
958     FileFrame fileFrame = {
959         .frameLength = 0,
960         .data = (uint8_t *)&dataTest,
961         .fileData = (uint8_t *)&dataTest,
962     };
963     SendListenerInfo info;
964     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
965     info.sessionId = 1;
966     info.channelId = 1;
967     info.packetSize = PROXY_BLE_MAX_PACKET_SIZE;
968 
969     ret = PackFileTransStartInfo(&fileFrame, g_testProxyFileList[0], TEST_FILE_TEST_TXT_FILE, &info);
970     EXPECT_EQ(SOFTBUS_OK, ret);
971 
972     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
973     ret = PackFileTransStartInfo(&fileFrame, g_testProxyFileList[0], TEST_FILE_TEST_TXT_FILE, &info);
974     EXPECT_EQ(SOFTBUS_OK, ret);
975 }
976 
977 /**
978  * @tc.name: ClinetTransProxyUnFileTransStartInfoTest001
979  * @tc.desc: client trans proxy pack file data frame test, use normal parameter.
980  * @tc.type: FUNC
981  * @tc.require:
982  */
983 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyUnFileTransStartInfoTest001, TestSize.Level0)
984 {
985     uint32_t packetSize = TEST_PACKET_SIZE;
986     int ret = UnpackFileTransStartInfo(nullptr, nullptr, nullptr, packetSize);
987     EXPECT_NE(SOFTBUS_OK, ret);
988 
989     uint32_t dataTest = TEST_DATA_LENGTH;
990     FileFrame fileFrame = {
991         .frameLength = 0,
992         .data = (uint8_t *)&dataTest,
993         .fileData = (uint8_t *)&dataTest,
994     };
995     FileRecipientInfo info;
996     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
997     info.osType = OH_TYPE;
998     SingleFileInfo singleFileInfo;
999     ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
1000     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1001 
1002     fileFrame.frameLength = TEST_HEADER_LENGTH;
1003     ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
1004     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
1005 
1006     uint32_t data = FILE_MAGIC_NUMBER;
1007     fileFrame.data = (uint8_t *)&data;
1008     ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
1009     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
1010 
1011     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
1012     fileFrame.frameLength = 0;
1013     ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
1014     EXPECT_NE(SOFTBUS_OK, ret);
1015 
1016     fileFrame.frameLength = FRAME_DATA_SEQ_OFFSET;
1017     ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
1018     EXPECT_EQ(SOFTBUS_OK, ret);
1019 
1020     fileFrame.frameLength = FRAME_DATA_SEQ_OFFSET + TEST_HEADER_LENGTH;
1021     ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
1022     EXPECT_EQ(SOFTBUS_OK, ret);
1023 }
1024 
1025 /**
1026  * @tc.name: ClinetTransProxyFileCrcCheckSumTest001
1027  * @tc.desc: client trans proxy crc check test, use normal parameter.
1028  * @tc.type: FUNC
1029  * @tc.require:
1030  */
1031 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileCrcCheckSumTest001, TestSize.Level0)
1032 {
1033     int ret = SendFileCrcCheckSum(nullptr);
1034     EXPECT_NE(SOFTBUS_OK, ret);
1035 
1036     SendListenerInfo info;
1037     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
1038     ret = SendFileCrcCheckSum(&info);
1039     EXPECT_EQ(SOFTBUS_OK, ret);
1040 
1041     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
1042     ret = SendFileCrcCheckSum(&info);
1043     EXPECT_NE(SOFTBUS_OK, ret);
1044 
1045     ret = UnpackFileCrcCheckSum(nullptr, nullptr);
1046     EXPECT_NE(SOFTBUS_OK, ret);
1047 
1048     FileRecipientInfo fileInfo;
1049     fileInfo.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
1050     FileFrame fileFrame;
1051     ret = UnpackFileCrcCheckSum(&fileInfo, &fileFrame);
1052     EXPECT_EQ(SOFTBUS_OK, ret);
1053 
1054     fileInfo.crc = APP_INFO_FILE_FEATURES_SUPPORT;
1055     ret = UnpackFileCrcCheckSum(&fileInfo, &fileFrame);
1056     EXPECT_NE(SOFTBUS_OK, ret);
1057 
1058     fileFrame.frameLength = 20;
1059     ret = UnpackFileCrcCheckSum(&fileInfo, &fileFrame);
1060     EXPECT_NE(SOFTBUS_OK, ret);
1061 }
1062 
1063 /**
1064  * @tc.name: ClinetTransProxyFileToFrameTest001
1065  * @tc.desc: client trans proxy send file test, use the wrong or normal parameter.
1066  * @tc.type: FUNC
1067  * @tc.require:
1068  */
1069 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileToFrameTest001, TestSize.Level0)
1070 {
1071     SendListenerInfo info;
1072     info.sessionId = 1;
1073     info.crc = 1;
1074     info.channelId = 1;
1075 
1076     int ret = SendSingleFile(&info, nullptr, g_testProxyFileList[0]);
1077     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1078 
1079     ret = FileToFrameAndSendFile(nullptr, g_testProxyFileList[0], g_testProxyFileList[0]);
1080     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1081 
1082     ret = FileToFrameAndSendFile(&info, g_testProxyFileList[0], nullptr);
1083     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1084 
1085     ret = FileToFrameAndSendFile(&info, nullptr, g_testProxyFileList[0]);
1086     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1087 
1088     ret = FileToFrameAndSendFile(&info, g_testProxyFileList[0], g_testProxyFileList[0]);
1089     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1090 
1091     ret = SendSingleFile(&info, g_testProxyFileList[0], g_testProxyFileList[0]);
1092     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1093 
1094     ret = SendFileList(info.channelId, g_testProxyFileList, TEST_FILE_CNT);
1095     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
1096 
1097     ret = SendFileList(info.channelId, nullptr, TEST_FILE_CNT);
1098     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1099 }
1100 
1101 /**
1102  * @tc.name: ClinetTransProxyFileToFrameTest002
1103  * @tc.desc: client trans proxy file to frame test, use normal parameter.
1104  * @tc.type: FUNC
1105  * @tc.require:
1106  */
1107 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileToFrameTest002, TestSize.Level0)
1108 {
1109     SendListenerInfo sendInfo = {
1110         .channelId = 1,
1111         .sessionId = 1,
1112         .crc = APP_INFO_FILE_FEATURES_NO_SUPPORT,
1113     };
1114 
1115     int ret = FileToFrameAndSendFile(&sendInfo, g_testProxyFileList[0], g_destFile);
1116     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1117 
1118     ret = FileToFrame(&sendInfo, TEST_FRAME_NUMBER, g_destFile, TEST_FILE_TEST_TXT_FILE);
1119     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1120 
1121     sendInfo.crc = APP_INFO_FILE_FEATURES_SUPPORT;
1122     ret = FileToFrame(&sendInfo, TEST_FRAME_NUMBER, g_destFile, TEST_FILE_TEST_TXT_FILE);
1123     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1124 }
1125 
1126 /**
1127  * @tc.name: ClinetTransProxyStartSendFileTest001
1128  * @tc.desc: client trans proxy start send file test, use normal parameter.
1129  * @tc.type: FUNC
1130  * @tc.require:
1131  */
1132 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyStartSendFileTest001, TestSize.Level0)
1133 {
1134     SendListenerInfo sendInfo = {
1135         .channelId = 1,
1136         .sessionId = 1,
1137         .crc = APP_INFO_FILE_FEATURES_NO_SUPPORT,
1138     };
1139 
1140     int ret = ProxyStartSendFile(&sendInfo, g_testProxyFileList, g_testProxyFileList, TEST_FILE_CNT);
1141     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1142 }
1143 
1144 /**
1145  * @tc.name: ClinetTransProxyCheckFileTest001
1146  * @tc.desc: client trans proxy start send file test, use normal parameter.
1147  * @tc.type: FUNC
1148  * @tc.require:
1149  */
1150 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyCheckFileTest001, TestSize.Level0)
1151 {
1152     bool result = CheckRecvFileExist(nullptr);
1153     EXPECT_EQ(false, result);
1154 
1155     result = CheckRecvFileExist(g_testProxyFileList[0]);
1156     EXPECT_EQ(false, result);
1157 }
1158 
1159 /**
1160  * @tc.name: ClinetTransProxyPutToRcvListTest001
1161  * @tc.desc: client trans proxy put to file list test, use normal parameter.
1162  * @tc.type: FUNC
1163  * @tc.require:
1164  */
1165 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyPutToRcvListTest001, TestSize.Level0)
1166 {
1167     int ret = PutToRecvFileList(nullptr, nullptr);
1168     EXPECT_NE(SOFTBUS_OK, ret);
1169 
1170     FileRecipientInfo recipient = {
1171         .recvFileInfo.fileStatus = NODE_ERR,
1172     };
1173     const SingleFileInfo file = {0};
1174     ret = PutToRecvFileList(&recipient, &file);
1175     EXPECT_NE(SOFTBUS_OK, ret);
1176 
1177     recipient.recvFileInfo.fileStatus = NODE_IDLE;
1178     ret = PutToRecvFileList(&recipient, &file);
1179     EXPECT_NE(SOFTBUS_OK, ret);
1180 
1181     SingleFileInfo trueFile = {0};
1182     (void)memcpy_s(trueFile.filePath, MAX_FILE_PATH_NAME_LEN, g_recvFile, sizeof(g_recvFile));
1183     ret = PutToRecvFileList(&recipient, &trueFile);
1184     EXPECT_EQ(SOFTBUS_OK, ret);
1185 }
1186 
1187 /**
1188  * @tc.name: ClinetTransProxyRecvRecipientInfoListTest001
1189  * @tc.desc: client trans proxy recv recipient info test, use normal parameter.
1190  * @tc.type: FUNC
1191  * @tc.require:
1192  */
1193 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyRecvRecipientInfoListTest001, TestSize.Level0)
1194 {
1195     int32_t sessionId = 1;
1196     FileRecipientInfo *result = GetRecipientNoLock(sessionId);
1197     EXPECT_EQ(nullptr, result);
1198 
1199     uint32_t seq = 0;
1200     int32_t res = 0;
1201     int ret = ProcessFileSendResult(sessionId, seq, res);
1202     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
1203 
1204     sessionId = -1;
1205     result = GetRecipientNoLock(sessionId);
1206     EXPECT_EQ(nullptr, result);
1207 
1208     ret = ProcessFileSendResult(sessionId, seq, res);
1209     EXPECT_NE(SOFTBUS_OK, ret);
1210 
1211     ret = ProcessFileRecvResult(sessionId, seq, res);
1212     EXPECT_NE(SOFTBUS_OK, ret);
1213 
1214     ReleaseRecipientRef(nullptr);
1215 
1216     FileRecipientInfo *info = static_cast<FileRecipientInfo *>(SoftBusCalloc(sizeof(FileRecipientInfo)));
1217     info->objRefCount = 2,
1218     ReleaseRecipientRef(info);
1219 
1220     info->objRefCount = 1;
1221     ReleaseRecipientRef(info);
1222 }
1223 
1224 /**
1225  * @tc.name: ClinetTransProxyGetRecipientInfoListTest001
1226  * @tc.desc: client trans proxy get recipient info test, use normal parameter.
1227  * @tc.type: FUNC
1228  * @tc.require:
1229  */
1230 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetRecipientInfoListTest001, TestSize.Level0)
1231 {
1232     int32_t sessionId = -1;
1233     int32_t channelId = 1;
1234     int32_t osType = TEST_OS_TYPE;
1235     FileRecipientInfo *result = GetRecipientInProcessRef(sessionId);
1236     EXPECT_EQ(nullptr, result);
1237 
1238     result = GetRecipientInCreateFileRef(sessionId, channelId, osType);
1239     EXPECT_EQ(nullptr, result);
1240 
1241     sessionId = 1;
1242     result = GetRecipientInCreateFileRef(sessionId, channelId, osType);
1243     EXPECT_EQ(nullptr, result);
1244 
1245     result = GetRecipientInProcessRef(sessionId);
1246     EXPECT_EQ(nullptr, result);
1247 }
1248 
1249 /**
1250  * @tc.name: ClinetTransProxyWriteEmptyFrameTest001
1251  * @tc.desc: client trans proxy write empty frame test, use normal parameter.
1252  * @tc.type: FUNC
1253  * @tc.require:
1254  */
1255 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyWriteEmptyFrameTest001, TestSize.Level0)
1256 {
1257     int32_t cnt = 0;
1258     int ret = WriteEmptyFrame(nullptr, cnt);
1259     EXPECT_NE(SOFTBUS_OK, ret);
1260 
1261     SingleFileInfo info = {0};
1262     ret = WriteEmptyFrame(&info, cnt);
1263     EXPECT_EQ(SOFTBUS_OK, ret);
1264 
1265     cnt = 1;
1266     ret = WriteEmptyFrame(&info, cnt);
1267     EXPECT_NE(SOFTBUS_OK, ret);
1268 
1269     info.fileFd = g_fd;
1270     info.oneFrameLen = -1;
1271     info.fileOffset = 0;
1272     ret = WriteEmptyFrame(&info, cnt);
1273     EXPECT_NE(SOFTBUS_OK, ret);
1274 
1275     info.oneFrameLen = TEST_FILE_LENGTH;
1276     ret = WriteEmptyFrame(&info, cnt);
1277     EXPECT_EQ(SOFTBUS_OK, ret);
1278 }
1279 
1280 /**
1281  * @tc.name: ClinetTransProxyProcessOneFrameCRCTest001
1282  * @tc.desc: client trans proxy process one frameCRC test, use normal parameter.
1283  * @tc.type: FUNC
1284  * @tc.require:
1285  */
1286 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyProcessOneFrameCRCTest001, TestSize.Level0)
1287 {
1288     uint32_t dataLen = 0;
1289     int32_t ret = ProcessOneFrameCRC(nullptr, dataLen, nullptr);
1290     EXPECT_NE(SOFTBUS_OK, ret);
1291 
1292     uint8_t *emptyBuff = static_cast<uint8_t *>(SoftBusCalloc(TEST_FILE_SIZE));
1293     if (emptyBuff == NULL) {
1294         return;
1295     }
1296     FileFrame frame = {
1297         .frameType = TRANS_SESSION_FILE_FIRST_FRAME,
1298         .seq = TEST_SEQ32,
1299         .fileData = emptyBuff,
1300     };
1301     SingleFileInfo fileInfo = {
1302         .seq = 0,
1303         .fileFd = g_fd,
1304         .fileOffset = 0,
1305         .oneFrameLen = TEST_FILE_LENGTH,
1306         .startSeq = 0,
1307         .preStartSeq = 0,
1308     };
1309     ret = ProcessOneFrameCRC(&frame, dataLen, &fileInfo);
1310     EXPECT_NE(SOFTBUS_OK, ret);
1311 
1312     frame.seq = TEST_SEQ128;
1313     fileInfo.seq = TEST_SEQ126;
1314     ret = ProcessOneFrameCRC(&frame, dataLen, &fileInfo);
1315     EXPECT_NE(SOFTBUS_OK, ret);
1316 
1317     fileInfo.preStartSeq = TEST_SEQ128;
1318     ret = ProcessOneFrameCRC(&frame, dataLen, &fileInfo);
1319     EXPECT_NE(SOFTBUS_OK, ret);
1320 
1321     frame.frameType = TRANS_SESSION_FILE_LAST_FRAME;
1322     ret = ProcessOneFrameCRC(&frame, dataLen, &fileInfo);
1323     EXPECT_NE(SOFTBUS_OK, ret);
1324 
1325     fileInfo.startSeq = TEST_SEQ8;
1326     frame.seq = TEST_SEQ_SECOND;
1327     ret = ProcessOneFrameCRC(&frame, dataLen, &fileInfo);
1328     EXPECT_NE(SOFTBUS_OK, ret);
1329 
1330     dataLen = TEST_SEQ16;
1331     ret = ProcessOneFrameCRC(&frame, dataLen, &fileInfo);
1332     EXPECT_EQ(SOFTBUS_OK, ret);
1333     SoftBusFree(emptyBuff);
1334 }
1335 
1336 /**
1337  * @tc.name: ClinetTransProxyProcessOneFrameTest001
1338  * @tc.desc: client trans proxy process one frame test, use normal parameter.
1339  * @tc.type: FUNC
1340  * @tc.require:
1341  */
1342 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyProcessOneFrameTest001, TestSize.Level0)
1343 {
1344     FileFrame frame = {
1345         .frameType = TRANS_SESSION_FILE_FIRST_FRAME,
1346         .seq = TEST_SEQ32,
1347     };
1348     uint32_t dataLen = TEST_SEQ16;
1349     int32_t crc = APP_INFO_FILE_FEATURES_SUPPORT;
1350     int32_t osType = TEST_OS_TYPE;
1351     SingleFileInfo fileInfo = {
1352         .seq = 0,
1353         .fileFd = g_fd,
1354         .fileStatus = NODE_ERR,
1355         .fileOffset = 0,
1356         .oneFrameLen = TEST_FILE_LENGTH,
1357         .startSeq = 0,
1358         .preStartSeq = 0,
1359     };
1360     int ret = ProcessOneFrame(&frame, dataLen, crc, &fileInfo, osType);
1361     EXPECT_NE(SOFTBUS_OK, ret);
1362 
1363     fileInfo.fileStatus = NODE_IDLE;
1364     ret = ProcessOneFrame(&frame, dataLen, crc, &fileInfo, osType);
1365     EXPECT_NE(SOFTBUS_OK, ret);
1366 
1367     crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
1368     ret = ProcessOneFrame(&frame, dataLen, crc, &fileInfo, osType);
1369     EXPECT_NE(SOFTBUS_OK, ret);
1370 }
1371 
1372 /**
1373  * @tc.name: ClinetTransProxyCrcCheckTest001
1374  * @tc.desc: client trans proxy process crc check test, use normal parameter.
1375  * @tc.type: FUNC
1376  * @tc.require:
1377  */
1378 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyCrcCheckTest001, TestSize.Level0)
1379 {
1380     FileFrame frame = {
1381         .seq = TEST_SEQ32,
1382         .crc = APP_INFO_FILE_FEATURES_SUPPORT,
1383     };
1384     int32_t sessionId = -1;
1385 
1386     int ret = ProcessCrcCheckSumData(sessionId, nullptr);
1387     EXPECT_NE(SOFTBUS_OK, ret);
1388 
1389     ret = ProcessCrcCheckSumData(sessionId, &frame);
1390     EXPECT_NE(SOFTBUS_OK, ret);
1391 
1392     sessionId = 1;
1393     ret = ProcessCrcCheckSumData(sessionId, &frame);
1394     EXPECT_NE(SOFTBUS_OK, ret);
1395 
1396     frame.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
1397     ret = ProcessCrcCheckSumData(sessionId, &frame);
1398     EXPECT_NE(SOFTBUS_OK, ret);
1399 }
1400 
1401 /**
1402  * @tc.name: ClinetTransProxyFileAckRequestTest001
1403  * @tc.desc: client trans proxy file ack request test, use normal parameter.
1404  * @tc.type: FUNC
1405  * @tc.require:
1406  */
1407 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileAckRequestTest001, TestSize.Level0)
1408 {
1409     FileFrame frame = {
1410         .frameLength = TEST_HEADER_LENGTH,
1411         .crc = APP_INFO_FILE_FEATURES_SUPPORT,
1412         .data = nullptr,
1413     };
1414     int32_t sessionId = -1;
1415 
1416     int ret = ProcessFileAckRequest(sessionId, nullptr);
1417     EXPECT_NE(SOFTBUS_OK, ret);
1418 
1419     ret = ProcessFileAckRequest(sessionId, &frame);
1420     EXPECT_NE(SOFTBUS_OK, ret);
1421 
1422     sessionId = 1;
1423     uint32_t dataTest = 0;
1424     dataTest = FILE_MAGIC_NUMBER;
1425     frame.data = (uint8_t *)&dataTest;
1426     ret = ProcessFileAckRequest(sessionId, &frame);
1427     EXPECT_NE(SOFTBUS_OK, ret);
1428 
1429     ret = ProcessFileAckRequest(sessionId, &frame);
1430     EXPECT_NE(SOFTBUS_OK, ret);
1431 }
1432 
1433 /**
1434  * @tc.name: ClinetTransProxyFileAckResponseTest001
1435  * @tc.desc: client trans proxy file ack response test, use normal parameter.
1436  * @tc.type: FUNC
1437  * @tc.require:
1438  */
1439 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileAckResponseTest001, TestSize.Level0)
1440 {
1441     FileFrame frame = {
1442         .frameLength = 0,
1443         .crc = APP_INFO_FILE_FEATURES_SUPPORT,
1444         .data = nullptr,
1445     };
1446     int32_t sessionId = -1;
1447 
1448     int ret = ProcessFileAckResponse(sessionId, nullptr);
1449     EXPECT_NE(SOFTBUS_OK, ret);
1450 
1451     ret = ProcessFileAckResponse(sessionId, &frame);
1452     EXPECT_NE(SOFTBUS_OK, ret);
1453 
1454     uint32_t dataTest[TEST_FRAME_DATA_LENGTH] = {0};
1455     dataTest[TEST_FILE_MAGIC_OFFSET] = FILE_MAGIC_NUMBER;
1456     frame.data = (uint8_t *)dataTest;
1457     ret = ProcessFileAckResponse(sessionId, &frame);
1458     EXPECT_NE(SOFTBUS_OK, ret);
1459 
1460     SendListenerInfo info;
1461     info.sessionId = 1;
1462     info.crc = 1;
1463     info.channelId = 1;
1464     ret = AddSendListenerInfo(&info);
1465     EXPECT_EQ(SOFTBUS_OK, ret);
1466 
1467     frame.frameLength = TEST_HEADER_LENGTH;
1468     *(uint64_t *)(frame.data + FRAME_MAGIC_OFFSET) = FRAME_DATA_SEQ_OFFSET + FRAME_DATA_SEQ_OFFSET;
1469     ret = ProcessFileAckResponse(sessionId, &frame);
1470     EXPECT_NE(SOFTBUS_OK, ret);
1471 
1472     sessionId = 1;
1473     ret = ProcessFileAckResponse(sessionId, &frame);
1474     EXPECT_EQ(SOFTBUS_OK, ret);
1475 }
1476 
1477 /**
1478  * @tc.name: ClinetTransProxyCheckParameterTest001
1479  * @tc.desc: client trans proxy check parameter test, use normal parameter.
1480  * @tc.type: FUNC
1481  * @tc.require:
1482  */
1483 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyCheckParameterTest001, TestSize.Level0)
1484 {
1485     bool result = IsValidFileString(nullptr, TEST_FILE_CNT, TEST_FILE_LENGTH);
1486     EXPECT_EQ(false, result);
1487 
1488     uint32_t fileNum = 0;
1489     result = IsValidFileString(g_testProxyFileList, fileNum, TEST_FILE_LENGTH);
1490     EXPECT_EQ(false, result);
1491 
1492     int32_t sessionId = 1;
1493     int ret = ProcessFileTransResult(sessionId, nullptr);
1494     EXPECT_NE(SOFTBUS_OK, ret);
1495 }
1496 
1497 /**
1498  * @tc.name: ClinetTransProxyProcessFileListDataTest001
1499  * @tc.desc: client trans proxy process file list data test, use normal parameter.
1500  * @tc.type: FUNC
1501  * @tc.require:
1502  */
1503 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyProcessFileListDataTest001, TestSize.Level0)
1504 {
1505     int32_t sessionId = 1;
1506     FileFrame frame = {
1507         .frameLength = TEST_FILE_SIZE,
1508         .data = (uint8_t *)"00010010datatest,"
1509     };
1510     int ret = ProcessFileListData(sessionId, &frame);
1511     EXPECT_NE(SOFTBUS_OK, ret);
1512 }
1513 
1514 /**
1515  * @tc.name: ClinetTransProxyGetFileInfoTest001
1516  * @tc.desc: client trans proxy get file info test, use normal parameter.
1517  * @tc.type: FUNC
1518  * @tc.require:
1519  */
1520 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetFileInfoTest001, TestSize.Level0)
1521 {
1522     FileFrame frame = {
1523         .frameLength = 0,
1524         .data = (uint8_t *)"00010010datatest.txt",
1525     };
1526     FileRecipientInfo info = {
1527         .fileListener.rootDir = "../test",
1528     };
1529     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
1530     SingleFileInfo file;
1531     uint32_t packetSize = TEST_PACKET_SIZE;
1532     int ret = GetFileInfoByStartFrame(nullptr, nullptr, nullptr, packetSize);
1533     EXPECT_NE(SOFTBUS_OK, ret);
1534 
1535     ret = GetFileInfoByStartFrame(&frame, &info, &file, packetSize);
1536     EXPECT_NE(SOFTBUS_OK, ret);
1537 
1538     ret = memcpy_s(info.fileListener.rootDir, TEST_FILEPATH_LENGTH, g_rootDir + 1, TEST_FILEPATH_LENGTH);
1539     ASSERT_EQ(SOFTBUS_OK, ret);
1540     ret = GetFileInfoByStartFrame(&frame, &info, &file, packetSize);
1541     EXPECT_NE(SOFTBUS_OK, ret);
1542 
1543     frame.frameLength = FRAME_DATA_SEQ_OFFSET + 9;
1544     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
1545     ret = GetFileInfoByStartFrame(&frame, &info, &file, packetSize);
1546     EXPECT_EQ(SOFTBUS_OK, ret);
1547 }
1548 
1549 /**
1550  * @tc.name: ClinetTransProxyWriteFrameTest001
1551  * @tc.desc: client trans proxy write frame to file test, use normal parameter.
1552  * @tc.type: FUNC
1553  * @tc.require:
1554  */
1555 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyWriteFrameTest001, TestSize.Level0)
1556 {
1557     int32_t sessionId = 1;
1558     FileFrame frame = {
1559         .frameLength = 0,
1560         .data = (uint8_t *)"00010010datatest.txt",
1561     };
1562     int ret = WriteFrameToFile(sessionId, &frame);
1563     EXPECT_NE(SOFTBUS_OK, ret);
1564 
1565     frame.frameLength = TEST_DATA_LENGTH;
1566     ret = WriteFrameToFile(sessionId, &frame);
1567     EXPECT_NE(SOFTBUS_OK, ret);
1568 }
1569 
1570 /**
1571  * @tc.name: ClinetTransProxyChannelSendFileStreamTest001
1572  * @tc.desc: client trans proxy write frame to file test, use normal parameter.
1573  * @tc.type: FUNC
1574  * @tc.require:
1575  */
1576 HWTEST_F(ClientTransProxyFileManagerTest, ProxyChannelSendFileStreamTest001, TestSize.Level0)
1577 {
1578     int32_t channelId = 1;
1579     const char *data = "test_data";
1580     uint32_t len = TEST_HEADER_LENGTH;
1581     int32_t type = 1;
1582 
1583     int ret = ProxyChannelSendFileStream(channelId, data, len, type);
1584     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
1585 }
1586 
1587 /**
1588  * @tc.name: ClinetTransProxySendFileTransResult001
1589  * @tc.desc: client trans proxy write frame to file test, use normal parameter.
1590  * @tc.type: FUNC
1591  * @tc.require:
1592  */
1593 HWTEST_F(ClientTransProxyFileManagerTest, ProxySendFileTransResultTest001, TestSize.Level0)
1594 {
1595     int32_t channelId = 1;
1596     uint32_t seq = TEST_SEQ;
1597     int32_t result = 0;
1598     uint32_t side = 0;
1599 
1600     int ret = SendFileTransResult(channelId, seq, result, side);
1601     EXPECT_NE(SOFTBUS_MALLOC_ERR, ret);
1602 }
1603 
1604 /**
1605  * @tc.name: ClinetUnpackFileTransResultFrame001
1606  * @tc.desc: client trans proxy write frame to file test, use normal parameter.
1607  * @tc.type: FUNC
1608  * @tc.require:
1609  */
1610 HWTEST_F(ClientTransProxyFileManagerTest, ProxyUnpackFileTransResultFrame001, TestSize.Level0)
1611 {
1612     uint32_t seq = TEST_SEQ;
1613     int32_t result = 0;
1614     uint32_t side = 0;
1615     uint32_t data = 0;
1616     const uint8_t *data1 = (const uint8_t *)&data;
1617     uint32_t len = TEST_HEADER_LENGTH;
1618 
1619     int ret = UnpackFileTransResultFrame(data1, len, nullptr, &result, &side);
1620     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1621 
1622     ret = UnpackFileTransResultFrame(data1, len, &seq, nullptr, &side);
1623     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1624 
1625     ret = UnpackFileTransResultFrame(data1, len, &seq, &result, nullptr);
1626     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1627 
1628     ret = UnpackFileTransResultFrame(nullptr, len, &seq, &result, &side);
1629     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
1630 
1631     ret = UnpackFileTransResultFrame(data1, len, &seq, &result, &side);
1632     EXPECT_NE(SOFTBUS_OK, ret);
1633 
1634     len = 0;
1635     ret = UnpackFileTransResultFrame(data1, len, &seq, &result, &side);
1636     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
1637 }
1638 
1639 /**
1640  * @tc.name: ClinetTransProxyFileAckReqAndResDataTest002
1641  * @tc.desc: client trans proxy file ack req and res data test, use the wrong or normal parameter.
1642  * @tc.type: FUNC
1643  * @tc.require:
1644  */
1645 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyFileAckReqAndResDataTest002, TestSize.Level0)
1646 {
1647     int32_t channelId = 1;
1648     uint32_t startSeq = TEST_SEQ;
1649     uint32_t value = 0;
1650     int ret = SendFileAckReqAndResData(channelId, startSeq, value, CHANNEL_TYPE_PROXY);
1651     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, ret);
1652 
1653     FileFrame frame;
1654     frame.frameLength = 0;
1655     frame.data = nullptr;
1656     uint64_t dataTest = 0;
1657     ret = UnpackAckReqAndResData(nullptr, &startSeq, &value);
1658     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1659 
1660     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
1661     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1662 
1663     ret = UnpackAckReqAndResData(&frame, nullptr, &value);
1664     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1665 
1666     ret = UnpackAckReqAndResData(&frame, &startSeq, nullptr);
1667     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1668 
1669     frame.data = (uint8_t *)&dataTest;
1670     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
1671     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
1672 
1673     frame.frameLength = TEST_HEADER_LENGTH;
1674     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
1675     EXPECT_EQ(SOFTBUS_INVALID_DATA_HEAD, ret);
1676 
1677     dataTest = TEST_HEADER_LENGTH;
1678     frame.data = (uint8_t *)&dataTest;
1679     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
1680     EXPECT_EQ(SOFTBUS_INVALID_DATA_HEAD, ret);
1681 
1682     dataTest = FILE_MAGIC_NUMBER;
1683     frame.data = (uint8_t *)&dataTest;
1684     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
1685     EXPECT_EQ(SOFTBUS_OK, ret);
1686 
1687     ret = UnpackAckReqAndResData(&frame, &startSeq, &value);
1688     EXPECT_EQ(SOFTBUS_OK, ret);
1689 }
1690 
1691 /**
1692  * @tc.name: ClinetTransProxyPackFileDataTest002
1693  * @tc.desc: client trans proxy pack file data test, use the wrong parameter.
1694  * @tc.type: FUNC
1695  * @tc.require:
1696  */
1697 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyPackFileDataTest002, TestSize.Level0)
1698 {
1699     FileFrame fileFrame = {
1700         .frameType = TRANS_SESSION_BYTES,
1701         .data = nullptr,
1702     };
1703     uint64_t readLength = TEST_FILE_LENGTH;
1704     uint64_t fileOffset = 0;
1705     SendListenerInfo info;
1706     info.fd = g_fd;
1707     info.packetSize = PROXY_BLE_MAX_PACKET_SIZE;
1708     uint32_t seq = TEST_SEQ;
1709     int64_t len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
1710     EXPECT_EQ(TEST_INVALID_LEN, len);
1711 
1712     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
1713     len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
1714     EXPECT_EQ(TEST_INVALID_LEN, len);
1715 
1716     len = PackReadFileRetransData(&fileFrame, seq, readLength, fileOffset, &info);
1717     EXPECT_EQ(TEST_INVALID_LEN, len);
1718 
1719     uint32_t dataTest = TEST_DATA_LENGTH;
1720     fileFrame.data = (uint8_t *)&dataTest;
1721     fileFrame.fileData = (uint8_t *)&dataTest;
1722     info.crc = APP_INFO_FILE_FEATURES_NO_SUPPORT;
1723     len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
1724     EXPECT_EQ(TEST_FILE_LENGTH, len);
1725 
1726     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
1727     len = PackReadFileData(&fileFrame, readLength, fileOffset, &info);
1728     EXPECT_EQ(TEST_FILE_LENGTH, len);
1729 
1730     len = PackReadFileRetransData(&fileFrame, seq, readLength, fileOffset, &info);
1731     EXPECT_EQ(SOFTBUS_TRANS_PROXY_CHANNEL_NOT_FOUND, len);
1732 }
1733 
1734 /**
1735  * @tc.name: ClinetTransProxyRetransFileFrameTest002
1736  * @tc.desc: client trans proxy retrans file frame test, use normal parameter.
1737  * @tc.type: FUNC
1738  * @tc.require:
1739  */
1740 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyRetransFileFrameTest002, TestSize.Level0)
1741 {
1742     SendListenerInfo info = {
1743         .fileSize = TEST_FILE_SIZE,
1744         .crc = APP_INFO_FILE_FEATURES_NO_SUPPORT,
1745     };
1746     int32_t seq = 0;
1747 
1748     int ret = RetransFileFrameBySeq(nullptr, TEST_SEQ);
1749     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1750 
1751     ret = RetransFileFrameBySeq(&info, seq);
1752     EXPECT_EQ(SOFTBUS_OK, ret);
1753 
1754     ret = RetransFileFrameBySeq(&info, TEST_SEQ);
1755     EXPECT_EQ(SOFTBUS_OK, ret);
1756 
1757     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
1758     seq = TEST_SEQ_SECOND;
1759 
1760     ret = RetransFileFrameBySeq(&info, TEST_SEQ);
1761     EXPECT_NE(SOFTBUS_MALLOC_ERR, ret);
1762 
1763     ret = RetransFileFrameBySeq(&info, TEST_SEQ);
1764     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1765 
1766     ret = RetransFileFrameBySeq(&info, TEST_SEQ);
1767     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1768 
1769     info.fileSize = 0;
1770     ret = RetransFileFrameBySeq(&info, seq);
1771     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1772 }
1773 
1774 /**
1775  * @tc.name: ClinetTransProxyClearSendInfoTest001
1776  * @tc.desc: client trans proxy clear send info test, use normal parameter.
1777  * @tc.type: FUNC
1778  * @tc.require:
1779  */
1780 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyClearSendInfoTest001, TestSize.Level0)
1781 {
1782     SendListenerInfo info = {
1783         .fileSize = TEST_FILE_SIZE,
1784         .crc = APP_INFO_FILE_FEATURES_NO_SUPPORT,
1785     };
1786 
1787     EXPECT_NO_THROW(ClearSendInfo(&info));
1788 }
1789 
1790 /**
1791  * @tc.name: ClinetTransProxyCalcAllFilesInfoTest001
1792  * @tc.desc: client trans proxy calc all files info test, use normal parameter.
1793  * @tc.type: FUNC
1794  * @tc.require:
1795  */
1796 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyGetFileSizeTest001, TestSize.Level0)
1797 {
1798     const char *fileList[] = {
1799         "test0",
1800         "test1",
1801         "test2",
1802         "test3",
1803         "test4"
1804     };
1805     FilesInfo totalInfo = {
1806         .files = fileList,
1807         .fileCnt = TEST_FILE_CNT,
1808         .bytesProcessed = 0,
1809     };
1810     uint32_t fileCnt = TEST_FILE_CNT;
1811 
1812     int ret = CalcAllFilesInfo(&totalInfo, fileList, fileCnt);
1813     EXPECT_EQ(SOFTBUS_FILE_ERR, ret);
1814 }
1815 
1816 /**
1817  * @tc.name: ClinetTransProxyUpdateFileReceivePathTest001
1818  * @tc.desc: client trans proxy update file receive path test, use normal and error parameter.
1819  * @tc.type: FUNC
1820  * @tc.require:
1821  */
1822 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyUpdateFileReceivePathTest001, TestSize.Level0)
1823 {
1824     int32_t sessionId = TEST_SESSION_ID;
1825     FileListener *fileListener = static_cast<FileListener *>(SoftBusCalloc(sizeof(FileListener)));
1826 
1827     fileListener->socketRecvCallback = NULL;
1828     int ret = UpdateFileReceivePath(sessionId, fileListener);
1829     EXPECT_EQ(SOFTBUS_OK, ret);
1830 
1831     ret = UpdateFileReceivePath(sessionId, fileListener);
1832     EXPECT_EQ(SOFTBUS_OK, ret);
1833     SoftBusFree(fileListener);
1834 
1835     GetRecipientInfo(sessionId);
1836 }
1837 
1838 /**
1839  * @tc.name: ClinetTransProxyCreateFileFromFrameTest001
1840  * @tc.desc: client trans proxy create file from frame test, use normal and error parameter.
1841  * @tc.type: FUNC
1842  * @tc.require:
1843  */
1844 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyCreateFileFromFrameTest001, TestSize.Level0)
1845 {
1846     int32_t sessionId = TEST_SESSION_ID;
1847     int32_t channelId = TEST_CHANNEL_ID;
1848     int32_t osType = TEST_OS_TYPE;
1849     uint8_t data = 0;
1850     uint32_t packetSize = TEST_PACKET_SIZE;
1851     FileFrame fileFrame = {
1852         .frameType = TRANS_SESSION_BYTES,
1853         .data = &data,
1854         .fileData = &data,
1855     };
1856 
1857     int ret = CreateFileFromFrame(sessionId, channelId, &fileFrame, osType, packetSize);
1858     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
1859 
1860     const char *dataFile = "TEST_FILE_DATA";
1861     uint32_t len = TEST_HEADER_LENGTH;
1862     int32_t type = 0;
1863     ProcessFileFrameData(sessionId, channelId, dataFile, len, type);
1864 }
1865 
1866 /**
1867  * @tc.name: ClinetTransProxyChannelSendFileTest001
1868  * @tc.desc: client trans proxy channel send file test, use normal and error parameter.
1869  * @tc.type: FUNC
1870  * @tc.require:
1871  */
1872 HWTEST_F(ClientTransProxyFileManagerTest, ClinetTransProxyChannelSendFileTest001, TestSize.Level0)
1873 {
1874     int32_t channelId = TEST_CHANNEL_ID;
1875     const char *sFileList[] = {
1876         "test0",
1877         "test1",
1878         "test2",
1879         "test3",
1880         "test4"
1881     };
1882     const char *dFileList[] = {
1883         "test0",
1884         "test1",
1885         "test2",
1886         "test3",
1887         "test4"
1888     };
1889     uint32_t fileCnt = TEST_FILE_CNT;
1890 
1891     GenerateRemoteFiles(sFileList, fileCnt);
1892 
1893     int ret = TransProxyChannelSendFile(channelId, nullptr, dFileList, fileCnt);
1894     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1895 
1896     fileCnt = 0;
1897     ret = TransProxyChannelSendFile(channelId, sFileList, dFileList, fileCnt);
1898     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1899 
1900     fileCnt = 12; // 为满足if条件语句大于10,所以赋值12
1901     ret = TransProxyChannelSendFile(channelId, sFileList, dFileList, fileCnt);
1902     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1903 }
1904 
1905 /**
1906  * @tc.name: CheckFrameLengthTest
1907  * @tc.desc: client trans proxy channel send file test, use normal and error parameter.
1908  * @tc.type: FUNC
1909  * @tc.require:
1910  */
1911 HWTEST_F(ClientTransProxyFileManagerTest, CheckFrameLengthTest, TestSize.Level0)
1912 {
1913     int32_t osType = TEST_OS_TYPE;
1914     uint32_t packetSize;
1915     int32_t ret = CheckFrameLength(1, PROXY_BR_MAX_PACKET_SIZE, osType, &packetSize);
1916     EXPECT_EQ(SOFTBUS_NOT_FIND, ret);
1917 
1918     ChannelInfo *channel1 = static_cast<ChannelInfo *>(SoftBusCalloc(sizeof(ChannelInfo)));
1919     ASSERT_TRUE(channel1 != nullptr);
1920     channel1->channelId = 1;
1921     channel1->isEncrypt = 0;
1922     channel1->linkType = LANE_BR;
1923     channel1->sessionKey = const_cast<char *>(g_sessionKey);
1924     ret = ClientTransProxyAddChannelInfo(ClientTransProxyCreateChannelInfo(channel1));
1925     EXPECT_EQ(SOFTBUS_OK, ret);
1926     ret = CheckFrameLength(1, PROXY_BR_MAX_PACKET_SIZE + 1, osType, &packetSize);
1927     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1928     ret = CheckFrameLength(1, PROXY_BR_MAX_PACKET_SIZE - 1, osType, &packetSize);
1929     EXPECT_EQ(SOFTBUS_OK, ret);
1930 
1931     ChannelInfo *channel2 = static_cast<ChannelInfo *>(SoftBusCalloc(sizeof(ChannelInfo)));
1932     ASSERT_TRUE(channel2 != nullptr);
1933     channel2->channelId = 2;
1934     channel2->isEncrypt = 0;
1935     channel2->linkType = LANE_BLE_DIRECT;
1936     channel2->sessionKey = const_cast<char *>(g_sessionKey);
1937     ret = ClientTransProxyAddChannelInfo(ClientTransProxyCreateChannelInfo(channel2));
1938     EXPECT_EQ(SOFTBUS_OK, ret);
1939     ret = CheckFrameLength(2, PROXY_BLE_MAX_PACKET_SIZE + 1, osType, &packetSize);
1940     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
1941     ret = CheckFrameLength(2, PROXY_BLE_MAX_PACKET_SIZE - 1, osType, &packetSize);
1942     EXPECT_EQ(SOFTBUS_OK, ret);
1943 
1944     ret = ClientTransProxyDelChannelInfo(1);
1945     EXPECT_EQ(SOFTBUS_OK, ret);
1946     ret = ClientTransProxyDelChannelInfo(2);
1947     EXPECT_EQ(SOFTBUS_OK, ret);
1948     SoftBusFree(channel1);
1949     SoftBusFree(channel2);
1950 }
1951 } // namespace OHOS