* Copyright (c) 2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <gtest/gtest.h>
#include <servmgr_hdi.h>
#include <osal_mem.h>
#include "v1_0/ihostapd_interface.h"
#include "hostapd_callback_impl.h"
#include <securec.h>
#define IFNAME "wlan0"
#define HDF_LOG_TAG service_manager_test
using namespace testing::ext;
namespace HdiHostapdDirectTest {
const char *g_hdiServiceNameHostapd = "hostapd_interface_service";
class HdfHostapdHostDirectTest : public testing::Test {
public:
static void SetUpTestCase();
static void TearDownTestCase();
void SetUp();
void TearDown();
};
static struct IHostapdInterface *g_hostapdObj = nullptr;
struct IHostapdCallback *g_hostapdCallbackObj = nullptr;
void HdfHostapdHostDirectTest::SetUpTestCase()
{
g_hostapdObj = IHostapdInterfaceGetInstance(g_hdiServiceNameHostapd, true);
g_hostapdCallbackObj = HostapdCallbackServiceGet();
ASSERT_TRUE(g_hostapdObj != nullptr);
ASSERT_TRUE(g_hostapdCallbackObj != nullptr);
printf("hostapd_interface_service start successful.");
}
void HdfHostapdHostDirectTest::TearDownTestCase()
{
IHostapdInterfaceReleaseInstance(g_hdiServiceNameHostapd, g_hostapdObj, true);
HostapdCallbackServiceRelease(g_hostapdCallbackObj);
printf("hostapd_interface_service stop successful.");
}
void HdfHostapdHostDirectTest::SetUp()
{
}
void HdfHostapdHostDirectTest::TearDown()
{
}
* @tc.name: EnableApTest_001
* @tc.desc: Hostapd enable ap feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, EnableApTest_001, TestSize.Level1)
{
int32_t rc = g_hostapdObj->EnableAp(g_hostapdObj, IFNAME, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->EnableAp(g_hostapdObj, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: DisableApTest_002
* @tc.desc: Hostapd disable ap feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, DisableApTest_002, TestSize.Level1)
{
int32_t rc = g_hostapdObj->DisableAp(g_hostapdObj, IFNAME, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->DisableAp(g_hostapdObj, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetApPasswdTest_003
* @tc.desc: Hostapd hdi set ap passwd feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetApPasswdTest_003, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetApPasswd(g_hostapdObj, IFNAME, "123123123", 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetApPasswd(g_hostapdObj, nullptr, "123123123", 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
rc = g_hostapdObj->SetApPasswd(g_hostapdObj, IFNAME, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetApNameTest_004
* @tc.desc: Hostapd hdi set ap name feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetApNameTest_004, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetApName(g_hostapdObj, IFNAME, "SFG001", 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetApName(g_hostapdObj, nullptr, "SFG001", 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
rc = g_hostapdObj->SetApName(g_hostapdObj, IFNAME, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetApBandTest_006
* @tc.desc: Hostapd hdi set ap band feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetApBandTest_006, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetApBand(g_hostapdObj, IFNAME, 6, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetApBand(g_hostapdObj, nullptr, 1, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetAp80211nTest_007
* @tc.desc: Hostapd hdi set ap 80211n feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetAp80211nTest_007, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetAp80211n(g_hostapdObj, IFNAME, 1, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetAp80211n(g_hostapdObj, nullptr, 1, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetApWmmTest_008
* @tc.desc: Hostapd hdi set ap Wmm feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetApWmmTest_008, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetApWmm(g_hostapdObj, IFNAME, 1, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetApWmm(g_hostapdObj, nullptr, 1, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetApChannelTest_009
* @tc.desc: Hostapd hdi set ap channel feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetApChannelTest_009, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetApChannel(g_hostapdObj, IFNAME, 6, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetApChannel(g_hostapdObj, nullptr, 6, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetApMaxConnTest_010
* @tc.desc: Hostapd hdi set ap MaxConn feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetApMaxConnTest_010, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetApMaxConn(g_hostapdObj, IFNAME, 3, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetApMaxConn(g_hostapdObj, nullptr, 3, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: SetMacFilterTest_011
* @tc.desc: Hostapd hdi set mac filter feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, SetMacFilterTest_011, TestSize.Level1)
{
int32_t rc = g_hostapdObj->SetMacFilter(g_hostapdObj, IFNAME, "34:3a:20:32:fb:31", 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->SetMacFilter(g_hostapdObj, nullptr, "34:3a:20:32:fb:31", 2);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
rc = g_hostapdObj->SetMacFilter(g_hostapdObj, IFNAME, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: DelMacFilterTest_012
* @tc.desc: Hostapd hdi del mac filter feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, DelMacFilterTest_012, TestSize.Level1)
{
int32_t rc = g_hostapdObj->DelMacFilter(g_hostapdObj, IFNAME, "34:3a:20:32:fb:31", 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->DelMacFilter(g_hostapdObj, nullptr, "34:3a:20:32:fb:31", 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
rc = g_hostapdObj->DelMacFilter(g_hostapdObj, IFNAME, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: GetStaInfosTest_013
* @tc.desc: Hostapd hdi get sta infos feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, GetStaInfosTest_013, TestSize.Level1)
{
char *buf = (char *)calloc(4096 * 10, sizeof(char));
const uint32_t bufLen = 4096*10;
const int32_t size = 1024;
int32_t rc = g_hostapdObj->GetStaInfos(g_hostapdObj, IFNAME, buf, bufLen, size, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->GetStaInfos(g_hostapdObj, nullptr, buf, bufLen, size, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
rc = g_hostapdObj->GetStaInfos(g_hostapdObj, IFNAME, nullptr, bufLen, size, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: DisassociateStaTest_014
* @tc.desc: Hostapd hdi disassociate sta feature function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, DisassociateStaTest_014, TestSize.Level1)
{
int32_t rc = g_hostapdObj->DisassociateSta(g_hostapdObj, IFNAME, "34:3a:20:32:fb:31", 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->DisassociateSta(g_hostapdObj, nullptr, "34:3a:20:32:fb:31", 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
rc = g_hostapdObj->DisassociateSta(g_hostapdObj, IFNAME, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: HostApdShellCmdTest_015
* @tc.desc: Wifi hdi HostApdShellCmd function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, HostApdShellCmdTest_015, TestSize.Level1)
{
int32_t rc = g_hostapdObj->HostApdShellCmd(g_hostapdObj, IFNAME, "");
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->HostApdShellCmd(g_hostapdObj, nullptr, "");
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
rc = g_hostapdObj->HostApdShellCmd(g_hostapdObj, IFNAME, nullptr);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: StartApTest_016
* @tc.desc: Wifi hdi StartAp function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, StartApTest_016, TestSize.Level1)
{
int32_t rc = g_hostapdObj->StartAp(g_hostapdObj);
ASSERT_EQ(rc, HDF_FAILURE);
}
* @tc.name: StartApWithCmdTest_017
* @tc.desc: Wifi hdi StartApWithCmd function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, StartApWithCmdTest_017, TestSize.Level1)
{
int32_t rc = g_hostapdObj->StartApWithCmd(g_hostapdObj, IFNAME, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->StartApWithCmd(g_hostapdObj, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
* @tc.name: StopApTest_018
* @tc.desc: Wifi hdi StopAp function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, StopApTest_018, TestSize.Level1)
{
int32_t rc = g_hostapdObj->StopAp(g_hostapdObj);
ASSERT_EQ(rc, HDF_FAILURE);
}
* @tc.name: ReloadApConfigInfoTest_019
* @tc.desc: Wifi hdi ReloadApConfigInfo function test
* @tc.type: FUNC
* @tc.require:
*/
HWTEST_F(HdfHostapdHostDirectTest, ReloadApConfigInfoTest_019, TestSize.Level1)
{
int32_t rc = g_hostapdObj->ReloadApConfigInfo(g_hostapdObj, IFNAME, 1);
ASSERT_EQ(rc, HDF_FAILURE);
rc = g_hostapdObj->ReloadApConfigInfo(g_hostapdObj, nullptr, 1);
ASSERT_EQ(rc, HDF_ERR_INVALID_PARAM);
}
};