@@ -53,6 +53,11 @@ private Q_SLOTS:
5353 QDBusConnection::sessionBus());
5454 }
5555
56+ void init() {
57+ qputenv("TEST_USER", "testuser");
58+ qputenv("TEST_NOPASSWD_USERS", "");
59+ }
60+
5661 void testUnitySessionLogoutRequested_data() {
5762 QTest::addColumn<QString>("method");
5863 QTest::addColumn<QString>("signal");
@@ -230,14 +235,7 @@ private Q_SLOTS:
230235
231236 void testUserName() {
232237 DBusUnitySessionService dbusUnitySessionService;
233− QCoreApplication::processEvents(); // to let the service register on DBus
234−
235− QProcess * proc = new QProcess(this);
236− proc->start("id -un", QProcess::ReadOnly);
237− proc->waitForFinished();
238− const QByteArray out = proc->readAll().trimmed();
239−
240− QCOMPARE(dbusUnitySessionService.UserName(), QString::fromUtf8(out));
238+ QCOMPARE(dbusUnitySessionService.UserName(), QString("testuser"));
241239 }
242240
243241 void testRealName() {
@@ -254,6 +252,35 @@ private Q_SLOTS:
254252 }
255253 }
256254
255+ void testCanLock() {
256+ DBusUnitySessionService dbusUnitySessionService;
257+
258+ qputenv("TEST_USER", "testuser");
259+ QVERIFY(dbusUnitySessionService.CanLock());
260+
261+ qputenv("TEST_USER", "guest-abcdef"); // guest-* can't lock
262+ QVERIFY(!dbusUnitySessionService.CanLock());
263+
264+ qputenv("TEST_USER", "testuser");
265+ qputenv("TEST_NOPASSWD_USERS", "testuser"); // nopasswdlogin can't lock
266+ QVERIFY(!dbusUnitySessionService.CanLock());
267+ }
268+
269+ void testPromptLockRespectsCanLock() {
270+ DBusUnitySessionService dbusUnitySessionService;
271+
272+ QSignalSpy spy(&dbusUnitySessionService, SIGNAL(lockRequested()));
273+ QVERIFY(dbusUnitySessionService.CanLock());
274+ dbusUnitySessionService.PromptLock();
275+ QCOMPARE(spy.count(), 1);
276+
277+ spy.clear();
278+ qputenv("TEST_USER", "guest-abcdef");
279+ QVERIFY(!dbusUnitySessionService.CanLock());
280+ dbusUnitySessionService.PromptLock();
281+ QCOMPARE(spy.count(), 0);
282+ }
283+
257284private:
258285 QDBusInterface *dbusUnitySession;
259286};