@@ -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");
@@ -138,14 +143,7 @@ private Q_SLOTS:
138143
139144 void testUserName() {
140145 DBusUnitySessionService dbusUnitySessionService;
141− QCoreApplication::processEvents(); // to let the service register on DBus
142−
143− QProcess * proc = new QProcess(this);
144− proc->start("id -un", QProcess::ReadOnly);
145− proc->waitForFinished();
146− const QByteArray out = proc->readAll().trimmed();
147−
148− QCOMPARE(dbusUnitySessionService.UserName(), QString::fromUtf8(out));
146+ QCOMPARE(dbusUnitySessionService.UserName(), QString("testuser"));
149147 }
150148
151149 void testRealName() {
@@ -162,6 +160,35 @@ private Q_SLOTS:
162160 }
163161 }
164162
163+ void testCanLock() {
164+ DBusUnitySessionService dbusUnitySessionService;
165+
166+ qputenv("TEST_USER", "testuser");
167+ QVERIFY(dbusUnitySessionService.CanLock());
168+
169+ qputenv("TEST_USER", "guest-abcdef"); // guest-* can't lock
170+ QVERIFY(!dbusUnitySessionService.CanLock());
171+
172+ qputenv("TEST_USER", "testuser");
173+ qputenv("TEST_NOPASSWD_USERS", "testuser"); // nopasswdlogin can't lock
174+ QVERIFY(!dbusUnitySessionService.CanLock());
175+ }
176+
177+ void testPromptLockRespectsCanLock() {
178+ DBusUnitySessionService dbusUnitySessionService;
179+
180+ QSignalSpy spy(&dbusUnitySessionService, SIGNAL(lockRequested()));
181+ QVERIFY(dbusUnitySessionService.CanLock());
182+ dbusUnitySessionService.PromptLock();
183+ QCOMPARE(spy.count(), 1);
184+
185+ spy.clear();
186+ qputenv("TEST_USER", "guest-abcdef");
187+ QVERIFY(!dbusUnitySessionService.CanLock());
188+ dbusUnitySessionService.PromptLock();
189+ QCOMPARE(spy.count(), 0);
190+ }
191+
165192private:
166193 QDBusInterface *dbusUnitySession;
167194};