• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2023 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 #include <securec.h>
18 
19 #include "bus_center_event.h"
20 #include "bus_center_manager.h"
21 #include "lnn_local_net_ledger.h"
22 #include "lnn_net_builder.h"
23 #include "lnn_net_builder_process.h"
24 #include "message_handler.h"
25 #include "softbus_common.h"
26 #include "softbus_error_code.h"
27 
28 constexpr char NETWORKID[] = "ABCDEFG";
29 constexpr char OLD_NETWORKID[] = "ABCDEFG";
30 constexpr char MASTER_UDID[] = "0123456";
31 constexpr uint16_t CONN_FSM_ID = 1;
32 constexpr int32_t MASTER_WEIGHT = 1;
33 constexpr uint32_t TYPE_LEN = 1;
34 constexpr uint32_t TYPE_LENTH = 7;
35 constexpr char IP[IP_STR_MAX_LEN] = "127.0.0.1";
36 constexpr uint16_t PORT = 1000;
37 constexpr char PEERUID[MAX_ACCOUNT_HASH_LEN] = "021315ASD";
38 constexpr uint8_t MSG[] = "123456BNHFCF";
39 constexpr int64_t AUTH_ID = 10;
40 constexpr uint32_t REQUEST_ID = 10;
41 constexpr uint16_t CHANNEL_ID = 2050;
42 
43 #define SOFTBUS_SUB_SYSTEM        203
44 #define SOFTBUS_AUTH_MODULE       3
45 #define HICHAIN_ERROR_KEY_NOEXIST (-((SOFTBUS_SUB_SYSTEM << 21) | (SOFTBUS_AUTH_MODULE << 16) | 0x0101))
46 
47 namespace OHOS {
48 using namespace testing::ext;
49 
50 class LNNNetBuilderTest : public testing::Test {
51 public:
52     static void SetUpTestCase();
53     static void TearDownTestCase();
54     void SetUp();
55     void TearDown();
56 };
57 
SetUpTestCase()58 void LNNNetBuilderTest::SetUpTestCase()
59 {
60     LooperInit();
61 }
62 
TearDownTestCase()63 void LNNNetBuilderTest::TearDownTestCase()
64 {
65     LooperDeinit();
66 }
67 
SetUp()68 void LNNNetBuilderTest::SetUp()
69 {
70     LnnInitBusCenterEvent();
71 }
72 
TearDown()73 void LNNNetBuilderTest::TearDown()
74 {
75     LnnDeinitNetBuilder();
76     LnnDeinitBusCenterEvent();
77 }
78 
OnLnnServerJoinExtCb(const ConnectionAddr * addr,int32_t returnRet)79 static void OnLnnServerJoinExtCb(const ConnectionAddr *addr, int32_t returnRet)
80 {
81     (void)addr;
82     return;
83 }
84 
85 /*
86  * @tc.name: LNN_NOTIFY_DISCOVERY_DEVICE_TEST_001
87  * @tc.desc: test LnnNotifyDiscoveryDevice
88  * @tc.type: FUNC
89  * @tc.require: I5PRUD
90  */
91 HWTEST_F(LNNNetBuilderTest, LNN_NOTIFY_DISCOVERY_DEVICE_TEST_001, TestSize.Level0)
92 {
93     ConnectionAddr target = { .type = CONNECTION_ADDR_WLAN, .info.ip.port = PORT };
94     LnnDfxDeviceInfoReport infoReport;
95     (void)memset_s(&infoReport, sizeof(LnnDfxDeviceInfoReport), 0, sizeof(LnnDfxDeviceInfoReport));
96     memcpy_s(target.peerUid, MAX_ACCOUNT_HASH_LEN, PEERUID, strlen(PEERUID));
97     memcpy_s(target.info.ip.ip, IP_STR_MAX_LEN, IP, strlen(IP));
98     int32_t ret = LnnNotifyDiscoveryDevice(&target, &infoReport, false);
99     EXPECT_TRUE(ret != SOFTBUS_OK);
100     ret = LnnInitNetBuilder();
101     EXPECT_TRUE(ret == SOFTBUS_OK);
102     ret = LnnNotifyDiscoveryDevice(nullptr, &infoReport, false);
103     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
104 }
105 
106 /*
107  * @tc.name: LNN_REQUEST_LEAVE_BY_ADDRTYPE_TEST_001
108  * @tc.desc: test LnnRequestLeaveByAddrType
109  * @tc.type: FUNC
110  * @tc.require: I5PRUD
111  */
112 HWTEST_F(LNNNetBuilderTest, LNN_REQUEST_LEAVE_BY_ADDRTYPE_TEST_001, TestSize.Level0)
113 {
114     const bool type[CONNECTION_ADDR_MAX] = { true, true, true, true, true };
115     int32_t ret = LnnRequestLeaveByAddrType(type, CONNECTION_ADDR_MAX);
116     EXPECT_TRUE(ret != SOFTBUS_OK);
117     ret = LnnInitNetBuilder();
118     EXPECT_TRUE(ret == SOFTBUS_OK);
119     ret = LnnRequestLeaveByAddrType(nullptr, TYPE_LENTH);
120     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
121     ret = LnnRequestLeaveByAddrType(type, TYPE_LEN);
122     EXPECT_TRUE(ret != SOFTBUS_OK);
123     ret = LnnRequestLeaveByAddrType(type, TYPE_LENTH);
124     EXPECT_TRUE(ret == SOFTBUS_OK);
125 }
126 
127 /*
128  * @tc.name: LNN_REQUEST_LEAVE_SPECIFIC_TEST_001
129  * @tc.desc: test LnnRequestLeaveSpecific
130  * @tc.type: FUNC
131  * @tc.require: I5PRUD
132  */
133 HWTEST_F(LNNNetBuilderTest, LNN_REQUEST_LEAVE_SPECIFIC_TEST_001, TestSize.Level0)
134 {
135     char *networkId = nullptr;
136     int32_t ret = LnnRequestLeaveSpecific(networkId, CONNECTION_ADDR_WLAN);
137     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
138     ret = LnnRequestLeaveSpecific(NETWORKID, CONNECTION_ADDR_WLAN);
139     EXPECT_TRUE(ret == SOFTBUS_NO_INIT);
140     ret = LnnInitNetBuilder();
141     EXPECT_TRUE(ret == SOFTBUS_OK);
142     ret = LnnRequestLeaveSpecific(NETWORKID, CONNECTION_ADDR_WLAN);
143     EXPECT_TRUE(ret == SOFTBUS_OK);
144 }
145 
146 /*
147  * @tc.name: LNN_REQUEST_LEAVE_INVALID_CONN_TEST_001
148  * @tc.desc: test LnnRequestLeaveInvalidConn
149  * @tc.type: FUNC
150  * @tc.require: I5PRUD
151  */
152 HWTEST_F(LNNNetBuilderTest, LNN_REQUEST_LEAVE_INVALID_CONN_TEST_001, TestSize.Level0)
153 {
154     int32_t ret = LnnRequestLeaveInvalidConn(OLD_NETWORKID, CONNECTION_ADDR_WLAN, NETWORKID);
155     EXPECT_TRUE(ret != SOFTBUS_OK);
156     ret = LnnInitNetBuilder();
157     EXPECT_TRUE(ret == SOFTBUS_OK);
158     ret = LnnRequestLeaveInvalidConn(OLD_NETWORKID, CONNECTION_ADDR_WLAN, NETWORKID);
159     EXPECT_TRUE(ret == SOFTBUS_OK);
160 }
161 
162 /*
163  * @tc.name: LNN_REQUEST_CLEAN_CONN_FSM_TEST_001
164  * @tc.desc: test LnnRequestCleanConnFsm
165  * @tc.type: FUNC
166  * @tc.require: I5PRUD
167  */
168 HWTEST_F(LNNNetBuilderTest, LNN_REQUEST_CLEAN_CONN_FSM_TEST_001, TestSize.Level0)
169 {
170     int32_t ret = LnnRequestCleanConnFsm(CONN_FSM_ID);
171     EXPECT_TRUE(ret != SOFTBUS_OK);
172     ret = LnnInitNetBuilder();
173     EXPECT_TRUE(ret == SOFTBUS_OK);
174     ret = LnnRequestCleanConnFsm(CONN_FSM_ID);
175     EXPECT_TRUE(ret == SOFTBUS_OK);
176 }
177 
178 /*
179  * @tc.name: LNN_NOTIFY_NODE_STATE_CHANGED_TEST_001
180  * @tc.desc: test LnnNotifyNodeStateChanged
181  * @tc.type: FUNC
182  * @tc.require: I5PRUD
183  */
184 HWTEST_F(LNNNetBuilderTest, LNN_NOTIFY_NODE_STATE_CHANGED_TEST_001, TestSize.Level0)
185 {
186     ConnectionAddr target = { .type = CONNECTION_ADDR_WLAN, .info.ip.port = PORT };
187     memcpy_s(target.peerUid, MAX_ACCOUNT_HASH_LEN, PEERUID, strlen(PEERUID));
188     memcpy_s(target.info.ip.ip, IP_STR_MAX_LEN, IP, strlen(IP));
189     int32_t ret = LnnNotifyNodeStateChanged(&target);
190     EXPECT_TRUE(ret != SOFTBUS_OK);
191     ret = LnnInitNetBuilder();
192     EXPECT_TRUE(ret == SOFTBUS_OK);
193     ret = LnnNotifyNodeStateChanged(&target);
194     EXPECT_TRUE(ret == SOFTBUS_OK);
195 }
196 
197 /*
198  * @tc.name: LNN_NOTIFY_MASTER_ELECT_TEST_001
199  * @tc.desc: test LnnNotifyMasterElect
200  * @tc.type: FUNC
201  * @tc.require: I5PRUD
202  */
203 HWTEST_F(LNNNetBuilderTest, LNN_NOTIFY_MASTER_ELECT_TEST_001, TestSize.Level0)
204 {
205     int32_t ret = LnnNotifyMasterElect(NETWORKID, MASTER_UDID, MASTER_WEIGHT);
206     EXPECT_TRUE(ret != SOFTBUS_OK);
207     ret = LnnInitNetBuilder();
208     EXPECT_TRUE(ret == SOFTBUS_OK);
209     char *networkId = nullptr;
210     ret = LnnNotifyMasterElect(networkId, MASTER_UDID, MASTER_WEIGHT);
211     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
212     ret = LnnNotifyMasterElect(NETWORKID, MASTER_UDID, MASTER_WEIGHT);
213     EXPECT_TRUE(ret == SOFTBUS_OK);
214 }
215 
216 /*
217  * @tc.name: LNN_UPDATE_NODE_ADDR_TEST_001
218  * @tc.desc: test LnnUpdateNodeAddr
219  * @tc.type: FUNC
220  * @tc.require: I5PRUD
221  */
222 HWTEST_F(LNNNetBuilderTest, LNN_UPDATE_NODE_ADDR_TEST_001, TestSize.Level0)
223 {
224     char *addr = nullptr;
225     int32_t ret = LnnUpdateNodeAddr(addr);
226     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
227     ret = LnnInitNetBuilder();
228     EXPECT_TRUE(ret == SOFTBUS_OK);
229     ret = LnnUpdateNodeAddr(MASTER_UDID);
230     EXPECT_TRUE(ret == SOFTBUS_LOCK_ERR);
231     ret = LnnInitLocalLedger();
232     EXPECT_TRUE(ret == SOFTBUS_OK);
233     ret = LnnUpdateNodeAddr(MASTER_UDID);
234     EXPECT_TRUE(ret == SOFTBUS_OK);
235 }
236 
237 /*
238  * @tc.name: LNN_SYNC_OFFLINE_COMPLETE_TEST_001
239  * @tc.desc: test LnnSyncOfflineComplete
240  * @tc.type: FUNC
241  * @tc.require:
242  */
243 HWTEST_F(LNNNetBuilderTest, LNN_SYNC_OFFLINE_COMPLETE_TEST_001, TestSize.Level0)
244 {
245     uint32_t len = TYPE_LEN;
246     LnnSyncOfflineComplete(LNN_INFO_TYPE_CAPABILITY, NETWORKID, MSG, len);
247     int32_t ret = LnnInitNetBuilder();
248     EXPECT_TRUE(ret == SOFTBUS_OK);
249     LnnSyncOfflineComplete(LNN_INFO_TYPE_CAPABILITY, nullptr, MSG, len);
250     LnnSyncOfflineComplete(LNN_INFO_TYPE_CAPABILITY, NETWORKID, MSG, len);
251 }
252 
253 /*
254  * @tc.name: LNN_SERVER_LEAVE_TEST_001
255  * @tc.desc: test LnnServerLeave
256  * @tc.type: FUNC
257  * @tc.require:
258  */
259 HWTEST_F(LNNNetBuilderTest, LNN_SERVER_LEAVE_TEST_001, TestSize.Level0)
260 {
261     int32_t ret = LnnServerLeave(NETWORKID, "pkaName");
262     EXPECT_TRUE(ret == SOFTBUS_NO_INIT);
263     ret = LnnInitNetBuilder();
264     EXPECT_TRUE(ret == SOFTBUS_OK);
265     ret = LnnServerLeave(NETWORKID, "pkaName");
266     EXPECT_TRUE(ret == SOFTBUS_OK);
267     ret = LnnServerLeave(nullptr, "pkaName");
268     EXPECT_TRUE(ret == SOFTBUS_MALLOC_ERR);
269 }
270 
271 /*
272  * @tc.name: LNN_SERVER_JOIN_TEST_001
273  * @tc.desc: test LnnServerJoin
274  * @tc.type: FUNC
275  * @tc.require:
276  */
277 HWTEST_F(LNNNetBuilderTest, LNN_SERVER_JOIN_TEST_001, TestSize.Level0)
278 {
279     ConnectionAddr addr = { .type = CONNECTION_ADDR_WLAN, .info.ip.port = PORT };
280     (void)strcpy_s(addr.info.ip.ip, IP_STR_MAX_LEN, IP);
281     int32_t ret = LnnServerJoin(&addr, "pkgName", false);
282     EXPECT_TRUE(ret == SOFTBUS_NO_INIT);
283     ret = LnnInitNetBuilder();
284     EXPECT_TRUE(ret == SOFTBUS_OK);
285     ret = LnnServerJoin(&addr, "pkgName", false);
286     EXPECT_TRUE(ret == SOFTBUS_OK);
287     ret = LnnServerJoin(nullptr, "pkgName", false);
288     EXPECT_TRUE(ret == SOFTBUS_MALLOC_ERR);
289     ret = LnnServerJoin(&addr, nullptr, false);
290     EXPECT_TRUE(ret == SOFTBUS_MALLOC_ERR);
291 }
292 
293 /*
294  * @tc.name: LNN_SERVER_JOIN_EXT_TEST_001
295  * @tc.desc: test LnnServerJoinExt
296  * @tc.type: FUNC
297  * @tc.require:
298  */
299 HWTEST_F(LNNNetBuilderTest, LNN_SERVER_JOIN_EXT_TEST_001, TestSize.Level0)
300 {
301     ConnectionAddr addr = { .type = CONNECTION_ADDR_SESSION, .info.session.channelId = CHANNEL_ID };
302     LnnServerJoinExtCallBack cb = { .lnnServerJoinExtCallback = OnLnnServerJoinExtCb };
303     int32_t ret = LnnServerJoinExt(&addr, &cb);
304     EXPECT_TRUE(ret == SOFTBUS_NO_INIT);
305     ret = LnnInitNetBuilder();
306     EXPECT_TRUE(ret == SOFTBUS_OK);
307     ret = LnnServerJoinExt(&addr, &cb);
308     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
309     ret = LnnServerJoinExt(nullptr, &cb);
310     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
311     ret = LnnServerJoinExt(&addr, nullptr);
312     EXPECT_TRUE(ret == SOFTBUS_INVALID_PARAM);
313 }
314 
315 /*
316  * @tc.name: FIND_REQUEST_ID_BY_ADDR_TEST_001
317  * @tc.desc: test FindRequestIdByAddr
318  * @tc.type: FUNC
319  * @tc.require:
320  */
321 HWTEST_F(LNNNetBuilderTest, FIND_REQUEST_ID_BY_ADDR_TEST_001, TestSize.Level0)
322 {
323     ConnectionAddr addr = { .type = CONNECTION_ADDR_WLAN, .info.ip.port = PORT };
324     (void)strcpy_s(addr.info.ip.ip, IP_STR_MAX_LEN, IP);
325     uint32_t requestId;
326     uint32_t ret = LnnInitNetBuilder();
327     EXPECT_TRUE(ret == SOFTBUS_OK);
328     ret = FindRequestIdByAddr(nullptr, &requestId);
329     EXPECT_TRUE(ret != SOFTBUS_OK);
330 }
331 
332 /*
333  * @tc.name: FIND_NODE_INFO_BY_RQUESTID_TEST_001
334  * @tc.desc: test FindNodeInfoByRquestId
335  * @tc.type: FUNC
336  * @tc.require:
337  */
338 HWTEST_F(LNNNetBuilderTest, FIND_NODE_INFO_BY_RQUESTID_TEST_001, TestSize.Level0)
339 {
340     ConnectionAddr addr = { .type = CONNECTION_ADDR_WLAN, .info.ip.port = PORT };
341     (void)strcpy_s(addr.info.ip.ip, IP_STR_MAX_LEN, IP);
342     int32_t ret = LnnInitNetBuilder();
343     EXPECT_TRUE(ret == SOFTBUS_OK);
344     NodeInfo *info = FindNodeInfoByRquestId(REQUEST_ID);
345     EXPECT_TRUE(info == nullptr);
346 }
347 
348 /*
349  * @tc.name: LNN_GET_VERIFY_CALLBACK_TEST_001
350  * @tc.desc: test three verify callback
351  * @tc.type: FUNC
352  * @tc.require:
353  */
354 HWTEST_F(LNNNetBuilderTest, LNN_GET_VERIFY_CALLBACK_TEST_001, TestSize.Level0)
355 {
356     ConnectionAddr addr = { .type = CONNECTION_ADDR_WLAN, .info.ip.port = PORT };
357     (void)strcpy_s(addr.info.ip.ip, IP_STR_MAX_LEN, IP);
358     NodeInfo *info = nullptr;
359     NodeInfo info1;
360     int32_t ret = LnnInitNetBuilder();
361     EXPECT_TRUE(ret == SOFTBUS_OK);
362     AuthVerifyCallback *authVerifyCallback = LnnGetVerifyCallback();
363     AuthHandle authHandle = { .authId = AUTH_ID, .type = AUTH_LINK_TYPE_WIFI };
364     authVerifyCallback->onVerifyPassed(REQUEST_ID, authHandle, info);
365     authVerifyCallback->onVerifyPassed(REQUEST_ID, authHandle, &info1);
366     authVerifyCallback = LnnGetReAuthVerifyCallback();
367     authVerifyCallback->onVerifyPassed(REQUEST_ID, authHandle, info);
368     authVerifyCallback->onVerifyPassed(REQUEST_ID, authHandle, &info1);
369     authVerifyCallback->onVerifyFailed(REQUEST_ID, SOFTBUS_OK);
370     authVerifyCallback->onVerifyFailed(REQUEST_ID, HICHAIN_ERROR_KEY_NOEXIST);
371 }
372 
373 /*
374  * @tc.name: LNN_NOTIFY_AUTH_HANDLE_LEAVELNN_TEST_001
375  * @tc.desc: lnn notify auth handle leave lnn test
376  * @tc.type: FUNC
377  * @tc.require:
378  */
379 HWTEST_F(LNNNetBuilderTest, LNN_NOTIFY_AUTH_HANDLE_LEAVELNN_TEST_001, TestSize.Level0)
380 {
381     AuthHandle authHandle = { .authId = AUTH_ID, .type = AUTH_LINK_TYPE_WIFI };
382     int32_t ret = LnnNotifyAuthHandleLeaveLNN(authHandle);
383     EXPECT_TRUE(ret != SOFTBUS_OK);
384     ret = LnnInitNetBuilder();
385     EXPECT_TRUE(ret == SOFTBUS_OK);
386     ret = LnnNotifyAuthHandleLeaveLNN(authHandle);
387     EXPECT_TRUE(ret == SOFTBUS_OK);
388 }
389 } // namespace OHOS
390