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 }