1 /*
2 * Copyright (C) 2021 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 "wifi_hal_hostapd_test.h"
16 #include "securec.h"
17 #include "wifi_log.h"
18 #include "mock_wpa_ctrl.h"
19 #include "wifi_hal_crpc_server.h"
20 #include "wifi_hal_common_func.h"
21
22 using namespace testing::ext;
23
24 namespace OHOS {
25 namespace Wifi {
26 static std::string g_rpcSockPath = "./unix_sock_test.sock";
27 WifiHostapdHalDevice *WifiHalHostapdTest::mInterface = nullptr;
28 RpcServer *WifiHalHostapdTest::mServer = nullptr;
29
SetUpTestCase()30 void WifiHalHostapdTest::SetUpTestCase()
31 {
32 if (access(g_rpcSockPath.c_str(), 0) == 0) {
33 unlink(g_rpcSockPath.c_str());
34 }
35 mServer = CreateRpcServer(g_rpcSockPath.c_str());
36 if (mServer == nullptr) {
37 printf("Init rpc server failed!");
38 exit(-1);
39 }
40 InitCallbackMsg();
41 SetRpcServerInited(mServer);
42 MockInitApSupportedCmd();
43 mInterface = GetWifiHostapdDev(0);
44 }
45
TearDownTestCase()46 void WifiHalHostapdTest::TearDownTestCase()
47 {
48 sleep(1);
49 ReleaseHostapdDev(0);
50 if (mServer != nullptr) {
51 ReleaseRpcServer(mServer);
52 mServer = nullptr;
53 }
54 SetRpcServerInited(NULL);
55 ReleaseCallbackMsg();
56 }
57
58 HWTEST_F(WifiHalHostapdTest, EnableApTest, TestSize.Level1)
59 {
60 MockEraseSupportedCmd("ENABLE");
61 int ret = mInterface->enableAp(0);
62 EXPECT_TRUE(ret != 0);
63 MockSetWpaExpectCmdResponse("ENABLE", "OK");
64 ret = mInterface->enableAp(0);
65 EXPECT_TRUE(ret == 0);
66 MockWpaCallback(mInterface->ctrlConn, "<3>AP-ENABLED \n");
67 }
68
69 HWTEST_F(WifiHalHostapdTest, SetApInfoTest, TestSize.Level1)
70 {
71 EXPECT_TRUE(mInterface->setApInfo(nullptr, 0) < 0);
72 HostapdConfig conf;
73 ASSERT_TRUE(memset_s(&conf, sizeof(conf), 0, sizeof(conf)) == EOK);
74 conf.securityType = WPA_PSK;
75 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) < 0);
76 StrSafeCopy(conf.preSharedKey, sizeof(conf.preSharedKey), "1234567");
77 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) < 0);
78 StrSafeCopy(conf.preSharedKey, sizeof(conf.preSharedKey), "12345678");
79 conf.preSharedKeyLen = strlen(conf.preSharedKey);
80 EXPECT_NE(mInterface->setApInfo(&conf, 0), 1);
81 conf.securityType = WPA2_PSK;
82 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) == 0);
83 conf.securityType = NONE;
84 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) == 0);
85 conf.securityType = IEEE8021X;
86 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) < 0);
87 conf.securityType = NONE;
88 conf.band = AP_2GHZ_BAND;
89 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) == 0);
90 conf.band = AP_5GHZ_BAND;
91 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) == 0);
92 conf.band = -1;
93 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) < 0);
94 conf.band = AP_DFS_BAND;
95 EXPECT_TRUE(mInterface->setApInfo(&conf, 0) < 0);
96 }
97
98 HWTEST_F(WifiHalHostapdTest, DisableApTest, TestSize.Level1)
99 {
100 MockEraseSupportedCmd("DISABLE");
101 int ret = mInterface->disableAp(0);
102 EXPECT_TRUE(ret != 0);
103 MockSetWpaExpectCmdResponse("DISABLE", "OK");
104 ret = mInterface->disableAp(0);
105 EXPECT_TRUE(ret == 0);
106 MockWpaCallback(mInterface->ctrlConn, "<3>AP-DISABLED \n");
107 }
108
109 HWTEST_F(WifiHalHostapdTest, AddBlockListTest, TestSize.Level1)
110 {
111 EXPECT_TRUE(mInterface->addBlocklist(nullptr, 0) < 0);
112 EXPECT_TRUE(mInterface->addBlocklist("00:00:00:00:00:00", 0) == 0);
113 MockSetWpaExpectCmdResponse("DENY_ACL", "UNKNOWN COMMAND");
114 EXPECT_TRUE(mInterface->addBlocklist("00:00:00:00:00:00", 0) == 0);
115 MockSetWpaExpectCmdResponse("DENY_ACL", "OK");
116 }
117
118 HWTEST_F(WifiHalHostapdTest, DelBlockListTest, TestSize.Level1)
119 {
120 EXPECT_TRUE(mInterface->delBlocklist(nullptr, 0) < 0);
121 EXPECT_TRUE(mInterface->delBlocklist("00:00:00:00:00:00", 0) == 0);
122 MockSetWpaExpectCmdResponse("DENY_ACL", "UNKNOWN COMMAND");
123 EXPECT_TRUE(mInterface->delBlocklist("00:00:00:00:00:00", 0) == 0);
124 MockSetWpaExpectCmdResponse("DENY_ACL", "OK");
125 }
126
127 HWTEST_F(WifiHalHostapdTest, GetApStatusTest, TestSize.Level1)
128 {
129 EXPECT_TRUE(mInterface->status(nullptr, 0) < 0);
130 StatusInfo info;
131 ASSERT_TRUE(memset_s(&info, sizeof(info), 0, sizeof(info)) == EOK);
132 EXPECT_TRUE(mInterface->status(&info, 0) == 0);
133 char buf[BUFSIZE_REQUEST] = "test1=adsgdjks\nteset2=gflsdfis\ntest3="
134 "gfdklse\nstate=disable\ngfdsd=gdhjs\n";
135 MockSetWpaExpectCmdResponse("STATUS", buf);
136 EXPECT_TRUE(mInterface->status(&info, 0) == 0);
137 EXPECT_TRUE(strcmp(info.state, "disable") == 0);
138 }
139
140 HWTEST_F(WifiHalHostapdTest, HostapdCliCmdListStaTest, TestSize.Level1)
141 {
142 EXPECT_TRUE(mInterface->showConnectedDevList(nullptr, 0, 0) < 0);
143 char buff[256] = {0};
144 int size = 256;
145 MockEraseSupportedCmd("STA-FIRST");
146 EXPECT_TRUE(mInterface->showConnectedDevList(buff, size, 0) < 0);
147 MockSetWpaExpectCmdResponse("STA-FIRST", "00:00:00:00:00:00");
148 MockSetWpaExpectCmdResponse("STA-NEXT", "FAIL");
149 EXPECT_TRUE(mInterface->showConnectedDevList(buff, size, 0) == 0);
150 EXPECT_TRUE(strcmp(buff, ",00:00:00:00:00:00") == 0);
151 }
152
153 HWTEST_F(WifiHalHostapdTest, ReloadApConfigInfoTest, TestSize.Level1)
154 {
155 MockEraseSupportedCmd("RELOAD");
156 int ret = mInterface->reloadApConfigInfo(0);
157 EXPECT_TRUE(ret != 0);
158 MockSetWpaExpectCmdResponse("RELOAD", "OK");
159 ret = mInterface->reloadApConfigInfo(0);
160 EXPECT_TRUE(ret == 0);
161 }
162
163 HWTEST_F(WifiHalHostapdTest, DisConnectedDevTest, TestSize.Level1)
164 {
165 MockWpaCallback(mInterface->ctrlConn, "<3>AP-STA-CONNECTED 00:00:00:00:00:00\n");
166 EXPECT_TRUE(mInterface->disConnectedDev(nullptr, 0) < 0);
167 MockEraseSupportedCmd("DISASSOCIATE");
168 int ret = mInterface->disConnectedDev("00:00:00:00:00:00", 0);
169 EXPECT_TRUE(ret != 0);
170 MockSetWpaExpectCmdResponse("DISASSOCIATE", "OK");
171 ret = mInterface->disConnectedDev("00:00:00:00:00:00", 0);
172 EXPECT_TRUE(ret == 0);
173 MockWpaCallback(mInterface->ctrlConn, "<3>AP-STA-DISCONNECTED 00:00:00:00:00:00\n");
174 }
175
176 HWTEST_F(WifiHalHostapdTest, SetCountryCodeTest, TestSize.Level1)
177 {
178 EXPECT_TRUE(mInterface->setCountryCode(nullptr, 0) < 0);
179 MockEraseSupportedCmd("SET");
180 int ret = mInterface->setCountryCode("CN", 0);
181 EXPECT_TRUE(ret != 0);
182 MockSetWpaExpectCmdResponse("SET", "OK");
183 ret = mInterface->setCountryCode("CN", 0);
184 EXPECT_TRUE(ret == 0);
185 }
186 } // namespace Wifi
187 } // namespace OHOS