• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "lnn_devicename_info.h"
21 #include "lnn_local_net_ledger.h"
22 #include "lnn_net_builder.h"
23 #include "lnn_network_info.h"
24 #include "lnn_net_ledger_mock.h"
25 #include "lnn_service_mock.h"
26 #include "lnn_sync_info_manager.h"
27 #include "lnn_trans_mock.h"
28 #include "message_handler.h"
29 #include "softbus_bus_center.h"
30 #include "softbus_errcode.h"
31 #include "softbus_log.h"
32 #include "softbus_common.h"
33 
34 static NodeInfo info;
35 namespace OHOS {
36 using namespace testing::ext;
37 using namespace testing;
38 
39 constexpr int32_t CHANNELID = 2;
40 constexpr uint32_t LEN = 10;
41 constexpr char UUID[SHA_256_HEX_HASH_LEN] = "abc";
42 
43 class LnnNetworkInfoTest : public testing::Test {
44 public:
45     static void SetUpTestCase();
46     static void TearDownTestCase();
47     void SetUp();
48     void TearDown();
49 };
50 
SetUpTestCase()51 void LnnNetworkInfoTest::SetUpTestCase()
52 {
53     LooperInit();
54     NiceMock<LnnTransInterfaceMock> transMock;
55     SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_INFO, "ActionOfTransRegister enter1");
56     EXPECT_CALL(transMock, TransRegisterNetworkingChannelListener(NotNull())).WillRepeatedly(
57         LnnTransInterfaceMock::ActionOfTransRegister);
58     SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_INFO, "ActionOfTransRegister enter2");
59     EXPECT_EQ(LnnInitSyncInfoManager(), SOFTBUS_OK);
60 }
61 
TearDownTestCase()62 void LnnNetworkInfoTest::TearDownTestCase()
63 {
64     LnnDeinitSyncInfoManager();
65     LooperDeinit();
66 }
67 
SetUp()68 void LnnNetworkInfoTest::SetUp()
69 {
70 }
71 
TearDown()72 void LnnNetworkInfoTest::TearDown()
73 {
74 }
75 
GetEventHandler(LnnEventType event,LnnEventHandler & handler)76 static bool GetEventHandler(LnnEventType event, LnnEventHandler &handler)
77 {
78     if (LnnServicetInterfaceMock::g_lnnEventHandlers.find(event) !=
79         LnnServicetInterfaceMock::g_lnnEventHandlers.end()) {
80         handler = LnnServicetInterfaceMock::g_lnnEventHandlers[event];
81         return true;
82     }
83     return false;
84 }
85 
InitMock(LnnNetLedgertInterfaceMock & netLedgerMock,LnnServicetInterfaceMock & serviceMock)86 void InitMock(LnnNetLedgertInterfaceMock &netLedgerMock, LnnServicetInterfaceMock &serviceMock)
87 {
88     ON_CALL(serviceMock, LnnRegisterEventHandler(_, _)).WillByDefault(
89         LnnServicetInterfaceMock::ActionOfLnnRegisterEventHandler);
90     ON_CALL(netLedgerMock, LnnGetLocalNumInfo).WillByDefault(Return(SOFTBUS_OK));
91     ON_CALL(netLedgerMock, LnnSetLocalNumInfo).WillByDefault(Return(SOFTBUS_OK));
92     ON_CALL(netLedgerMock, LnnGetAllOnlineNodeInfo).WillByDefault(
93         LnnNetLedgertInterfaceMock::ActionOfLnnGetAllOnlineNodeInfo);
94     (void)memset_s(&info, sizeof(info), 0, sizeof(info));
95     ON_CALL(netLedgerMock, LnnGetNodeInfoById).WillByDefault(Return(&info));
96 }
97 
98 /*
99 * @tc.name: LNN_BT_STATE_EVENT_HANDLER_TEST_001
100 * @tc.desc: test LnnInitNetworkInfo
101 * @tc.type: FUNC
102 * @tc.require: I5PRUD
103 */
104 HWTEST_F(LnnNetworkInfoTest, LNN_BT_STATE_EVENT_HANDLER_TEST_001, TestSize.Level1)
105 {
106     NiceMock<LnnNetLedgertInterfaceMock>  netLedgerMock;
107     NiceMock<LnnServicetInterfaceMock> serviceMock;
108     InitMock(netLedgerMock, serviceMock);
109     EXPECT_EQ(LnnInitNetworkInfo(), SOFTBUS_OK);
110     LnnEventHandler handler;
111     bool ret = GetEventHandler(LNN_EVENT_BT_STATE_CHANGED, handler);
112     ASSERT_TRUE(ret == true);
113     LnnMonitorBtStateChangedEvent btEvent1 = {
114         .basic.event = LNN_EVENT_BT_STATE_CHANGED,
115         .status = (uint8_t)SOFTBUS_BR_TURN_ON,
116     };
117     handler((LnnEventBasicInfo *)&btEvent1);
118     LnnMonitorBtStateChangedEvent btEvent2 = {
119         .basic.event = LNN_EVENT_BT_STATE_CHANGED,
120         .status = (uint8_t)SOFTBUS_BR_TURN_OFF,
121     };
122     handler((LnnEventBasicInfo *)&btEvent2);
123     EXPECT_CALL(serviceMock, LnnRegisterEventHandler(_, _)).WillOnce(Return(SOFTBUS_ERR)).
124         WillRepeatedly(Return(SOFTBUS_OK));
125     EXPECT_EQ(LnnInitNetworkInfo(), SOFTBUS_ERR);
126 
127     EXPECT_CALL(netLedgerMock, LnnGetLocalNumInfo).WillOnce(Return(SOFTBUS_ERR)).WillRepeatedly(Return(SOFTBUS_OK));
128     EXPECT_EQ(LnnInitNetworkInfo(), SOFTBUS_ERR);
129     handler((LnnEventBasicInfo *)&btEvent1);
130 
131     char msg[LEN] = {0};
132     *(int32_t *)msg = LNN_INFO_TYPE_CAPABILITY;
133     if (memcpy_s(msg + sizeof(int32_t), LEN - sizeof(int32_t), "abc", strlen("abc") + 1) != EOK) {
134         SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy sync info msg fail");
135     }
136     LnnTransInterfaceMock::g_networkListener->onChannelOpened(CHANNELID, UUID, true);
137     LnnTransInterfaceMock::g_networkListener->onMessageReceived(CHANNELID, msg, LEN);
138     SoftBusSleepMs(200);
139 }
140 
141 /*
142 * @tc.name: LNN_WIFI_STATE_EVENT_HANDLER_TEST_001
143 * @tc.desc: test LnnInitNetworkInfo
144 * @tc.type: FUNC
145 * @tc.require: I5PRUD
146 */
147 HWTEST_F(LnnNetworkInfoTest, WIFI_STATE_EVENT_HANDLER_TEST_001, TestSize.Level1)
148 {
149     NiceMock<LnnNetLedgertInterfaceMock>  netLedgerMock;
150     NiceMock<LnnServicetInterfaceMock> serviceMock;
151     InitMock(netLedgerMock, serviceMock);
152     EXPECT_EQ(LnnInitNetworkInfo(), SOFTBUS_ERR);
153     LnnEventHandler handler;
154     bool ret = GetEventHandler(LNN_EVENT_WIFI_STATE_CHANGED, handler);
155     EXPECT_TRUE(ret == true);
156 
157     LnnMonitorWlanStateChangedEvent wifiEvent1 = {
158         .basic.event = LNN_EVENT_WIFI_STATE_CHANGED,
159         .status = (uint8_t)SOFTBUS_WIFI_CONNECTED,
160     };
161     handler((LnnEventBasicInfo *)&wifiEvent1);
162 
163     LnnMonitorWlanStateChangedEvent wifiEvent2 = {
164         .basic.event = LNN_EVENT_WIFI_STATE_CHANGED,
165         .status = (uint8_t)SOFTBUS_WIFI_DISCONNECTED,
166     };
167     handler((LnnEventBasicInfo *)&wifiEvent2);
168 
169     LnnMonitorWlanStateChangedEvent wifiEvent3 = {
170         .basic.event = LNN_EVENT_WIFI_STATE_CHANGED,
171         .status = (uint8_t)SOFTBUS_WIFI_DISABLED,
172     };
173     handler((LnnEventBasicInfo *)&wifiEvent3);
174 
175     LnnMonitorWlanStateChangedEvent wifiEvent4 = {
176         .basic.event = LNN_EVENT_WIFI_STATE_CHANGED,
177         .status = (uint8_t)SOFTBUS_WIFI_ENABLED,
178     };
179     handler((LnnEventBasicInfo *)&wifiEvent4);
180 
181     EXPECT_CALL(netLedgerMock, LnnGetLocalNumInfo).WillOnce(Return(SOFTBUS_ERR)).WillRepeatedly(Return(SOFTBUS_OK));
182     EXPECT_EQ(LnnInitNetworkInfo(), SOFTBUS_ERR);
183     handler((LnnEventBasicInfo *)&wifiEvent1);
184     SoftBusSleepMs(200);
185 }
186 }
187