1 /*
2 * Copyright (c) 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 #include <gtest/gtest.h>
16 #include <servmgr_hdi.h>
17 #include <osal_mem.h>
18 #include "v1_0/ihostapd_interface.h"
19 #include "hostapd_callback_impl.h"
20 #include <securec.h>
21
22 #define IFNAME "wlan0"
23
24 #define HDF_LOG_TAG service_manager_test
25 using namespace testing::ext;
26
27 namespace HdiHostapdDirectTest {
28 const char *g_hdiServiceNameHostapd = "hostapd_interface_service";
29
30 class HdfHostapdHostDirectTest : public testing::Test {
31 public:
32 static void SetUpTestCase();
33 static void TearDownTestCase();
34 void SetUp();
35 void TearDown();
36 };
37
38 static struct IHostapdInterface *g_hostapdObj = nullptr;
39 struct IHostapdCallback *g_hostapdCallbackObj = nullptr;
SetUpTestCase()40 void HdfHostapdHostDirectTest::SetUpTestCase()
41 {
42 g_hostapdObj = IHostapdInterfaceGetInstance(g_hdiServiceNameHostapd, true);
43 g_hostapdCallbackObj = HostapdCallbackServiceGet();
44 ASSERT_TRUE(g_hostapdObj != nullptr);
45 ASSERT_TRUE(g_hostapdCallbackObj != nullptr);
46 printf("hostapd_interface_service start successful.");
47 }
48
TearDownTestCase()49 void HdfHostapdHostDirectTest::TearDownTestCase()
50 {
51 IHostapdInterfaceReleaseInstance(g_hdiServiceNameHostapd, g_hostapdObj, true);
52 HostapdCallbackServiceRelease(g_hostapdCallbackObj);
53 printf("hostapd_interface_service stop successful.");
54 }
55
SetUp()56 void HdfHostapdHostDirectTest::SetUp()
57 {
58 }
59
TearDown()60 void HdfHostapdHostDirectTest::TearDown()
61 {
62 }
63
64 /**
65 * @tc.name: EnableApTest_001
66 * @tc.desc: Hostapd enable ap feature function test
67 * @tc.type: FUNC
68 * @tc.require:
69 */
70 HWTEST_F(HdfHostapdHostDirectTest, EnableApTest_001, TestSize.Level1)
71 {
72 int32_t rc = g_hostapdObj->EnableAp(g_hostapdObj, IFNAME, 1);
73 ASSERT_EQ(rc, HDF_FAILURE);
74 rc = g_hostapdObj->EnableAp(g_hostapdObj, nullptr, 1);
75 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
76 }
77
78 /**
79 * @tc.name: DisableApTest_002
80 * @tc.desc: Hostapd disable ap feature function test
81 * @tc.type: FUNC
82 * @tc.require:
83 */
84 HWTEST_F(HdfHostapdHostDirectTest, DisableApTest_002, TestSize.Level1)
85 {
86 int32_t rc = g_hostapdObj->DisableAp(g_hostapdObj, IFNAME, 1);
87 ASSERT_EQ(rc, HDF_FAILURE);
88 rc = g_hostapdObj->DisableAp(g_hostapdObj, nullptr, 1);
89 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
90 }
91
92 /**
93 * @tc.name: SetApPasswdTest_003
94 * @tc.desc: Hostapd hdi set ap passwd feature function test
95 * @tc.type: FUNC
96 * @tc.require:
97 */
98 HWTEST_F(HdfHostapdHostDirectTest, SetApPasswdTest_003, TestSize.Level1)
99 {
100 int32_t rc = g_hostapdObj->SetApPasswd(g_hostapdObj, IFNAME, "123123123", 1);
101 ASSERT_EQ(rc, HDF_FAILURE);
102 rc = g_hostapdObj->SetApPasswd(g_hostapdObj, nullptr, "123123123", 1);
103 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
104 rc = g_hostapdObj->SetApPasswd(g_hostapdObj, IFNAME, nullptr, 1);
105 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
106 }
107
108 /**
109 * @tc.name: SetApNameTest_004
110 * @tc.desc: Hostapd hdi set ap name feature function test
111 * @tc.type: FUNC
112 * @tc.require:
113 */
114 HWTEST_F(HdfHostapdHostDirectTest, SetApNameTest_004, TestSize.Level1)
115 {
116 int32_t rc = g_hostapdObj->SetApName(g_hostapdObj, IFNAME, "SFG001", 1);
117 ASSERT_EQ(rc, HDF_FAILURE);
118 rc = g_hostapdObj->SetApName(g_hostapdObj, nullptr, "SFG001", 1);
119 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
120 rc = g_hostapdObj->SetApName(g_hostapdObj, IFNAME, nullptr, 1);
121 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
122 }
123
124 /**
125 * @tc.name: SetApWpaValueTest_005
126 * @tc.desc: Hostapd hdi set ap WpaValue feature function test
127 * @tc.type: FUNC
128 * @tc.require:
129 */
130 HWTEST_F(HdfHostapdHostDirectTest, SetApWpaValueTest_005, TestSize.Level1)
131 {
132 }
133
134 /**
135 * @tc.name: SetApBandTest_006
136 * @tc.desc: Hostapd hdi set ap band feature function test
137 * @tc.type: FUNC
138 * @tc.require:
139 */
140 HWTEST_F(HdfHostapdHostDirectTest, SetApBandTest_006, TestSize.Level1)
141 {
142 int32_t rc = g_hostapdObj->SetApBand(g_hostapdObj, IFNAME, 6, 1);
143 ASSERT_EQ(rc, HDF_FAILURE);
144 rc = g_hostapdObj->SetApBand(g_hostapdObj, nullptr, 1, 1);
145 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
146 }
147
148 /**
149 * @tc.name: SetAp80211nTest_007
150 * @tc.desc: Hostapd hdi set ap 80211n feature function test
151 * @tc.type: FUNC
152 * @tc.require:
153 */
154 HWTEST_F(HdfHostapdHostDirectTest, SetAp80211nTest_007, TestSize.Level1)
155 {
156 int32_t rc = g_hostapdObj->SetAp80211n(g_hostapdObj, IFNAME, 1, 1);
157 ASSERT_EQ(rc, HDF_FAILURE);
158 rc = g_hostapdObj->SetAp80211n(g_hostapdObj, nullptr, 1, 1);
159 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
160 }
161
162 /**
163 * @tc.name: SetApWmmTest_008
164 * @tc.desc: Hostapd hdi set ap Wmm feature function test
165 * @tc.type: FUNC
166 * @tc.require:
167 */
168 HWTEST_F(HdfHostapdHostDirectTest, SetApWmmTest_008, TestSize.Level1)
169 {
170 int32_t rc = g_hostapdObj->SetApWmm(g_hostapdObj, IFNAME, 1, 1);
171 ASSERT_EQ(rc, HDF_FAILURE);
172 rc = g_hostapdObj->SetApWmm(g_hostapdObj, nullptr, 1, 1);
173 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
174 }
175
176 /**
177 * @tc.name: SetApChannelTest_009
178 * @tc.desc: Hostapd hdi set ap channel feature function test
179 * @tc.type: FUNC
180 * @tc.require:
181 */
182 HWTEST_F(HdfHostapdHostDirectTest, SetApChannelTest_009, TestSize.Level1)
183 {
184 int32_t rc = g_hostapdObj->SetApChannel(g_hostapdObj, IFNAME, 6, 1);
185 ASSERT_EQ(rc, HDF_FAILURE);
186 rc = g_hostapdObj->SetApChannel(g_hostapdObj, nullptr, 6, 1);
187 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
188 }
189
190 /**
191 * @tc.name: SetApMaxConnTest_010
192 * @tc.desc: Hostapd hdi set ap MaxConn feature function test
193 * @tc.type: FUNC
194 * @tc.require:
195 */
196 HWTEST_F(HdfHostapdHostDirectTest, SetApMaxConnTest_010, TestSize.Level1)
197 {
198 int32_t rc = g_hostapdObj->SetApMaxConn(g_hostapdObj, IFNAME, 3, 1);
199 ASSERT_EQ(rc, HDF_FAILURE);
200 rc = g_hostapdObj->SetApMaxConn(g_hostapdObj, nullptr, 3, 1);
201 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
202 }
203
204 /**
205 * @tc.name: SetMacFilterTest_011
206 * @tc.desc: Hostapd hdi set mac filter feature function test
207 * @tc.type: FUNC
208 * @tc.require:
209 */
210 HWTEST_F(HdfHostapdHostDirectTest, SetMacFilterTest_011, TestSize.Level1)
211 {
212 int32_t rc = g_hostapdObj->SetMacFilter(g_hostapdObj, IFNAME, "34:3a:20:32:fb:31", 1);
213 ASSERT_EQ(rc, HDF_FAILURE);
214 rc = g_hostapdObj->SetMacFilter(g_hostapdObj, nullptr, "34:3a:20:32:fb:31", 2);
215 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
216 rc = g_hostapdObj->SetMacFilter(g_hostapdObj, IFNAME, nullptr, 1);
217 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
218 }
219
220 /**
221 * @tc.name: DelMacFilterTest_012
222 * @tc.desc: Hostapd hdi del mac filter feature function test
223 * @tc.type: FUNC
224 * @tc.require:
225 */
226 HWTEST_F(HdfHostapdHostDirectTest, DelMacFilterTest_012, TestSize.Level1)
227 {
228 int32_t rc = g_hostapdObj->DelMacFilter(g_hostapdObj, IFNAME, "34:3a:20:32:fb:31", 1);
229 ASSERT_EQ(rc, HDF_FAILURE);
230 rc = g_hostapdObj->DelMacFilter(g_hostapdObj, nullptr, "34:3a:20:32:fb:31", 1);
231 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
232 rc = g_hostapdObj->DelMacFilter(g_hostapdObj, IFNAME, nullptr, 1);
233 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
234 }
235
236 /**
237 * @tc.name: GetStaInfosTest_013
238 * @tc.desc: Hostapd hdi get sta infos feature function test
239 * @tc.type: FUNC
240 * @tc.require:
241 */
242 HWTEST_F(HdfHostapdHostDirectTest, GetStaInfosTest_013, TestSize.Level1)
243 {
244 char *buf = (char *)calloc(4096 * 10, sizeof(char));
245 const uint32_t bufLen = 4096*10;
246 const int32_t size = 1024;
247 int32_t rc = g_hostapdObj->GetStaInfos(g_hostapdObj, IFNAME, buf, bufLen, size, 1);
248 ASSERT_EQ(rc, HDF_FAILURE);
249 rc = g_hostapdObj->GetStaInfos(g_hostapdObj, nullptr, buf, bufLen, size, 1);
250 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
251 rc = g_hostapdObj->GetStaInfos(g_hostapdObj, IFNAME, nullptr, bufLen, size, 1);
252 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
253 }
254
255 /**
256 * @tc.name: DisassociateStaTest_014
257 * @tc.desc: Hostapd hdi disassociate sta feature function test
258 * @tc.type: FUNC
259 * @tc.require:
260 */
261 HWTEST_F(HdfHostapdHostDirectTest, DisassociateStaTest_014, TestSize.Level1)
262 {
263 int32_t rc = g_hostapdObj->DisassociateSta(g_hostapdObj, IFNAME, "34:3a:20:32:fb:31", 1);
264 ASSERT_EQ(rc, HDF_FAILURE);
265 rc = g_hostapdObj->DisassociateSta(g_hostapdObj, nullptr, "34:3a:20:32:fb:31", 1);
266 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
267 rc = g_hostapdObj->DisassociateSta(g_hostapdObj, IFNAME, nullptr, 1);
268 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
269 }
270
271 /**
272 * @tc.name: HostApdShellCmdTest_015
273 * @tc.desc: Wifi hdi HostApdShellCmd function test
274 * @tc.type: FUNC
275 * @tc.require:
276 */
277 HWTEST_F(HdfHostapdHostDirectTest, HostApdShellCmdTest_015, TestSize.Level1)
278 {
279 int32_t rc = g_hostapdObj->HostApdShellCmd(g_hostapdObj, IFNAME, "");
280 ASSERT_EQ(rc, HDF_FAILURE);
281 rc = g_hostapdObj->HostApdShellCmd(g_hostapdObj, nullptr, "");
282 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
283 rc = g_hostapdObj->HostApdShellCmd(g_hostapdObj, IFNAME, nullptr);
284 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
285 }
286
287 /**
288 * @tc.name: StartApTest_016
289 * @tc.desc: Wifi hdi StartAp function test
290 * @tc.type: FUNC
291 * @tc.require:
292 */
293 HWTEST_F(HdfHostapdHostDirectTest, StartApTest_016, TestSize.Level1)
294 {
295 int32_t rc = g_hostapdObj->StartAp(g_hostapdObj);
296 ASSERT_EQ(rc, HDF_FAILURE);
297 }
298
299 /**
300 * @tc.name: StartApWithCmdTest_017
301 * @tc.desc: Wifi hdi StartApWithCmd function test
302 * @tc.type: FUNC
303 * @tc.require:
304 */
305 HWTEST_F(HdfHostapdHostDirectTest, StartApWithCmdTest_017, TestSize.Level1)
306 {
307 int32_t rc = g_hostapdObj->StartApWithCmd(g_hostapdObj, IFNAME, 1);
308 ASSERT_EQ(rc, HDF_FAILURE);
309 rc = g_hostapdObj->StartApWithCmd(g_hostapdObj, nullptr, 1);
310 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
311 }
312
313 /**
314 * @tc.name: StopApTest_018
315 * @tc.desc: Wifi hdi StopAp function test
316 * @tc.type: FUNC
317 * @tc.require:
318 */
319 HWTEST_F(HdfHostapdHostDirectTest, StopApTest_018, TestSize.Level1)
320 {
321 int32_t rc = g_hostapdObj->StopAp(g_hostapdObj);
322 ASSERT_EQ(rc, HDF_FAILURE);
323 }
324
325 /**
326 * @tc.name: ReloadApConfigInfoTest_019
327 * @tc.desc: Wifi hdi ReloadApConfigInfo function test
328 * @tc.type: FUNC
329 * @tc.require:
330 */
331 HWTEST_F(HdfHostapdHostDirectTest, ReloadApConfigInfoTest_019, TestSize.Level1)
332 {
333 int32_t rc = g_hostapdObj->ReloadApConfigInfo(g_hostapdObj, IFNAME, 1);
334 ASSERT_EQ(rc, HDF_FAILURE);
335 rc = g_hostapdObj->ReloadApConfigInfo(g_hostapdObj, nullptr, 1);
336 ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
337 }
338 };
339