File indexing completed on 2024-04-21 05:27:32
0001 /* 0002 SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "../logind.h" 0007 #include "fakelogind.h" 0008 // Qt 0009 #include <QProcess> 0010 #include <QSignalSpy> 0011 #include <QTest> 0012 0013 class LogindTest : public QObject 0014 { 0015 Q_OBJECT 0016 private Q_SLOTS: 0017 void testLockUnlock(); 0018 void testLogindPresent(); 0019 void testRegisterUnregister(); 0020 }; 0021 0022 void LogindTest::testLockUnlock() 0023 { 0024 QScopedPointer<LogindIntegration> logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 0025 QSignalSpy lockSpy(logindIntegration.data(), SIGNAL(requestLock())); 0026 QSignalSpy unlockSpy(logindIntegration.data(), SIGNAL(requestUnlock())); 0027 QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 0028 0029 FakeLogind fakeLogind; 0030 0031 // need to wait till we got the pending reply 0032 QVERIFY(connectedSpy.wait()); 0033 QVERIFY(logindIntegration->isConnected()); 0034 0035 fakeLogind.lock(); 0036 QVERIFY(lockSpy.wait()); 0037 fakeLogind.lock(); 0038 0039 QVERIFY(lockSpy.wait()); 0040 QCOMPARE(lockSpy.count(), 2); 0041 0042 fakeLogind.unlock(); 0043 QVERIFY(unlockSpy.wait()); 0044 QCOMPARE(unlockSpy.count(), 1); 0045 } 0046 0047 void LogindTest::testLogindPresent() 0048 { 0049 QTest::qWait(100); 0050 FakeLogind fakeLogind; 0051 QScopedPointer<LogindIntegration> logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 0052 0053 QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 0054 QVERIFY(connectedSpy.wait()); 0055 QVERIFY(logindIntegration->isConnected()); 0056 0057 QSignalSpy lockSpy(logindIntegration.data(), SIGNAL(requestLock())); 0058 fakeLogind.lock(); 0059 QVERIFY(lockSpy.wait()); 0060 QCOMPARE(lockSpy.count(), 1); 0061 } 0062 0063 void LogindTest::testRegisterUnregister() 0064 { 0065 QTest::qWait(100); 0066 QScopedPointer<FakeLogind> fakeLogind(new FakeLogind(this)); 0067 QScopedPointer<LogindIntegration> logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 0068 0069 // should get connected 0070 QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 0071 QVERIFY(connectedSpy.wait()); 0072 QVERIFY(logindIntegration->isConnected()); 0073 connectedSpy.clear(); 0074 0075 fakeLogind.reset(); 0076 // should no longer be connected 0077 QVERIFY(connectedSpy.wait()); 0078 QVERIFY(!logindIntegration->isConnected()); 0079 connectedSpy.clear(); 0080 0081 fakeLogind.reset(new FakeLogind(this)); 0082 // should be connected again 0083 QVERIFY(connectedSpy.wait()); 0084 QVERIFY(logindIntegration->isConnected()); 0085 } 0086 0087 QTEST_MAIN(LogindTest) 0088 #include "logindtest.moc"