1 /*
2 * Copyright (c) 2022 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 <securec.h>
17
18 #include <gtest/gtest.h>
19 #include "softbus_def.h"
20 #include "softbus_errcode.h"
21 #include "softbus_log.h"
22 #include "softbus_trans_def.h"
23 #include "softbus_json_utils.h"
24 #include "softbus_app_info.h"
25 #include "softbus_server_frame.h"
26 #include "softbus_adapter_mem.h"
27 #include "softbus_config_type.h"
28 #include "client_trans_session_manager.h"
29 #include "client_trans_session_service.h"
30 #include "client_trans_session_service.c"
31 #include "softbus_access_token_test.h"
32 #include "softbus_common.h"
33
34 #define TRANS_TEST_SESSION_ID 10
35 #define TRANS_TEST_CHANNEL_ID 1000
36 #define TRANS_TEST_FILE_ENCRYPT 10
37 #define TRANS_TEST_ALGORITHM 1
38 #define TRANS_TEST_CRC 1
39 #define TRANS_TEST_AUTH_DATA "test auth message data"
40 #define TRANS_TEST_CONN_IP "192.168.8.1"
41 #define TRANS_TEST_BR_MAC "11:22:33:44:55:66"
42 #define TRANS_TEST_AUTH_PORT 60000
43 #define TRANS_TEST_ADDR_INFO_NUM 2
44 #define TRANS_TEST_MAX_LENGTH 1024
45 #define TRANS_TEST_INVALID_SESSION_ID (-1)
46 #define TRANS_TEST_INVALID_VALUE_SIZE 8
47
48 using namespace testing::ext;
49
50 namespace OHOS {
51
52 const char *g_pkgName = "dms";
53 const char *g_sessionName = "ohos.distributedschedule.dms.test";
54 const char *g_sessionKey = "www.huaweitest.com";
55 const char *g_networkId = "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF0";
56 const char *g_deviceId = "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF0";
57 const char *g_groupId = "TEST_GROUP_ID";
58 const char *g_rootDir = "/data";
59 static SessionAttribute g_sessionAttr = {
60 .dataType = TYPE_BYTES,
61 };
62 class TransClientSessionTest : public testing::Test {
63 public:
TransClientSessionTest()64 TransClientSessionTest()
65 {}
~TransClientSessionTest()66 ~TransClientSessionTest()
67 {}
68 static void SetUpTestCase(void);
69 static void TearDownTestCase(void);
SetUp()70 void SetUp() override
71 {}
TearDown()72 void TearDown() override
73 {}
74 };
75
SetUpTestCase(void)76 void TransClientSessionTest::SetUpTestCase(void)
77 {
78 InitSoftBusServer();
79 SetAceessTokenPermission("dsoftbusTransTest");
80 int32_t ret = TransClientInit();
81 ASSERT_EQ(ret, SOFTBUS_OK);
82 }
83
TearDownTestCase(void)84 void TransClientSessionTest::TearDownTestCase(void)
85 {
86 }
87
OnSessionOpened(int sessionId,int result)88 static int OnSessionOpened(int sessionId, int result)
89 {
90 LOG_INFO("session opened,sesison id = %d\r\n", sessionId);
91 return SOFTBUS_OK;
92 }
93
OnSessionClosed(int sessionId)94 static void OnSessionClosed(int sessionId)
95 {
96 LOG_INFO("session closed, session id = %d\r\n", sessionId);
97 }
98
OnBytesReceived(int sessionId,const void * data,unsigned int len)99 static void OnBytesReceived(int sessionId, const void *data, unsigned int len)
100 {
101 LOG_INFO("session bytes received, session id = %d\r\n", sessionId);
102 }
103
OnMessageReceived(int sessionId,const void * data,unsigned int len)104 static void OnMessageReceived(int sessionId, const void *data, unsigned int len)
105 {
106 LOG_INFO("session msg received, session id = %d\r\n", sessionId);
107 }
108
OnStreamReceived(int sessionId,const StreamData * data,const StreamData * ext,const StreamFrameInfo * param)109 static void OnStreamReceived(int sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param)
110 {
111 LOG_INFO("session stream received, session id = %d\r\n", sessionId);
112 }
113
OnQosEvent(int sessionId,int eventId,int tvCount,const QosTv * tvList)114 static void OnQosEvent(int sessionId, int eventId, int tvCount, const QosTv *tvList)
115 {
116 LOG_INFO("session Qos event emit, session id = %d\r\n", sessionId);
117 }
118
OnSessionOpenedErr(int sessionId,int result)119 static int OnSessionOpenedErr(int sessionId, int result)
120 {
121 LOG_INFO("session opened,sesison id = %d\r\n", sessionId);
122 return SOFTBUS_ERR;
123 }
124
OnReceiveFileStarted(int sessionId,const char * files,int fileCnt)125 static int OnReceiveFileStarted(int sessionId, const char *files, int fileCnt)
126 {
127 LOG_INFO("receive file start,sesison id = %d\r\n", sessionId);
128 return SOFTBUS_OK;
129 }
130
OnReceiveFileProcess(int sessionId,const char * firstFile,uint64_t bytesUpload,uint64_t bytesTotal)131 static int OnReceiveFileProcess(int sessionId, const char *firstFile, uint64_t bytesUpload, uint64_t bytesTotal)
132 {
133 LOG_INFO("receive file process,sesison id = %d\r\n", sessionId);
134 return SOFTBUS_OK;
135 }
136
OnReceiveFileFinished(int sessionId,const char * files,int fileCnt)137 static void OnReceiveFileFinished(int sessionId, const char *files, int fileCnt)
138 {
139 LOG_INFO("receive file finished,sesison id = %d\r\n", sessionId);
140 }
141
OnFileTransError(int sessionId)142 void OnFileTransError(int sessionId)
143 {
144 LOG_INFO("file transmission error,sesison id = %d\r\n", sessionId);
145 }
146
OnSendFileProcess(int sessionId,uint64_t bytesUpload,uint64_t bytesTotal)147 int OnSendFileProcess(int sessionId, uint64_t bytesUpload, uint64_t bytesTotal)
148 {
149 LOG_INFO("send file process,sesison id = %d\r\n", sessionId);
150 return SOFTBUS_OK;
151 }
152
OnSendFileFinished(int sessionId,const char * firstFile)153 int OnSendFileFinished(int sessionId, const char *firstFile)
154 {
155 LOG_INFO("send file finished,sesison id = %d\r\n", sessionId);
156 return SOFTBUS_OK;
157 }
158
159 static ISessionListener g_sessionlistener = {
160 .OnSessionOpened = OnSessionOpened,
161 .OnSessionClosed = OnSessionClosed,
162 .OnBytesReceived = OnBytesReceived,
163 .OnMessageReceived = OnMessageReceived,
164 .OnStreamReceived = OnStreamReceived,
165 .OnQosEvent = OnQosEvent,
166 };
167
168 static IFileReceiveListener g_fileRecvListener = {
169 .OnReceiveFileStarted = OnReceiveFileStarted,
170 .OnReceiveFileProcess = OnReceiveFileProcess,
171 .OnReceiveFileFinished = OnReceiveFileFinished,
172 .OnFileTransError = OnFileTransError
173 };
174
175 static IFileSendListener g_fileSendListener = {
176 .OnSendFileProcess = OnSendFileProcess,
177 .OnSendFileFinished = OnSendFileFinished,
178 .OnFileTransError = OnFileTransError
179 };
180
TestGenerateCommParam(SessionParam * sessionParam)181 static void TestGenerateCommParam(SessionParam *sessionParam)
182 {
183 sessionParam->sessionName = g_sessionName;
184 sessionParam->peerSessionName = g_sessionName;
185 sessionParam->peerDeviceId = g_deviceId;
186 sessionParam->groupId = g_groupId;
187 sessionParam->attr = &g_sessionAttr;
188 }
189
TestGenerateSession(const SessionParam * param)190 static SessionInfo *TestGenerateSession(const SessionParam *param)
191 {
192 SessionInfo *session = (SessionInfo*)SoftBusCalloc(sizeof(SessionInfo));
193 if (session == NULL) {
194 return NULL;
195 }
196
197 if (strcpy_s(session->info.peerSessionName, SESSION_NAME_SIZE_MAX, param->peerSessionName) != EOK ||
198 strcpy_s(session->info.peerDeviceId, DEVICE_ID_SIZE_MAX, param->peerDeviceId) != EOK ||
199 strcpy_s(session->info.groupId, GROUP_ID_SIZE_MAX, param->groupId) != EOK) {
200 SoftBusFree(session);
201 return NULL;
202 }
203
204 session->sessionId = TRANS_TEST_SESSION_ID;
205 session->channelId = TRANS_TEST_CHANNEL_ID;
206 session->channelType = CHANNEL_TYPE_BUTT;
207 session->isServer = false;
208 session->isEnable = false;
209 session->routeType = ROUTE_TYPE_ALL;
210 session->info.flag = TYPE_BYTES;
211 session->isEncrypt = true;
212 session->algorithm = TRANS_TEST_ALGORITHM;
213 session->fileEncrypt = TRANS_TEST_FILE_ENCRYPT;
214 session->crc = TRANS_TEST_CRC;
215
216 return session;
217 }
218
AddSessionServerAndSession(const char * sessionName,int32_t channelType,bool isServer)219 static int32_t AddSessionServerAndSession(const char *sessionName, int32_t channelType, bool isServer)
220 {
221 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
222 if (sessionParam == NULL) {
223 return SOFTBUS_ERR;
224 }
225
226 TestGenerateCommParam(sessionParam);
227 sessionParam->sessionName = sessionName;
228 int32_t ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, sessionName, &g_sessionlistener);
229 if (ret != SOFTBUS_OK) {
230 return SOFTBUS_ERR;
231 }
232
233 SessionInfo *session = TestGenerateSession(sessionParam);
234 if (session == NULL) {
235 return SOFTBUS_ERR;
236 }
237
238 session->channelType = (ChannelType)channelType;
239 session->isServer = isServer;
240 ret = ClientAddNewSession(sessionName, session);
241 if (ret != SOFTBUS_OK) {
242 return SOFTBUS_ERR;
243 }
244
245 int32_t sessionId = 0;
246 ret = ClientGetSessionIdByChannelId(TRANS_TEST_CHANNEL_ID, channelType, &sessionId);
247 if (ret != SOFTBUS_OK) {
248 return SOFTBUS_ERR;
249 }
250
251 SoftBusFree(sessionParam);
252 return sessionId;
253 }
254
DeleteSessionServerAndSession(const char * sessionName,int32_t sessionId)255 static void DeleteSessionServerAndSession(const char *sessionName, int32_t sessionId)
256 {
257 int32_t ret = ClientDeleteSession(sessionId);
258 EXPECT_EQ(ret, SOFTBUS_OK);
259 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, sessionName);
260 EXPECT_EQ(ret, SOFTBUS_OK);
261 }
262
263 /**
264 * @tc.name: TransClientSessionTest01
265 * @tc.desc: Transmission sdk session service open session with existed session callback success.
266 * @tc.type: FUNC
267 * @tc.require:
268 */
269 HWTEST_F(TransClientSessionTest, TransClientSessionTest01, TestSize.Level1)
270 {
271 bool isEnabled = false;
272 int32_t ret = OpenSessionWithExistSession(TRANS_TEST_SESSION_ID, isEnabled);
273 EXPECT_EQ(ret, TRANS_TEST_SESSION_ID);
274 isEnabled = true;
275 ret = OpenSessionWithExistSession(TRANS_TEST_SESSION_ID, isEnabled);
276 EXPECT_EQ(ret, TRANS_TEST_SESSION_ID);
277 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
278 ASSERT_EQ(ret, SOFTBUS_OK);
279 SessionParam *sessionParam = (SessionParam*)SoftBusMalloc(sizeof(SessionParam));
280 ASSERT_TRUE(sessionParam != NULL);
281 memset_s(sessionParam, sizeof(SessionParam), 0, sizeof(SessionParam));
282 TestGenerateCommParam(sessionParam);
283 SessionInfo *session = TestGenerateSession(sessionParam);
284 ASSERT_TRUE(session != NULL);
285 session->channelType = CHANNEL_TYPE_AUTH;
286 ret = ClientAddNewSession(g_sessionName, session);
287 ASSERT_EQ(ret, SOFTBUS_OK);
288 ret = OpenSessionWithExistSession(session->sessionId, isEnabled);
289 EXPECT_EQ(ret, session->sessionId);
290 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
291 EXPECT_EQ(ret, SOFTBUS_OK);
292 SoftBusFree(sessionParam);
293 }
294
295 /**
296 * @tc.name: TransClientSessionTest02
297 * @tc.desc: Transmission sdk session service open session with existed session callback error.
298 * @tc.type: FUNC
299 * @tc.require:
300 */
301 HWTEST_F(TransClientSessionTest, TransClientSessionTest02, TestSize.Level1)
302 {
303 bool isEnabled = false;
304 ISessionListener sessionlistener = {
305 .OnSessionOpened = OnSessionOpenedErr,
306 .OnSessionClosed = OnSessionClosed,
307 .OnBytesReceived = OnBytesReceived,
308 .OnMessageReceived = OnMessageReceived,
309 .OnStreamReceived = OnStreamReceived,
310 .OnQosEvent = OnQosEvent,
311 };
312 int32_t ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &sessionlistener);
313 ASSERT_EQ(ret, SOFTBUS_OK);
314 SessionParam *sessionParam = (SessionParam*)SoftBusMalloc(sizeof(SessionParam));
315 ASSERT_TRUE(sessionParam != NULL);
316 memset_s(sessionParam, sizeof(SessionParam), 0, sizeof(SessionParam));
317 TestGenerateCommParam(sessionParam);
318 SessionInfo *session = TestGenerateSession(sessionParam);
319 ASSERT_TRUE(session != NULL);
320 session->channelType = CHANNEL_TYPE_AUTH;
321 ret = ClientAddNewSession(g_sessionName, session);
322 ASSERT_EQ(ret, SOFTBUS_OK);
323 isEnabled = true;
324 ret = OpenSessionWithExistSession(session->sessionId, isEnabled);
325 EXPECT_EQ(ret, INVALID_SESSION_ID);
326 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
327 EXPECT_EQ(ret, SOFTBUS_OK);
328 SoftBusFree(sessionParam);
329 }
330
331 /**
332 * @tc.name: TransClientSessionTest03
333 * @tc.desc: Transmission sdk session service creat session server with different parameters.
334 * @tc.type: FUNC
335 * @tc.require:
336 */
337 HWTEST_F(TransClientSessionTest, TransClientSessionTest03, TestSize.Level1)
338 {
339 const char *pkgName = "package.test";
340 int ret = CreateSessionServer(pkgName, g_sessionName, &g_sessionlistener);
341 EXPECT_EQ(ret, SOFTBUS_PERMISSION_DENIED);
342 ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
343 EXPECT_EQ(ret, SOFTBUS_OK);
344 ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
345 EXPECT_EQ(ret, SOFTBUS_OK);
346 ret = RemoveSessionServer(g_pkgName, g_sessionName);
347 EXPECT_EQ(ret, SOFTBUS_OK);
348 }
349
350 /**
351 * @tc.name: TransClientSessionTest04
352 * @tc.desc: Transmission sdk session service remove session server with different parameters.
353 * @tc.type: FUNC
354 * @tc.require:
355 */
356 HWTEST_F(TransClientSessionTest, TransClientSessionTest04, TestSize.Level1)
357 {
358 int ret = RemoveSessionServer(g_pkgName, g_sessionName);
359 EXPECT_EQ(ret, SOFTBUS_OK);
360 ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
361 EXPECT_EQ(ret, SOFTBUS_OK);
362 ret = RemoveSessionServer(g_pkgName, g_sessionName);
363 EXPECT_EQ(ret, SOFTBUS_OK);
364 }
365
366 /**
367 * @tc.name: TransClientSessionTest05
368 * @tc.desc: Transmission sdk session service open session.
369 * @tc.type: FUNC
370 * @tc.require:
371 */
372 HWTEST_F(TransClientSessionTest, TransClientSessionTest05, TestSize.Level1)
373 {
374 int32_t sessionId = 0;
375 bool isEnabled = false;
376 int ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
377 ASSERT_EQ(ret, SOFTBUS_OK);
378 ret = OpenSession(g_sessionName, g_sessionName, g_networkId, g_groupId, &g_sessionAttr);
379 EXPECT_EQ(ret, SOFTBUS_ERR);
380 SessionParam *sessionParam = (SessionParam*)SoftBusMalloc(sizeof(SessionParam));
381 ASSERT_TRUE(sessionParam != NULL);
382 memset_s(sessionParam, sizeof(SessionParam), 0, sizeof(SessionParam));
383 TestGenerateCommParam(sessionParam);
384 ret = ClientAddSession(sessionParam, &sessionId, &isEnabled);
385 ASSERT_EQ(ret, SOFTBUS_OK);
386 ret = OpenSession(g_sessionName, g_sessionName, g_networkId, g_groupId, &g_sessionAttr);
387 EXPECT_EQ(ret, sessionId);
388 ret = ClientDeleteSession(sessionId);
389 EXPECT_EQ(ret, SOFTBUS_OK);
390 ret = RemoveSessionServer(g_pkgName, g_sessionName);
391 EXPECT_EQ(ret, SOFTBUS_OK);
392 }
393
394 /**
395 * @tc.name: TransClientSessionTest06
396 * @tc.desc: Transmission sdk session service convert address string with different parameters.
397 * @tc.type: FUNC
398 * @tc.require:
399 */
400 HWTEST_F(TransClientSessionTest, TransClientSessionTest06, TestSize.Level1)
401 {
402 ConnectionAddr *addrInfo = (ConnectionAddr*)SoftBusMalloc(sizeof(ConnectionAddr));
403 ASSERT_TRUE(addrInfo != NULL);
404 int32_t ret = ConvertAddrStr(TRANS_TEST_AUTH_DATA, addrInfo);
405 EXPECT_EQ(ret, SOFTBUS_PARSE_JSON_ERR);
406 cJSON *msg = cJSON_CreateObject();
407 bool res = AddStringToJsonObject(msg, "ETH_IP", TRANS_TEST_CONN_IP);
408 ASSERT_TRUE(res);
409 res = AddNumberToJsonObject(msg, "ETH_PORT", TRANS_TEST_AUTH_PORT);
410 ASSERT_TRUE(res);
411 char *data = cJSON_PrintUnformatted(msg);
412 ret = ConvertAddrStr(data, addrInfo);
413 EXPECT_EQ(ret, SOFTBUS_OK);
414 cJSON_free(data);
415 cJSON_Delete(msg);
416 msg = cJSON_CreateObject();
417 res = AddStringToJsonObject(msg, "WIFI_IP", TRANS_TEST_CONN_IP);
418 ASSERT_TRUE(res);
419 res = AddNumberToJsonObject(msg, "WIFI_PORT", TRANS_TEST_AUTH_PORT);
420 ASSERT_TRUE(res);
421 data = cJSON_PrintUnformatted(msg);
422 ret = ConvertAddrStr(data, addrInfo);
423 EXPECT_EQ(ret, SOFTBUS_OK);
424 cJSON_free(data);
425 cJSON_Delete(msg);
426 msg = cJSON_CreateObject();
427 res = AddStringToJsonObject(msg, "BR_MAC", TRANS_TEST_BR_MAC);
428 ASSERT_TRUE(res);
429 data = cJSON_PrintUnformatted(msg);
430 ret = ConvertAddrStr(data, addrInfo);
431 EXPECT_EQ(ret, SOFTBUS_OK);
432 cJSON_free(data);
433 cJSON_Delete(msg);
434 msg = cJSON_CreateObject();
435 res = AddStringToJsonObject(msg, "BLE_MAC", TRANS_TEST_BR_MAC);
436 ASSERT_TRUE(res);
437 data = cJSON_PrintUnformatted(msg);
438 ret = ConvertAddrStr(data, addrInfo);
439 EXPECT_EQ(ret, SOFTBUS_OK);
440 cJSON_free(data);
441 cJSON_Delete(msg);
442 SoftBusFree(addrInfo);
443 }
444
445 /**
446 * @tc.name: TransClientSessionTest07
447 * @tc.desc: Transmission sdk session service is valid addrInfo.
448 * @tc.type: FUNC
449 * @tc.require:
450 */
451 HWTEST_F(TransClientSessionTest, TransClientSessionTest07, TestSize.Level1)
452 {
453 ConnectionAddr addrInfoArr[TRANS_TEST_ADDR_INFO_NUM] = {
454 {.type = CONNECTION_ADDR_MAX},
455 {.type = CONNECTION_ADDR_MAX}
456 };
457 int ret = IsValidAddrInfoArr(addrInfoArr, TRANS_TEST_ADDR_INFO_NUM);
458 EXPECT_EQ(ret, SOFTBUS_ERR);
459 }
460
461 /**
462 * @tc.name: TransClientSessionTest08
463 * @tc.desc: Transmission sdk session service open auth session with different.
464 * @tc.type: FUNC
465 * @tc.require:
466 */
467 HWTEST_F(TransClientSessionTest, TransClientSessionTest08, TestSize.Level1)
468 {
469 ConnectionAddr addrInfoArr[TRANS_TEST_ADDR_INFO_NUM] = {
470 {.type = CONNECTION_ADDR_MAX},
471 {.type = CONNECTION_ADDR_MAX}
472 };
473 cJSON *msg = cJSON_CreateObject();
474 bool res = AddStringToJsonObject(msg, "BLE_MAC", TRANS_TEST_BR_MAC);
475 ASSERT_TRUE(res);
476 char *data = cJSON_PrintUnformatted(msg);
477 int ret = OpenAuthSession(g_sessionName, addrInfoArr, TRANS_TEST_ADDR_INFO_NUM, data);
478 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSIONSERVER_NOT_CREATED);
479 ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
480 ASSERT_EQ(ret, SOFTBUS_OK);
481 ret = OpenAuthSession(g_sessionName, addrInfoArr, TRANS_TEST_ADDR_INFO_NUM, data);
482 EXPECT_EQ(ret, INVALID_SESSION_ID);
483 ret = ClientDeleteSession(ret);
484 EXPECT_EQ(ret, SOFTBUS_ERR);
485 cJSON_free(data);
486 cJSON_Delete(msg);
487 msg = cJSON_CreateObject();
488 res = AddStringToJsonObject(msg, "WIFI_IP", TRANS_TEST_CONN_IP);
489 ASSERT_TRUE(res);
490 res = AddNumberToJsonObject(msg, "WIFI_PORT", TRANS_TEST_AUTH_PORT);
491 ASSERT_TRUE(res);
492 data = cJSON_PrintUnformatted(msg);
493 ret = OpenAuthSession(g_sessionName, addrInfoArr, TRANS_TEST_ADDR_INFO_NUM, data);
494 EXPECT_EQ(ret, INVALID_SESSION_ID);
495 ret = ClientDeleteSession(ret);
496 EXPECT_EQ(ret, SOFTBUS_ERR);
497 ret = RemoveSessionServer(g_pkgName, g_sessionName);
498 EXPECT_EQ(ret, SOFTBUS_OK);
499 cJSON_free(data);
500 cJSON_Delete(msg);
501 }
502
503 /**
504 * @tc.name: TransClientSessionTest09
505 * @tc.desc: Transmission sdk session service notify auth success with different parameters.
506 * @tc.type: FUNC
507 * @tc.require:
508 */
509 HWTEST_F(TransClientSessionTest, TransClientSessionTest09, TestSize.Level1)
510 {
511 int32_t sessionId = 0;
512 bool isEnabled = false;
513 int ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
514 ASSERT_EQ(ret, SOFTBUS_OK);
515 SessionParam *sessionParam = (SessionParam*)SoftBusMalloc(sizeof(SessionParam));
516 ASSERT_TRUE(sessionParam != NULL);
517 memset_s(sessionParam, sizeof(SessionParam), 0, sizeof(SessionParam));
518 TestGenerateCommParam(sessionParam);
519 ret = ClientAddSession(sessionParam, &sessionId, &isEnabled);
520 ASSERT_EQ(ret, SOFTBUS_OK);
521 NotifyAuthSuccess(sessionId);
522 ret = ClientDeleteSession(sessionId);
523 ASSERT_EQ(ret, SOFTBUS_OK);
524 SessionInfo *session = TestGenerateSession(sessionParam);
525 ASSERT_TRUE(session != NULL);
526 session->isServer = true;
527 ret = ClientAddNewSession(g_sessionName, session);
528 ASSERT_EQ(ret, SOFTBUS_OK);
529 ret = ClientGetSessionIdByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &sessionId);
530 EXPECT_EQ(ret, SOFTBUS_OK);
531 NotifyAuthSuccess(sessionId);
532 ret = ClientDeleteSession(sessionId);
533 EXPECT_EQ(ret, SOFTBUS_OK);
534 ret = RemoveSessionServer(g_pkgName, g_sessionName);
535 EXPECT_EQ(ret, SOFTBUS_OK);
536 SoftBusFree(sessionParam);
537 }
538
539 /**
540 * @tc.name: TransClientSessionTest10
541 * @tc.desc: Transmission sdk session service check wether session is opened with different parameters.
542 * @tc.type: FUNC
543 * @tc.require:
544 */
545 HWTEST_F(TransClientSessionTest, TransClientSessionTest10, TestSize.Level1)
546 {
547 int32_t sessionId = 0;
548 int ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
549 ASSERT_EQ(ret, SOFTBUS_OK);
550 SessionParam *sessionParam = (SessionParam*)SoftBusMalloc(sizeof(SessionParam));
551 ASSERT_TRUE(sessionParam != NULL);
552 memset_s(sessionParam, sizeof(SessionParam), 0, sizeof(SessionParam));
553 TestGenerateCommParam(sessionParam);
554 SessionInfo *session = TestGenerateSession(sessionParam);
555 ASSERT_TRUE(session != NULL);
556 session->isEnable = true;
557 ret = CheckSessionIsOpened(TRANS_TEST_CHANNEL_ID);
558 EXPECT_EQ(ret, SOFTBUS_NOT_FIND);
559 ret = ClientAddNewSession(g_sessionName, session);
560 ASSERT_EQ(ret, SOFTBUS_OK);
561 ret = ClientGetSessionIdByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &sessionId);
562 EXPECT_EQ(ret, SOFTBUS_OK);
563 ret = CheckSessionIsOpened(sessionId);
564 EXPECT_EQ(ret, SOFTBUS_OK);
565 ret = ClientDeleteSession(sessionId);
566 EXPECT_EQ(ret, SOFTBUS_OK);
567 ret = RemoveSessionServer(g_pkgName, g_sessionName);
568 EXPECT_EQ(ret, SOFTBUS_OK);
569 SoftBusFree(sessionParam);
570 }
571
572 /**
573 * @tc.name: TransClientSessionTest11
574 * @tc.desc: Transmission sdk session service close session with different parameters.
575 * @tc.type: FUNC
576 * @tc.require:
577 */
578 HWTEST_F(TransClientSessionTest, TransClientSessionTest11, TestSize.Level1)
579 {
580 int32_t sessionId = 0;
581 int ret = CreateSessionServer(g_pkgName, g_sessionName, &g_sessionlistener);
582 ASSERT_EQ(ret, SOFTBUS_OK);
583 CloseSession(TRANS_TEST_INVALID_SESSION_ID);
584 SessionParam *sessionParam = (SessionParam*)SoftBusMalloc(sizeof(SessionParam));
585 ASSERT_TRUE(sessionParam != NULL);
586 memset_s(sessionParam, sizeof(SessionParam), 0, sizeof(SessionParam));
587 TestGenerateCommParam(sessionParam);
588 SessionInfo *session = TestGenerateSession(sessionParam);
589 ASSERT_TRUE(session != NULL);
590 session->channelType = CHANNEL_TYPE_UDP;
591 CloseSession(TRANS_TEST_SESSION_ID);
592 ret = ClientAddNewSession(g_sessionName, session);
593 ASSERT_EQ(ret, SOFTBUS_OK);
594 ret = ClientGetSessionIdByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_UDP, &sessionId);
595 EXPECT_EQ(ret, SOFTBUS_OK);
596 CloseSession(sessionId);
597 ret = ClientDeleteSession(sessionId);
598 EXPECT_EQ(ret, SOFTBUS_ERR);
599 session = TestGenerateSession(sessionParam);
600 ASSERT_TRUE(session != NULL);
601 session->channelType = CHANNEL_TYPE_AUTH;
602 ret = ClientAddNewSession(g_sessionName, session);
603 ASSERT_EQ(ret, SOFTBUS_OK);
604 ret = ClientGetSessionIdByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_AUTH, &sessionId);
605 EXPECT_EQ(ret, SOFTBUS_OK);
606 CloseSession(sessionId);
607 ret = ClientDeleteSession(sessionId);
608 EXPECT_EQ(ret, SOFTBUS_ERR);
609 ret = RemoveSessionServer(g_pkgName, g_sessionName);
610 EXPECT_EQ(ret, SOFTBUS_OK);
611 SoftBusFree(sessionParam);
612 }
613
614 /**
615 * @tc.name: TransClientSessionTest12
616 * @tc.desc: Transmission sdk session service get my session name with invalid parameters.
617 * @tc.type: FUNC
618 * @tc.require:
619 */
620 HWTEST_F(TransClientSessionTest, TransClientSessionTest12, TestSize.Level1)
621 {
622 char sessionName[SESSION_NAME_SIZE_MAX] = {0};
623 int ret = GetMySessionName(TRANS_TEST_INVALID_SESSION_ID, sessionName, SESSION_NAME_SIZE_MAX);
624 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
625 ret = GetMySessionName(TRANS_TEST_SESSION_ID, NULL, SESSION_NAME_SIZE_MAX);
626 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
627 ret = GetMySessionName(TRANS_TEST_SESSION_ID, sessionName, SESSION_NAME_SIZE_MAX + 1);
628 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
629 }
630
631 /**
632 * @tc.name: TransClientSessionTest13
633 * @tc.desc: Transmission sdk session service get peer session name with different parameters.
634 * @tc.type: FUNC
635 * @tc.require:
636 */
637 HWTEST_F(TransClientSessionTest, TransClientSessionTest13, TestSize.Level1)
638 {
639 char sessionName[SESSION_NAME_SIZE_MAX] = {0};
640 int ret = GetPeerSessionName(TRANS_TEST_INVALID_SESSION_ID, sessionName, SESSION_NAME_SIZE_MAX);
641 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
642 ret = GetPeerSessionName(TRANS_TEST_SESSION_ID, NULL, SESSION_NAME_SIZE_MAX);
643 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
644 ret = GetPeerSessionName(TRANS_TEST_SESSION_ID, sessionName, SESSION_NAME_SIZE_MAX + 1);
645 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
646 ret = GetPeerSessionName(TRANS_TEST_SESSION_ID, sessionName, SESSION_NAME_SIZE_MAX);
647 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
648 int32_t sessionId = AddSessionServerAndSession(g_sessionName, CHANNEL_TYPE_BUTT, false);
649 ASSERT_GT(sessionId, 0);
650 ret = GetPeerSessionName(sessionId, sessionName, SESSION_NAME_SIZE_MAX);
651 EXPECT_EQ(ret, SOFTBUS_OK);
652 ret = strcmp(g_sessionName, sessionName);
653 EXPECT_EQ(ret, EOK);
654 DeleteSessionServerAndSession(g_sessionName, sessionId);
655 }
656
657 /**
658 * @tc.name: TransClientSessionTest14
659 * @tc.desc: Transmission sdk session service get peer device Id with different parameters.
660 * @tc.type: FUNC
661 * @tc.require:
662 */
663 HWTEST_F(TransClientSessionTest, TransClientSessionTest14, TestSize.Level1)
664 {
665 char networkId[DEVICE_ID_SIZE_MAX] = {0};
666 int ret = GetPeerDeviceId(TRANS_TEST_INVALID_SESSION_ID, networkId, DEVICE_ID_SIZE_MAX);
667 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
668 ret = GetPeerDeviceId(TRANS_TEST_SESSION_ID, NULL, DEVICE_ID_SIZE_MAX);
669 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
670 ret = GetPeerDeviceId(TRANS_TEST_SESSION_ID, networkId, SESSION_NAME_SIZE_MAX + 1);
671 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
672 ret = GetPeerDeviceId(TRANS_TEST_SESSION_ID, networkId, DEVICE_ID_SIZE_MAX);
673 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
674 int32_t sessionId = AddSessionServerAndSession(g_sessionName, CHANNEL_TYPE_BUTT, false);
675 ASSERT_GT(sessionId, 0);
676 ret = GetPeerDeviceId(sessionId, networkId, DEVICE_ID_SIZE_MAX);
677 EXPECT_EQ(ret, SOFTBUS_OK);
678 ret = strcmp(g_deviceId, networkId);
679 EXPECT_EQ(ret, EOK);
680 DeleteSessionServerAndSession(g_sessionName, sessionId);
681 }
682
683 /**
684 * @tc.name: TransClientSessionTest15
685 * @tc.desc: Transmission sdk session service judge session server or client.
686 * @tc.type: FUNC
687 * @tc.require:
688 */
689 HWTEST_F(TransClientSessionTest, TransClientSessionTest15, TestSize.Level1)
690 {
691 int32_t ret = ClientGetSessionSide(TRANS_TEST_SESSION_ID);
692 EXPECT_EQ(ret, SOFTBUS_ERR);
693 int32_t sessionId = AddSessionServerAndSession(g_sessionName, CHANNEL_TYPE_BUTT, false);
694 ASSERT_GT(sessionId, 0);
695 ret = ClientGetSessionSide(sessionId);
696 EXPECT_EQ(ret, IS_CLIENT);
697 DeleteSessionServerAndSession(g_sessionName, sessionId);
698 sessionId = AddSessionServerAndSession(g_sessionName, CHANNEL_TYPE_BUTT, true);
699 ASSERT_GT(sessionId, 0);
700 ret = ClientGetSessionSide(sessionId);
701 EXPECT_EQ(ret, IS_SERVER);
702 DeleteSessionServerAndSession(g_sessionName, sessionId);
703 }
704
705 /**
706 * @tc.name: TransClientSessionTest16
707 * @tc.desc: Transmission sdk session service set file recieve listener with different parameters.
708 * @tc.type: FUNC
709 * @tc.require:
710 */
711 HWTEST_F(TransClientSessionTest, TransClientSessionTest16, TestSize.Level1)
712 {
713 char sessionName[SESSION_NAME_SIZE_MAX + 2] = {0};
714 memset_s(sessionName, SESSION_NAME_SIZE_MAX + 2, 'A', SESSION_NAME_SIZE_MAX + 1);
715 char pkgName[PKG_NAME_SIZE_MAX + 2] = {0};
716 memset_s(pkgName, PKG_NAME_SIZE_MAX + 2, 'B', PKG_NAME_SIZE_MAX + 1);
717 char rootDir[FILE_RECV_ROOT_DIR_SIZE_MAX + 2] = {0};
718 memset_s(rootDir, FILE_RECV_ROOT_DIR_SIZE_MAX + 2, 'C', FILE_RECV_ROOT_DIR_SIZE_MAX + 1);
719 int ret = SetFileReceiveListener(pkgName, g_sessionName, &g_fileRecvListener, g_rootDir);
720 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
721 ret = SetFileReceiveListener(g_pkgName, sessionName, &g_fileRecvListener, g_rootDir);
722 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
723 ret = SetFileReceiveListener(g_pkgName, g_sessionName, NULL, g_rootDir);
724 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
725 ret = SetFileReceiveListener(g_pkgName, g_sessionName, &g_fileRecvListener, NULL);
726 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
727 ret = SetFileReceiveListener(g_pkgName, g_sessionName, &g_fileRecvListener, g_rootDir);
728 EXPECT_EQ(ret, SOFTBUS_OK);
729 }
730
731 /**
732 * @tc.name: TransClientSessionTest17
733 * @tc.desc: Transmission sdk session service set file send listener with different parameters.
734 * @tc.type: FUNC
735 * @tc.require:
736 */
737 HWTEST_F(TransClientSessionTest, TransClientSessionTest17, TestSize.Level1)
738 {
739 char sessionName[SESSION_NAME_SIZE_MAX + 2] = {0};
740 memset_s(sessionName, SESSION_NAME_SIZE_MAX + 2, 'A', SESSION_NAME_SIZE_MAX + 1);
741 char pkgName[PKG_NAME_SIZE_MAX + 2] = {0};
742 memset_s(pkgName, PKG_NAME_SIZE_MAX + 2, 'B', PKG_NAME_SIZE_MAX + 1);
743 char rootDir[FILE_RECV_ROOT_DIR_SIZE_MAX + 2] = {0};
744 memset_s(rootDir, FILE_RECV_ROOT_DIR_SIZE_MAX + 2, 'C', FILE_RECV_ROOT_DIR_SIZE_MAX + 1);
745 int ret = SetFileSendListener(pkgName, g_sessionName, &g_fileSendListener);
746 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
747 ret = SetFileSendListener(g_pkgName, sessionName, &g_fileSendListener);
748 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
749 ret = SetFileSendListener(g_pkgName, g_sessionName, NULL);
750 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
751 ret = SetFileSendListener(g_pkgName, g_sessionName, &g_fileSendListener);
752 EXPECT_EQ(ret, SOFTBUS_OK);
753 }
754
755 /**
756 * @tc.name: TransClientSessionTest18
757 * @tc.desc: Transmission sdk session service judge whether session is DFS with different parameters.
758 * @tc.type: FUNC
759 * @tc.require:
760 */
761 HWTEST_F(TransClientSessionTest, TransClientSessionTest18, TestSize.Level1)
762 {
763 int32_t sessionId = AddSessionServerAndSession(g_sessionName, CHANNEL_TYPE_BUTT, false);
764 ASSERT_GT(sessionId, 0);
765 int32_t channelId = 0;
766 int32_t ret = IsValidDFSSession(sessionId, &channelId);
767 EXPECT_EQ(ret, SOFTBUS_TRANS_FUNC_NOT_SUPPORT);
768 DeleteSessionServerAndSession(g_sessionName, sessionId);
769 const char *dfsSessionName = "DistributedFileService";
770 sessionId = AddSessionServerAndSession(dfsSessionName, CHANNEL_TYPE_BUTT, false);
771 ASSERT_GT(sessionId, 0);
772 ret = IsValidDFSSession(sessionId, &channelId);
773 EXPECT_EQ(ret, SOFTBUS_TRANS_FUNC_NOT_SUPPORT);
774 EXPECT_EQ(channelId, TRANS_TEST_CHANNEL_ID);
775 DeleteSessionServerAndSession(dfsSessionName, sessionId);
776 sessionId = AddSessionServerAndSession(dfsSessionName, CHANNEL_TYPE_TCP_DIRECT, false);
777 ASSERT_GT(sessionId, 0);
778 ret = IsValidDFSSession(sessionId, &channelId);
779 EXPECT_EQ(ret, SOFTBUS_OK);
780 EXPECT_EQ(channelId, TRANS_TEST_CHANNEL_ID);
781 DeleteSessionServerAndSession(dfsSessionName, sessionId);
782 }
783
784 /**
785 * @tc.name: TransClientSessionTest19
786 * @tc.desc: Transmission sdk session service get session key with different parameters.
787 * @tc.type: FUNC
788 * @tc.require:
789 */
790 HWTEST_F(TransClientSessionTest, TransClientSessionTest19, TestSize.Level1)
791 {
792 const char *dfsSessionName = "DistributedFileService";
793 int32_t sessionId = AddSessionServerAndSession(dfsSessionName, CHANNEL_TYPE_TCP_DIRECT, false);
794 ASSERT_GT(sessionId, 0);
795 char sessionKey[SESSION_KEY_LEN] = {0};
796 int32_t ret = GetSessionKey(sessionId, sessionKey, SESSION_KEY_LEN);
797 EXPECT_EQ(ret, SOFTBUS_ERR);
798 DeleteSessionServerAndSession(dfsSessionName, sessionId);
799 }
800
801 /**
802 * @tc.name: TransClientSessionTest20
803 * @tc.desc: Transmission sdk session service get session handle.
804 * @tc.type: FUNC
805 * @tc.require:
806 */
807 HWTEST_F(TransClientSessionTest, TransClientSessionTest20, TestSize.Level1)
808 {
809 const char *dfsSessionName = "DistributedFileService";
810 int32_t sessionId = AddSessionServerAndSession(dfsSessionName, CHANNEL_TYPE_TCP_DIRECT, false);
811 ASSERT_GT(sessionId, 0);
812 int handle = 0;
813 int32_t ret = GetSessionHandle(sessionId, &handle);
814 EXPECT_EQ(ret, SOFTBUS_ERR);
815 DeleteSessionServerAndSession(dfsSessionName, sessionId);
816 }
817
818 /**
819 * @tc.name: TransClientSessionTest21
820 * @tc.desc: Transmission sdk session service disable session listener.
821 * @tc.type: FUNC
822 * @tc.require:
823 */
824 HWTEST_F(TransClientSessionTest, TransClientSessionTest21, TestSize.Level1)
825 {
826 const char *dfsSessionName = "DistributedFileService";
827 int32_t sessionId = AddSessionServerAndSession(dfsSessionName, CHANNEL_TYPE_TCP_DIRECT, false);
828 ASSERT_GT(sessionId, 0);
829 int32_t ret = DisableSessionListener(sessionId);
830 EXPECT_EQ(ret, SOFTBUS_ERR);
831 DeleteSessionServerAndSession(dfsSessionName, sessionId);
832 }
833
834 /**
835 * @tc.name: TransClientSessionTest22
836 * @tc.desc: Transmission sdk session service read max send bytes size with different parameters.
837 * @tc.type: FUNC
838 * @tc.require:
839 */
840 HWTEST_F(TransClientSessionTest, TransClientSessionTest22, TestSize.Level1)
841 {
842 uint32_t value = 0;
843 int ret = ReadMaxSendBytesSize(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_TCP_DIRECT,
844 &value, TRANS_TEST_INVALID_VALUE_SIZE);
845 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
846 ret = ReadMaxSendBytesSize(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &value, sizeof(value));
847 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
848 ret = ReadMaxSendBytesSize(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_TCP_DIRECT, &value, sizeof(value));
849 EXPECT_EQ(ret, SOFTBUS_OK);
850 }
851
852 /**
853 * @tc.name: TransClientSessionTest23
854 * @tc.desc: Transmission sdk session service read max send message size with different parameters.
855 * @tc.type: FUNC
856 * @tc.require:
857 */
858 HWTEST_F(TransClientSessionTest, TransClientSessionTest23, TestSize.Level1)
859 {
860 uint32_t value = 0;
861 int ret = ReadMaxSendMessageSize(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_TCP_DIRECT,
862 &value, TRANS_TEST_INVALID_VALUE_SIZE);
863 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
864 ret = ReadMaxSendMessageSize(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &value, sizeof(value));
865 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
866 ret = ReadMaxSendMessageSize(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_TCP_DIRECT, &value, sizeof(value));
867 EXPECT_EQ(ret, SOFTBUS_OK);
868 }
869
870 /**
871 * @tc.name: TransClientSessionTest24
872 * @tc.desc: Transmission sdk session service get session option with different parameters.
873 * @tc.type: FUNC
874 * @tc.require:
875 */
876 HWTEST_F(TransClientSessionTest, TransClientSessionTest24, TestSize.Level1)
877 {
878 uint32_t optionValue = 0;
879 int ret = GetSessionOption(TRANS_TEST_SESSION_ID, SESSION_OPTION_BUTT,
880 &optionValue, sizeof(optionValue));
881 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
882 ret = GetSessionOption(TRANS_TEST_SESSION_ID, SESSION_OPTION_MAX_SENDBYTES_SIZE,
883 NULL, sizeof(optionValue));
884 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
885 ret = GetSessionOption(TRANS_TEST_SESSION_ID, SESSION_OPTION_MAX_SENDBYTES_SIZE,
886 &optionValue, 0);
887 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
888 ret = GetSessionOption(TRANS_TEST_SESSION_ID, SESSION_OPTION_MAX_SENDBYTES_SIZE,
889 &optionValue, sizeof(optionValue));
890 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
891 int32_t sessionId = AddSessionServerAndSession(g_sessionName, CHANNEL_TYPE_TCP_DIRECT, false);
892 ASSERT_GT(sessionId, 0);
893 ret = GetSessionOption(sessionId, SESSION_OPTION_MAX_SENDBYTES_SIZE,
894 &optionValue, sizeof(optionValue));
895 EXPECT_EQ(ret, SOFTBUS_OK);
896 DeleteSessionServerAndSession(g_sessionName, sessionId);
897 }
898 }