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