on xenial help sign in
Add test for starting disabled
e742456Michael Terry
tests/mocks/LightDM/Greeter.cpp+6
@@ -129,6 +129,12 @@ void Greeter::authenticate(const QString &username)
129 d->authenticated = false;
129 d->authenticated = false;
130 d->authenticationUser = username;
130 d->authenticationUser = username;
131 d->twoFactorDone = false;
131 d->twoFactorDone = false;
132+ QTimer::singleShot(0, this, SLOT(delayedAuthentication()));
133+}
134+
135+void Greeter::delayedAuthentication()
136+{
137+ Q_D(Greeter);
132 d->handleAuthenticate();
138 d->handleAuthenticate();
133}
139}
134
140
tests/mocks/LightDM/Greeter.h+3
@@ -99,6 +99,9 @@ Q_SIGNALS:
99protected:
99protected:
100 void sendAuthenticationComplete();
100 void sendAuthenticationComplete();
101
101
102+private Q_SLOTS:
103+ void delayedAuthentication();
104+
102private:
105private:
103 GreeterPrivate *d_ptr;
106 GreeterPrivate *d_ptr;
104 Q_DECLARE_PRIVATE(Greeter)
107 Q_DECLARE_PRIVATE(Greeter)
tests/qmltests/tst_ShellWithPin.qml+31
@@ -116,6 +116,12 @@ Item {
116 signalName: "resettingDevice"
116 signalName: "resettingDevice"
117 }
117 }
118
118
119+ SignalSpy {
120+ id: promptSpy
121+ target: LightDM.Greeter
122+ signalName: "showPrompt"
123+ }
124+
119 Telephony.CallEntry {
125 Telephony.CallEntry {
120 id: phoneCall
126 id: phoneCall
121 phoneNumber: "+447812221111"
127 phoneNumber: "+447812221111"
@@ -472,5 +478,30 @@ Item {
472
478
473 }
479 }
474
480
481+ /* We had a bug (1395075) where if a user kept swiping as the greeter
482+ loaded, they would be able to get into the session before the
483+ lockscreen appeared. Make sure that doesn't happen. */
484+ function test_earlyDisable() {
485+ // Kill current shell
486+ shellLoader.itemDestroyed = false;
487+ shellLoader.active = false;
488+ tryCompare(shellLoader, "itemDestroyed", true);
489+ LightDM.Greeter.authenticate(""); // reset greeter
490+
491+ // Create new shell
492+ promptSpy.clear();
493+ shellLoader.active = true;
494+ tryCompareFunction(function() {return shell !== null}, true);
495+
496+ // Confirm that we start disabled
497+ compare(promptSpy.count, 0);
498+ verify(!shell.enabled);
499+
500+ // And that we only become enabled once the lockscreen is up
501+ tryCompare(shell, "enabled", true);
502+ verify(promptSpy.count > 0);
503+ var lockscreen = findChild(shell, "lockscreen");
504+ verify(lockscreen.shown);
505+ }
475 }
506 }
476}
507}