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"