File indexing completed on 2024-04-28 16:45:11
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 <QtTest> 0010 0011 class LogindTest : public QObject 0012 { 0013 Q_OBJECT 0014 private Q_SLOTS: 0015 void testLockUnlock(); 0016 void testLogindPresent(); 0017 void testRegisterUnregister(); 0018 }; 0019 0020 void LogindTest::testLockUnlock() 0021 { 0022 QScopedPointer<LogindIntegration> logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 0023 QSignalSpy lockSpy(logindIntegration.data(), SIGNAL(requestLock())); 0024 QSignalSpy unlockSpy(logindIntegration.data(), SIGNAL(requestUnlock())); 0025 QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 0026 0027 FakeLogind fakeLogind; 0028 0029 // need to wait till we got the pending reply 0030 QVERIFY(connectedSpy.wait()); 0031 QVERIFY(logindIntegration->isConnected()); 0032 0033 fakeLogind.lock(); 0034 QVERIFY(lockSpy.wait()); 0035 fakeLogind.lock(); 0036 0037 QVERIFY(lockSpy.wait()); 0038 QCOMPARE(lockSpy.count(), 2); 0039 0040 fakeLogind.unlock(); 0041 QVERIFY(unlockSpy.wait()); 0042 QCOMPARE(unlockSpy.count(), 1); 0043 } 0044 0045 void LogindTest::testLogindPresent() 0046 { 0047 QTest::qWait(100); 0048 FakeLogind fakeLogind; 0049 QScopedPointer<LogindIntegration> logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 0050 0051 QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 0052 QVERIFY(connectedSpy.wait()); 0053 QVERIFY(logindIntegration->isConnected()); 0054 0055 QSignalSpy lockSpy(logindIntegration.data(), SIGNAL(requestLock())); 0056 fakeLogind.lock(); 0057 QVERIFY(lockSpy.wait()); 0058 QCOMPARE(lockSpy.count(), 1); 0059 } 0060 0061 void LogindTest::testRegisterUnregister() 0062 { 0063 QTest::qWait(100); 0064 QScopedPointer<FakeLogind> fakeLogind(new FakeLogind(this)); 0065 QScopedPointer<LogindIntegration> logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 0066 0067 // should get connected 0068 QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 0069 QVERIFY(connectedSpy.wait()); 0070 QVERIFY(logindIntegration->isConnected()); 0071 connectedSpy.clear(); 0072 0073 fakeLogind.reset(); 0074 // should no longer be connected 0075 QVERIFY(connectedSpy.wait()); 0076 QVERIFY(!logindIntegration->isConnected()); 0077 connectedSpy.clear(); 0078 0079 fakeLogind.reset(new FakeLogind(this)); 0080 // should be connected again 0081 QVERIFY(connectedSpy.wait()); 0082 QVERIFY(logindIntegration->isConnected()); 0083 } 0084 0085 QTEST_MAIN(LogindTest) 0086 #include "logindtest.moc"