@@ -53,6 +53,11 @@ private Q_SLOTS:
53 QDBusConnection::sessionBus());
53 QDBusConnection::sessionBus());
57+ qputenv("TEST_USER", "testuser");
58+ qputenv("TEST_NOPASSWD_USERS", "");
56 void testUnitySessionLogoutRequested_data() {
61 void testUnitySessionLogoutRequested_data() {
57 QTest::addColumn<QString>("method");
62 QTest::addColumn<QString>("method");
58 QTest::addColumn<QString>("signal");
63 QTest::addColumn<QString>("signal");
@@ -138,14 +143,7 @@ private Q_SLOTS:
139 void testUserName() {
144 void testUserName() {
140 DBusUnitySessionService dbusUnitySessionService;
145 DBusUnitySessionService dbusUnitySessionService;
141− QCoreApplication::processEvents(); // to let the service register on DBus
143− QProcess * proc = new QProcess(this);
144− proc->start("id -un", QProcess::ReadOnly);
145− proc->waitForFinished();
146− const QByteArray out = proc->readAll().trimmed();
148− QCOMPARE(dbusUnitySessionService.UserName(), QString::fromUtf8(out));
146+ QCOMPARE(dbusUnitySessionService.UserName(), QString("testuser"));
151 void testRealName() {
149 void testRealName() {
@@ -162,6 +160,35 @@ private Q_SLOTS:
163+ void testCanLock() {
164+ DBusUnitySessionService dbusUnitySessionService;
166+ qputenv("TEST_USER", "testuser");
167+ QVERIFY(dbusUnitySessionService.CanLock());
169+ qputenv("TEST_USER", "guest-abcdef"); // guest-* can't lock
170+ QVERIFY(!dbusUnitySessionService.CanLock());
172+ qputenv("TEST_USER", "testuser");
173+ qputenv("TEST_NOPASSWD_USERS", "testuser"); // nopasswdlogin can't lock
174+ QVERIFY(!dbusUnitySessionService.CanLock());
177+ void testPromptLockRespectsCanLock() {
178+ DBusUnitySessionService dbusUnitySessionService;
180+ QSignalSpy spy(&dbusUnitySessionService, SIGNAL(lockRequested()));
181+ QVERIFY(dbusUnitySessionService.CanLock());
182+ dbusUnitySessionService.PromptLock();
183+ QCOMPARE(spy.count(), 1);
186+ qputenv("TEST_USER", "guest-abcdef");
187+ QVERIFY(!dbusUnitySessionService.CanLock());
188+ dbusUnitySessionService.PromptLock();
189+ QCOMPARE(spy.count(), 0);
166 QDBusInterface *dbusUnitySession;
193 QDBusInterface *dbusUnitySession;