You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libcutefish/network/tests/tst_wifiutils.cpp

89 lines
3.5 KiB
C++

#include "../wifiutils.h"
#include <QTest>
class WifiUtilsTest : public QObject
{
Q_OBJECT
private slots:
void ssidLabels()
{
QCOMPARE(WifiUtils::ssidLabel(QByteArray("Café")), QStringLiteral("Café"));
// GB18030 bytes of "中文", which a zh_CN system tries after UTF-8.
QCOMPARE(WifiUtils::ssidLabel(QByteArray("\xd6\xd0\xce\xc4")), QStringLiteral("中文"));
QCOMPARE(WifiUtils::ssidLabel(QByteArray("Lab\0", 4)), QStringLiteral("Lab"));
QCOMPARE(WifiUtils::ssidLabel(QByteArray("a\nb")), QStringLiteral("a<EFBFBD>b"));
}
void hiddenSsids()
{
QVERIFY(WifiUtils::ssidHidden(QByteArray()));
QVERIFY(WifiUtils::ssidHidden(QByteArray("\0\0\0", 3)));
QVERIFY(WifiUtils::ssidHidden(QByteArray(" ")));
QVERIFY(!WifiUtils::ssidHidden(QByteArray(" ")));
QVERIFY(!WifiUtils::ssidHidden(QByteArray("Home")));
}
void security_data()
{
QTest::addColumn<uint>("capabilities");
QTest::addColumn<uint>("flags");
QTest::addColumn<uint>("wpa");
QTest::addColumn<uint>("rsn");
QTest::addColumn<int>("expected");
// WEP40, WEP104, TKIP, CCMP, WPA and RSN.
const uint caps = 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20;
const uint ccmp = 0x8 | 0x80;
QTest::newRow("open") << caps << 0u << 0u << 0u << int(Enums::NoneSecurity);
QTest::newRow("wep") << caps << 1u << 0u << 0u << int(Enums::StaticWep);
QTest::newRow("wpa2") << caps << 1u << 0u << (ccmp | 0x100) << int(Enums::Wpa2Psk);
QTest::newRow("wpa2/wpa3") << caps << 1u << 0u << (ccmp | 0x100 | 0x400) << int(Enums::SAE);
QTest::newRow("enterprise") << caps << 1u << 0u << (ccmp | 0x200) << int(Enums::Wpa2Eap);
QTest::newRow("owe transition") << caps << 0u << 0u << 0x1000u << int(Enums::OWE);
QTest::newRow("wpa") << caps << 1u << (0x4u | 0x40u | 0x100u) << 0u << int(Enums::WpaPsk);
// A device that reports no capabilities still gets a lock for a secured network.
QTest::newRow("no capabilities") << 0u << 1u << 0u << (ccmp | 0x100) << int(Enums::Wpa2Psk);
}
void security()
{
QFETCH(uint, capabilities);
QFETCH(uint, flags);
QFETCH(uint, wpa);
QFETCH(uint, rsn);
QFETCH(int, expected);
QCOMPARE(int(WifiUtils::security(capabilities, flags, wpa, rsn, 2)), expected);
}
void secrets()
{
QVERIFY(WifiUtils::pskValid(QStringLiteral("12345678")));
QVERIFY(!WifiUtils::pskValid(QStringLiteral("1234567")));
QVERIFY(WifiUtils::pskValid(QString(64, QLatin1Char('a'))));
QVERIFY(!WifiUtils::pskValid(QString(64, QLatin1Char('g'))));
QCOMPARE(WifiUtils::generatedPassword().size(), 12);
QVERIFY(WifiUtils::pskValid(WifiUtils::generatedPassword()));
}
void strength()
{
QCOMPARE(WifiUtils::strengthIcon(0), QStringLiteral("network-wireless-connected-00"));
QCOMPARE(WifiUtils::strengthIcon(33), QStringLiteral("network-wireless-connected-33"));
QCOMPARE(WifiUtils::strengthIcon(34), QStringLiteral("network-wireless-connected-66"));
QCOMPARE(WifiUtils::strengthIcon(90), QStringLiteral("network-wireless-connected-100"));
}
};
int main(int argc, char **argv)
{
// The locale picks the charsets tried after UTF-8.
qputenv("LC_ALL", "zh_CN.UTF-8");
QCoreApplication app(argc, argv);
WifiUtilsTest test;
return QTest::qExec(&test, argc, argv);
}
#include "tst_wifiutils.moc"