File indexing completed on 2024-04-21 03:59:43

0001 /*
0002     SPDX-FileCopyrightText: 2015 Jan Grulich <jgrulich@redhat.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "bearerpropertiestest.h"
0008 
0009 #include "generictypes.h"
0010 #include "manager.h"
0011 #include "modem.h"
0012 
0013 #include "fakemodem/modem.h"
0014 
0015 #include <QSignalSpy>
0016 #include <QTest>
0017 
0018 void BearerPropertiesTest::initTestCase()
0019 {
0020     fakeModem = new FakeModem();
0021 
0022     modem = new Modem();
0023     modem->setAccessTechnologies(16);
0024     modem->SetCurrentBands({0});
0025     modem->SetCurrentCapabilities(4);
0026     modem->SetCurrentModes({MM_MODEM_MODE_ANY, MM_MODEM_MODE_NONE});
0027     modem->setDevice(QLatin1String("/sys/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2"));
0028     modem->setDeviceIdentifier(QLatin1String("1c435eb6d74494b5f78d7221e2c5ae9ec526a981"));
0029     modem->setDrivers({QLatin1String("option1")});
0030     modem->setEquipmentIdentifier(QLatin1String("353475021085110"));
0031     modem->setManufacturer(QLatin1String("huawei"));
0032     modem->setMaxActiveBearers(1);
0033     modem->setMaxBearers(1);
0034     modem->setModel(QLatin1String("K2540"));
0035     // modem->setOwnNumbers();
0036     modem->setPlugin(QLatin1String("Huawei"));
0037     modem->setPorts({{QLatin1String("ttyUSB0"), MM_MODEM_PORT_TYPE_AT},
0038                      {QLatin1String("ttyUSB1"), MM_MODEM_PORT_TYPE_QCDM},
0039                      {QLatin1String("ttyUSB2"), MM_MODEM_PORT_TYPE_AT}});
0040     modem->SetPowerState(3);
0041     modem->setPrimaryPort(QLatin1String("ttyUSB2"));
0042     modem->setRevision(QLatin1String("11.001.05.00.11"));
0043     modem->setSignalQuality({93, true});
0044     modem->setSim(QDBusObjectPath("/org/kde/fakemodem/SIM/1"));
0045     modem->setState(8);
0046     modem->setStateFailedReason(0);
0047     modem->setSupportedBands({0});
0048     modem->setSupportedCapabilities({4});
0049     modem->setSupportedIpFamilies(3);
0050     ModemManager::SupportedModesType supportedModes;
0051     ModemManager::CurrentModesType supportedMode1 = {MM_MODEM_MODE_4G & MM_MODEM_MODE_3G & MM_MODEM_MODE_2G, MM_MODEM_MODE_NONE};
0052     ModemManager::CurrentModesType supportedMode2 = {MM_MODEM_MODE_4G & MM_MODEM_MODE_3G & MM_MODEM_MODE_2G, MM_MODEM_MODE_2G};
0053     ModemManager::CurrentModesType supportedMode3 = {MM_MODEM_MODE_4G & MM_MODEM_MODE_3G & MM_MODEM_MODE_2G, MM_MODEM_MODE_3G};
0054     supportedModes << supportedMode1 << supportedMode2 << supportedMode3;
0055     modem->setSupportedModes(supportedModes);
0056     modem->setUnlockRequired(1);
0057     modem->setUnlockRetries({{MM_MODEM_LOCK_SIM_PIN, 3}, {MM_MODEM_LOCK_SIM_PIN2, 3}, {MM_MODEM_LOCK_SIM_PUK, 10}, {MM_MODEM_LOCK_SIM_PUK2, 10}});
0058 
0059     QSignalSpy addModemSpy(ModemManager::notifier(), SIGNAL(modemAdded(QString)));
0060     fakeModem->addModem(modem);
0061     QVERIFY(addModemSpy.wait());
0062 
0063     bearer = new Bearer();
0064     // We need to set some default values
0065     bearer->setConnected(false);
0066     bearer->setInterface(QLatin1String("ttyUSB0"));
0067     bearer->setIp4Config({{QLatin1String("method"), MM_BEARER_IP_METHOD_PPP}});
0068     bearer->setIp6Config({{QLatin1String("method"), MM_BEARER_IP_METHOD_UNKNOWN}});
0069     bearer->setIpTimeout(20);
0070     bearer->setProperties({{QLatin1String("apn"), QLatin1String("internet")}, {QLatin1String("ip-type"), 1}, {QLatin1String("number"), QLatin1String("*99#")}});
0071     bearer->setSuspended(false);
0072 #if MM_CHECK_VERSION(1, 2, 0)
0073     ModemManager::Modem::Ptr modemInterface = ModemManager::modemDevices().constFirst()->modemInterface();
0074     QCOMPARE(modemInterface->listBearers().count(), 0);
0075     QSignalSpy bearerAddedSpy(modemInterface.data(), SIGNAL(bearerAdded(QString)));
0076     fakeModem->addBearer(bearer);
0077     QVERIFY(bearerAddedSpy.wait());
0078 #endif
0079 }
0080 
0081 #if MM_CHECK_VERSION(1, 2, 0)
0082 void BearerPropertiesTest::testBearerProperties()
0083 {
0084     ModemManager::Modem::Ptr modemInterface = ModemManager::modemDevices().first()->modemInterface();
0085     ModemManager::Bearer::Ptr modemBearer = modemInterface->listBearers().first();
0086 
0087     bearer->setConnected(true);
0088     QSignalSpy connectedChangedSpy(modemBearer.data(), SIGNAL(connectedChanged(bool)));
0089     QVERIFY(connectedChangedSpy.wait());
0090     QCOMPARE(modemBearer->isConnected(), connectedChangedSpy.at(0).at(0).toBool());
0091 
0092     bearer->setInterface(QLatin1String("ttyUSB1"));
0093     QSignalSpy interfaceChangedSpy(modemBearer.data(), SIGNAL(interfaceChanged(QString)));
0094     QVERIFY(interfaceChangedSpy.wait());
0095     QCOMPARE(modemBearer->interface(), interfaceChangedSpy.at(0).at(0).toString());
0096 
0097     bearer->setIp4Config({{QLatin1String("method"), MM_BEARER_IP_METHOD_UNKNOWN}});
0098     QSignalSpy ip4ConfigChangedSpy(modemBearer.data(), SIGNAL(ip4ConfigChanged(ModemManager::IpConfig)));
0099     QVERIFY(ip4ConfigChangedSpy.wait());
0100     QCOMPARE(modemBearer->ip4Config().method(), ip4ConfigChangedSpy.at(0).at(0).value<ModemManager::IpConfig>().method());
0101 
0102     bearer->setIp6Config({{QLatin1String("method"), MM_BEARER_IP_METHOD_PPP}});
0103     QSignalSpy ip6ConfigChangedSpy(modemBearer.data(), SIGNAL(ip6ConfigChanged(ModemManager::IpConfig)));
0104     QVERIFY(ip6ConfigChangedSpy.wait());
0105     QCOMPARE(modemBearer->ip6Config().method(), ip6ConfigChangedSpy.at(0).at(0).value<ModemManager::IpConfig>().method());
0106 
0107     bearer->setIpTimeout(25);
0108     QSignalSpy ipTimeoutChangedSpy(modemBearer.data(), SIGNAL(ipTimeoutChanged(uint)));
0109     QVERIFY(ipTimeoutChangedSpy.wait());
0110     QCOMPARE(modemBearer->ipTimeout(), ipTimeoutChangedSpy.at(0).at(0).toUInt());
0111 
0112     bearer->setProperties(
0113         {{QLatin1String("apn"), QLatin1String("internet2")}, {QLatin1String("ip-type"), 2}, {QLatin1String("number"), QLatin1String("*98#")}});
0114     QSignalSpy propertiesChangedSpy(modemBearer.data(), SIGNAL(propertiesChanged(QVariantMap)));
0115     QVERIFY(propertiesChangedSpy.wait());
0116     QVERIFY(modemBearer->properties().contains(QLatin1String("apn")));
0117     QVERIFY(modemBearer->properties().contains(QLatin1String("number")));
0118     QVERIFY(modemBearer->properties().contains(QLatin1String("ip-type")));
0119     QCOMPARE(modemBearer->properties().value(QLatin1String("apn")).toString(), QLatin1String("internet2"));
0120     QCOMPARE(modemBearer->properties().value(QLatin1String("ip-type")).toUInt(), (uint)2);
0121     QCOMPARE(modemBearer->properties().value(QLatin1String("number")).toString(), QLatin1String("*98#"));
0122 
0123     bearer->setSuspended(true);
0124     QSignalSpy suspendedChangedSpy(modemBearer.data(), SIGNAL(suspendedChanged(bool)));
0125     QVERIFY(suspendedChangedSpy.wait());
0126     QCOMPARE(modemBearer->isSuspended(), suspendedChangedSpy.at(0).at(0).toBool());
0127 }
0128 #endif
0129 QTEST_MAIN(BearerPropertiesTest)
0130 
0131 #include "moc_bearerpropertiestest.cpp"