• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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