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 <gtest/gtest.h>
17 
18 #include "auth_interface.h"
19 #include "bus_center_manager.h"
20 #include "softbus_adapter_mem.h"
21 #include "softbus_conn_interface.h"
22 #include "softbus_feature_config.h"
23 #include "trans_session_manager.h"
24 #include "trans_session_service.h"
25 
26 using namespace testing::ext;
27 
28 #define TRANS_TEST_INVALID_PID (-1)
29 #define TRANS_TEST_INVALID_UID (-1)
30 #define INVALID_SESSION_ID (-1)
31 
32 namespace OHOS {
33 
34 const char *g_pkgName = "dms";
35 const char *g_sessionName = "ohos.distributedschedule.dms.test";
36 const char *g_networkId = "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00";
37 const char *g_deviceId = "ABCDEF00ABCDEF00ABCDEF00";
38 const char *g_groupid = "TEST_GROUP_ID";
39 static SessionAttribute g_sessionAttr = {
40     .dataType = TYPE_BYTES,
41 };
42 
43 class TransSessionServiceTest : public testing::Test {
44 public:
TransSessionServiceTest()45     TransSessionServiceTest()
46     {}
~TransSessionServiceTest()47     ~TransSessionServiceTest()
48     {}
49     static void SetUpTestCase(void);
50     static void TearDownTestCase(void);
SetUp()51     void SetUp() override
52     {}
TearDown()53     void TearDown() override
54     {}
55 };
56 
SetUpTestCase(void)57 void TransSessionServiceTest::SetUpTestCase(void)
58 {
59     SoftbusConfigInit();
60     ConnServerInit();
61     AuthInit();
62     BusCenterServerInit();
63     TransServerInit();
64 }
65 
TearDownTestCase(void)66 void TransSessionServiceTest::TearDownTestCase(void)
67 {
68     ConnServerDeinit();
69     AuthDeinit();
70     BusCenterServerDeinit();
71     TransServerDeinit();
72 }
73 
74 /**
75  * @tc.name: TransSessionServiceTest01
76  * @tc.desc: Transmission session service create session with invalid parameters.
77  * @tc.type: FUNC
78  * @tc.require:
79  */
80 HWTEST_F(TransSessionServiceTest, TransSessionServiceTest01, TestSize.Level1)
81 {
82     int32_t ret = TransCreateSessionServer(NULL, g_sessionName, TRANS_TEST_INVALID_UID, TRANS_TEST_INVALID_PID);
83     EXPECT_EQ(ret,  SOFTBUS_INVALID_PARAM);
84     ret = TransCreateSessionServer(g_pkgName, NULL, TRANS_TEST_INVALID_UID, TRANS_TEST_INVALID_PID);
85     EXPECT_EQ(ret,  SOFTBUS_INVALID_PARAM);
86 }
87 
88 /**
89  * @tc.name: TransSessionServiceTest02
90  * @tc.desc: Transmission session service create session with existed session.
91  * @tc.type: FUNC
92  * @tc.require:
93  */
94 HWTEST_F(TransSessionServiceTest, TransSessionServiceTest02, TestSize.Level1)
95 {
96     SessionServer *sessionServer = (SessionServer*)SoftBusMalloc(sizeof(SessionServer));
97     EXPECT_TRUE(sessionServer != NULL);
98     memset_s(sessionServer, sizeof(SessionServer), 0, sizeof(SessionServer));
99     int32_t ret = strcpy_s(sessionServer->sessionName, sizeof(sessionServer->sessionName), g_sessionName);
100     EXPECT_EQ(ret, EOK);
101     ret = strcpy_s(sessionServer->pkgName, sizeof(sessionServer->pkgName), g_pkgName);
102     EXPECT_EQ(ret, EOK);
103     ret = TransSessionServerAddItem(sessionServer);
104     EXPECT_EQ(ret, SOFTBUS_OK);
105     ret = TransCreateSessionServer(g_pkgName, g_sessionName, TRANS_TEST_INVALID_UID, TRANS_TEST_INVALID_PID);
106     EXPECT_EQ(ret, SOFTBUS_OK);
107     ret = TransSessionServerDelItem(g_sessionName);
108     EXPECT_EQ(ret, SOFTBUS_OK);
109 }
110 
111 /**
112  * @tc.name: TransSessionServiceTest03
113  * @tc.desc: Transmission session service create session with invalid and wrong parameters.
114  * @tc.type: FUNC
115  * @tc.require:
116  */
117 HWTEST_F(TransSessionServiceTest, TransSessionServiceTest03, TestSize.Level1)
118 {
119     int32_t ret = TransRemoveSessionServer(NULL, g_sessionName);
120     EXPECT_EQ(ret,  SOFTBUS_INVALID_PARAM);
121     ret = TransRemoveSessionServer(g_pkgName, NULL);
122     EXPECT_EQ(ret,  SOFTBUS_INVALID_PARAM);
123     ret = TransRemoveSessionServer(g_pkgName, g_sessionName);
124     EXPECT_EQ(ret,  SOFTBUS_OK);
125 }
126 
127 /**
128  * @tc.name: TransSessionServiceTest04
129  * @tc.desc: Transmission session service open session with invalid parameters.
130  * @tc.type: FUNC
131  * @tc.require:
132  */
133 HWTEST_F(TransSessionServiceTest, TransSessionServiceTest04, TestSize.Level1)
134 {
135     SessionParam sessionPara;
136     memset_s(&sessionPara, sizeof(SessionParam), 0, sizeof(SessionParam));
137     TransInfo *transInfo = (TransInfo*)SoftBusCalloc(sizeof(TransInfo));
138     EXPECT_TRUE(transInfo != NULL);
139     memset_s(transInfo, sizeof(TransInfo), 0, sizeof(TransInfo));
140     int32_t ret = TransOpenSession(&sessionPara, transInfo);
141     EXPECT_EQ(ret,  SOFTBUS_INVALID_PARAM);
142     sessionPara.sessionName = g_sessionName;
143     ret = TransOpenSession(&sessionPara, transInfo);
144     EXPECT_EQ(ret,  SOFTBUS_INVALID_PARAM);
145     sessionPara.peerSessionName = g_sessionName;
146     ret = TransOpenSession(&sessionPara, transInfo);
147     EXPECT_EQ(ret,  SOFTBUS_INVALID_PARAM);
148     sessionPara.peerDeviceId = g_deviceId;
149     ret = TransOpenSession(&sessionPara, transInfo);
150     EXPECT_EQ(ret,  SOFTBUS_TRANS_SESSION_GROUP_INVALID);
151     char groupId[] = {"ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00AB"};
152     sessionPara.groupId = groupId;
153     ret = TransOpenSession(&sessionPara, transInfo);
154     EXPECT_EQ(ret,  SOFTBUS_TRANS_SESSION_NAME_NO_EXIST);
155     sessionPara.groupId = g_groupid;
156     ret = TransOpenSession(&sessionPara, transInfo);
157     EXPECT_EQ(ret,  SOFTBUS_TRANS_SESSION_NAME_NO_EXIST);
158     SoftBusFree(transInfo);
159 }
160 
161 /**
162  * @tc.name: TransSessionServiceTest05
163  * @tc.desc: Transmission session service open session with not wrong session.
164  * @tc.type: FUNC
165  * @tc.require:
166  */
167 HWTEST_F(TransSessionServiceTest, TransSessionServiceTest05, TestSize.Level1)
168 {
169     SessionServer *sessionServer = (SessionServer*)SoftBusMalloc(sizeof(SessionServer));
170     EXPECT_TRUE(sessionServer != NULL);
171     memset_s(sessionServer, sizeof(SessionServer), 0, sizeof(SessionServer));
172     int32_t ret = strcpy_s(sessionServer->sessionName, sizeof(sessionServer->sessionName), g_sessionName);
173     EXPECT_EQ(ret, EOK);
174     ret = strcpy_s(sessionServer->pkgName, sizeof(sessionServer->pkgName), g_pkgName);
175     EXPECT_EQ(ret, EOK);
176     ret = TransSessionServerAddItem(sessionServer);
177     TransInfo *transInfo = (TransInfo*)SoftBusCalloc(sizeof(TransInfo));
178     EXPECT_TRUE(transInfo != NULL);
179     memset_s(transInfo, sizeof(TransInfo), 0, sizeof(TransInfo));
180     SessionParam sessionPara;
181     memset_s(&sessionPara, sizeof(SessionParam), 0, sizeof(SessionParam));
182     sessionPara.sessionName = g_sessionName;
183     sessionPara.peerSessionName = g_sessionName;
184     sessionPara.peerDeviceId = g_deviceId;
185     sessionPara.groupId = g_groupid;
186     sessionPara.attr = &g_sessionAttr;
187     ret = TransOpenSession(&sessionPara, transInfo);
188     EXPECT_NE(ret, SOFTBUS_OK);
189     ret = TransSessionServerDelItem(g_sessionName);
190     EXPECT_EQ(ret, SOFTBUS_OK);
191     SoftBusFree(transInfo);
192 }
193 
194 /**
195  * @tc.name: TransSessionServiceTest06
196  * @tc.desc: Transmission session service initialize and deinitialize.
197  * @tc.type: FUNC
198  * @tc.require:
199  */
200 HWTEST_F(TransSessionServiceTest, TransSessionServiceTest06, TestSize.Level1)
201 {
202     TransServerDeathCallback(g_pkgName, TRANS_TEST_INVALID_PID);
203     int ret = TransServerInit();
204     EXPECT_EQ(ret, SOFTBUS_CONN_INTERNAL_ERR);
205     TransServerDeinit();
206 }
207 }