1 /*
2 * Copyright (c) 2025 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 "lnn_connId_callback_manager.h"
20 #include "softbus_common.h"
21 #include "softbus_error_code.h"
22
23 constexpr int32_t CHANNEL_ID = 2050;
24 constexpr int32_t CONNID_ID = 99;
25 constexpr int32_t CONNID_ID_TWO = 100;
26 constexpr int32_t CONNID_ID_ERROR = 0;
27 char g_peerUdud[] = "123456ABCDEF";
28
29 namespace OHOS {
30 using namespace testing::ext;
31
32 class LnnConnIdCbManagerTest : public testing::Test {
33 public:
34 static void SetUpTestCase(void);
35 static void TearDownTestCase(void);
36 void SetUp();
37 void TearDown();
38 };
39
SetUpTestCase(void)40 void LnnConnIdCbManagerTest::SetUpTestCase(void) { }
41
TearDownTestCase(void)42 void LnnConnIdCbManagerTest::TearDownTestCase(void) { }
43
SetUp()44 void LnnConnIdCbManagerTest::SetUp()
45 {
46 LnnInitConnIdCallbackManager();
47 }
48
TearDown()49 void LnnConnIdCbManagerTest::TearDown()
50 {
51 LnnDeinitConnIdCallbackManager();
52 }
53
OnLnnServerJoinExtCb(const ConnectionAddr * addr,int32_t ret)54 static void OnLnnServerJoinExtCb(const ConnectionAddr *addr, int32_t ret)
55 {
56 (void)addr;
57 return;
58 }
59
60 static LnnServerJoinExtCallBack cb = { .lnnServerJoinExtCallback = OnLnnServerJoinExtCb };
61
62 /**
63 * @tc.name: LnnConnIdCbManagerTest001
64 * @tc.desc: AddConnIdCallbackInfoItem test.
65 * @tc.type: FUNC
66 * @tc.require:
67 */
68 HWTEST_F(LnnConnIdCbManagerTest, LnnConnIdCbManagerTest001, TestSize.Level1)
69 {
70 ConnectionAddr addr = { .type = CONNECTION_ADDR_SESSION, .info.session.channelId = CHANNEL_ID };
71 int32_t ret = AddConnIdCallbackInfoItem(&addr, &cb, CONNID_ID, g_peerUdud);
72 EXPECT_EQ(ret, SOFTBUS_OK);
73 ret = AddConnIdCallbackInfoItem(&addr, &cb, CONNID_ID_TWO, g_peerUdud);
74 EXPECT_EQ(ret, SOFTBUS_ALREADY_EXISTED);
75 ret = AddConnIdCallbackInfoItem(&addr, &cb, CONNID_ID_TWO, g_peerUdud);
76 EXPECT_EQ(ret, SOFTBUS_NETWORK_JOIN_LNN_START_ERR);
77 ret = AddConnIdCallbackInfoItem(nullptr, &cb, CONNID_ID_TWO, g_peerUdud);
78 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
79 ret = AddConnIdCallbackInfoItem(&addr, &cb, CONNID_ID_TWO, nullptr);
80 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
81 ret = AddConnIdCallbackInfoItem(&addr, nullptr, CONNID_ID_TWO, g_peerUdud);
82 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
83 ret = AddConnIdCallbackInfoItem(&addr, &cb, CONNID_ID_ERROR, g_peerUdud);
84 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
85 }
86
87 /**
88 * @tc.name: LnnConnIdCbManagerTest002
89 * @tc.desc: DelConnIdCallbackInfoItem test.
90 * @tc.type: FUNC
91 * @tc.require:
92 */
93 HWTEST_F(LnnConnIdCbManagerTest, LnnConnIdCbManagerTest002, TestSize.Level1)
94 {
95 int32_t ret = DelConnIdCallbackInfoItem(CONNID_ID);
96 EXPECT_EQ(ret, SOFTBUS_OK);
97 ret = DelConnIdCallbackInfoItem(CONNID_ID_ERROR);
98 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
99 }
100
101 /**
102 * @tc.name: LnnConnIdCbManagerTest003
103 * @tc.desc: InvokeCallbackForJoinExt test.
104 * @tc.type: FUNC
105 * @tc.require:
106 */
107 HWTEST_F(LnnConnIdCbManagerTest, LnnConnIdCbManagerTest003, TestSize.Level1)
108 {
109 ConnectionAddr addr = { .type = CONNECTION_ADDR_SESSION, .info.session.channelId = CHANNEL_ID };
110 int32_t ret = AddConnIdCallbackInfoItem(&addr, &cb, CONNID_ID, g_peerUdud);
111 EXPECT_EQ(ret, SOFTBUS_OK);
112 EXPECT_NO_FATAL_FAILURE(InvokeCallbackForJoinExt(g_peerUdud, SOFTBUS_OK));
113 EXPECT_NO_FATAL_FAILURE(InvokeCallbackForJoinExt(nullptr, SOFTBUS_OK));
114 }
115
116 /**
117 * @tc.name: LnnConnIdCbManagerTest004
118 * @tc.desc: GetConnIdCbInfoByAddr test.
119 * @tc.type: FUNC
120 * @tc.require:
121 */
122 HWTEST_F(LnnConnIdCbManagerTest, LnnConnIdCbManagerTest004, TestSize.Level1)
123 {
124 ConnectionAddr addr = { .type = CONNECTION_ADDR_SESSION, .info.session.channelId = CHANNEL_ID };
125 ConnIdCbInfo connIdCbInfo;
126 (void)memset_s(&connIdCbInfo, sizeof(ConnIdCbInfo), 0, sizeof(ConnIdCbInfo));
127 int32_t ret = GetConnIdCbInfoByAddr(nullptr, &connIdCbInfo);
128 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
129 ret = GetConnIdCbInfoByAddr(&addr, &connIdCbInfo);
130 EXPECT_EQ(ret, SOFTBUS_NOT_FIND);
131 ret = AddConnIdCallbackInfoItem(&addr, &cb, CONNID_ID, g_peerUdud);
132 EXPECT_EQ(ret, SOFTBUS_OK);
133 ret = GetConnIdCbInfoByAddr(&addr, &connIdCbInfo);
134 EXPECT_EQ(ret, SOFTBUS_OK);
135 }
136 } // namespace OHOS