File indexing completed on 2024-03-24 04:02:44

0001 /*
0002     SPDX-FileCopyrightText: 2014 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 "managertest.h"
0008 
0009 #include "manager.h"
0010 #include "wireddevice.h"
0011 
0012 #include "fakenetwork/wireddevice.h"
0013 
0014 #include <QSignalSpy>
0015 #include <QTest>
0016 
0017 void ManagerTest::initTestCase()
0018 {
0019     fakeNetwork = new FakeNetwork();
0020 }
0021 
0022 void ManagerTest::testDevices()
0023 {
0024     WiredDevice *device = new WiredDevice();
0025     /* Device properties */
0026     device->setAutoconnect(true);
0027     device->setCapabilities(3);
0028     device->setDeviceType(1);
0029     device->setDriver(QLatin1String("e1000e"));
0030     device->setDriverVersion(QLatin1String("2.3.2-k"));
0031     device->setFirmwareMissing(false);
0032     device->setInterfaceFlags(NetworkManager::Device::Interfaceflag::Up);
0033     device->setFirmwareVersion(QLatin1String("0.13-3"));
0034     device->setInterface(QLatin1String("em1"));
0035     device->setManaged(true);
0036     device->setUdi(QLatin1String("/sys/devices/pci0000:00/0000:00:19.0/net/em1"));
0037 
0038     /* Wired device properties */
0039     device->setCarrier(true);
0040     device->setHwAddress(QLatin1String("F0:DE:F1:FB:30:C1"));
0041     device->setPermanentHwAddress(QLatin1String("F0:DE:F1:FB:30:C1"));
0042 
0043     QSignalSpy addDeviceSpy(NetworkManager::notifier(), SIGNAL(deviceAdded(QString)));
0044     connect(NetworkManager::notifier(), &NetworkManager::Notifier::deviceAdded, this, &ManagerTest::testDeviceAdded);
0045     fakeNetwork->addDevice(device);
0046     QVERIFY(addDeviceSpy.wait());
0047     QCOMPARE(NetworkManager::networkInterfaces().count(), 1);
0048     QCOMPARE(NetworkManager::networkInterfaces().first()->uni(), addDeviceSpy.at(0).at(0).toString());
0049     const QString addedDevicePath = NetworkManager::networkInterfaces().first()->uni();
0050 
0051     QSignalSpy removeDeviceSpy(NetworkManager::notifier(), SIGNAL(deviceRemoved(QString)));
0052     fakeNetwork->removeDevice(device);
0053     QVERIFY(removeDeviceSpy.wait());
0054     QVERIFY(NetworkManager::networkInterfaces().isEmpty());
0055     QCOMPARE(removeDeviceSpy.at(0).at(0).toString(), addedDevicePath);
0056 
0057     addDeviceSpy.clear();
0058 
0059     fakeNetwork->addDevice(device);
0060     QVERIFY(addDeviceSpy.wait());
0061     QCOMPARE(NetworkManager::networkInterfaces().count(), 1);
0062     QCOMPARE(NetworkManager::networkInterfaces().first()->uni(), addDeviceSpy.at(0).at(0).toString());
0063 
0064     addDeviceSpy.clear();
0065     removeDeviceSpy.clear();
0066 
0067     fakeNetwork->unregisterService();
0068     QTRY_COMPARE(removeDeviceSpy.count(), 1);
0069 
0070     fakeNetwork->registerService();
0071     QTRY_COMPARE(addDeviceSpy.count(), 1);
0072 
0073     // Make sure deviceAdded is emitted only once
0074     addDeviceSpy.wait(100);
0075     QCOMPARE(addDeviceSpy.count(), 1);
0076 
0077     delete device;
0078 }
0079 
0080 void ManagerTest::testDeviceAdded(const QString &dev)
0081 {
0082     NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(dev);
0083 
0084     QCOMPARE(device->autoconnect(), true);
0085     QCOMPARE(device->capabilities(), 3);
0086     QCOMPARE(device->type(), NetworkManager::Device::Ethernet);
0087     QCOMPARE(device->driver(), QLatin1String("e1000e"));
0088     QCOMPARE(device->driverVersion(), QLatin1String("2.3.2-k"));
0089     QCOMPARE(device->firmwareMissing(), false);
0090     QCOMPARE(device->firmwareVersion(), QLatin1String("0.13-3"));
0091     QCOMPARE(device->interfaceName(), QLatin1String("em1"));
0092     QCOMPARE(device->interfaceFlags(), NetworkManager::Device::Interfaceflag::Up);
0093     QCOMPARE(device->managed(), true);
0094     QCOMPARE(device->udi(), QLatin1String("/sys/devices/pci0000:00/0000:00:19.0/net/em1"));
0095 
0096     NetworkManager::WiredDevice::Ptr wiredDevice = device.objectCast<NetworkManager::WiredDevice>();
0097 
0098     QCOMPARE(wiredDevice->carrier(), true);
0099     QCOMPARE(wiredDevice->hardwareAddress(), QLatin1String("F0:DE:F1:FB:30:C1"));
0100     QCOMPARE(wiredDevice->permanentHardwareAddress(), QLatin1String("F0:DE:F1:FB:30:C1"));
0101 }
0102 
0103 void ManagerTest::testManager()
0104 {
0105     QCOMPARE(NetworkManager::connectivity(), NetworkManager::NoConnectivity);
0106     //     QCOMPARE(NetworkManager::status(), NetworkManager::Disconnected);
0107     QCOMPARE(NetworkManager::version(), QLatin1String("0.9.10.0"));
0108 
0109     QSignalSpy wirelessEnabledChanged(NetworkManager::notifier(), SIGNAL(wirelessEnabledChanged(bool)));
0110     QCOMPARE(NetworkManager::isWirelessEnabled(), true);
0111     fakeNetwork->setWirelessEnabled(false);
0112     QVERIFY(wirelessEnabledChanged.wait());
0113     QCOMPARE(wirelessEnabledChanged.count(), 1);
0114     QVERIFY(wirelessEnabledChanged.at(0).at(0).toBool() == false);
0115     QCOMPARE(NetworkManager::isWirelessEnabled(), false);
0116 
0117     QSignalSpy wirelessHwEnabledChanged(NetworkManager::notifier(), SIGNAL(wirelessHardwareEnabledChanged(bool)));
0118     QCOMPARE(NetworkManager::isWirelessHardwareEnabled(), true);
0119     fakeNetwork->setWirelessHardwareEnabled(false);
0120     QVERIFY(wirelessHwEnabledChanged.wait());
0121     QCOMPARE(wirelessHwEnabledChanged.count(), 1);
0122     QVERIFY(wirelessHwEnabledChanged.at(0).at(0).toBool() == false);
0123     QCOMPARE(NetworkManager::isWirelessHardwareEnabled(), false);
0124 
0125     QSignalSpy wimaxEnabledChanged(NetworkManager::notifier(), SIGNAL(wimaxEnabledChanged(bool)));
0126     QCOMPARE(NetworkManager::isWimaxEnabled(), true);
0127     fakeNetwork->setWimaxEnabled(false);
0128     QVERIFY(wimaxEnabledChanged.wait());
0129     QCOMPARE(wimaxEnabledChanged.count(), 1);
0130     QVERIFY(wimaxEnabledChanged.at(0).at(0).toBool() == false);
0131     QCOMPARE(NetworkManager::isWimaxEnabled(), false);
0132 
0133     QSignalSpy wimaxHwEnabledChanged(NetworkManager::notifier(), SIGNAL(wimaxHardwareEnabledChanged(bool)));
0134     QCOMPARE(NetworkManager::isWimaxHardwareEnabled(), true);
0135     fakeNetwork->setWimaxHardwareEnabled(false);
0136     QVERIFY(wimaxHwEnabledChanged.wait());
0137     QCOMPARE(wimaxHwEnabledChanged.count(), 1);
0138     QVERIFY(wimaxHwEnabledChanged.at(0).at(0).toBool() == false);
0139     QCOMPARE(NetworkManager::isWimaxHardwareEnabled(), false);
0140 
0141     QSignalSpy wwanEnabledChanged(NetworkManager::notifier(), SIGNAL(wwanEnabledChanged(bool)));
0142     QCOMPARE(NetworkManager::isWwanEnabled(), true);
0143     fakeNetwork->setWwanEnabled(false);
0144     QVERIFY(wwanEnabledChanged.wait());
0145     QCOMPARE(wwanEnabledChanged.count(), 1);
0146     QVERIFY(wwanEnabledChanged.at(0).at(0).toBool() == false);
0147     QCOMPARE(NetworkManager::isWwanEnabled(), false);
0148 
0149     // We make it here, so we can set all values back for futher testing
0150     fakeNetwork->setWirelessEnabled(true);
0151     fakeNetwork->setWirelessHardwareEnabled(true);
0152     fakeNetwork->setWimaxEnabled(true);
0153     fakeNetwork->setWimaxHardwareEnabled(true);
0154     fakeNetwork->setWwanEnabled(true);
0155 }
0156 
0157 QTEST_MAIN(ManagerTest)
0158 
0159 #include "moc_managertest.cpp"