]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Add a bunch of tests; fix some small bugs
authorMichael Terry <michael.terry@canonical.com>
Thu, 24 Apr 2014 21:12:37 +0000 (17:12 -0400)
committerMichael Terry <michael.terry@canonical.com>
Thu, 24 Apr 2014 21:12:37 +0000 (17:12 -0400)
19 files changed:
src/greeter.c
src/seat.c
tests/scripts/lock-seat-resettable.conf [new file with mode: 0644]
tests/scripts/lock-session-resettable.conf [new file with mode: 0644]
tests/scripts/switch-to-greeter-resettable.conf [new file with mode: 0644]
tests/scripts/switch-to-guest-fail-resettable.conf [new file with mode: 0644]
tests/scripts/switch-to-user-existing-resettable.conf [new file with mode: 0644]
tests/scripts/switch-to-user-logout-active-resettable.conf [new file with mode: 0644]
tests/scripts/switch-to-user-resettable.conf [new file with mode: 0644]
tests/src/test-gobject-greeter.c
tests/src/test-python-greeter
tests/src/test-qt-greeter.cpp
tests/test-lock-seat-resettable [new file with mode: 0755]
tests/test-lock-session-resettable [new file with mode: 0755]
tests/test-switch-to-greeter-resettable [new file with mode: 0755]
tests/test-switch-to-guest-fail-resettable [new file with mode: 0755]
tests/test-switch-to-user-existing-resettable [new file with mode: 0755]
tests/test-switch-to-user-logout-active-resettable [new file with mode: 0755]
tests/test-switch-to-user-resettable [new file with mode: 0755]

index 7643fb53aa3e78fd29d230a846a81cfca72ca8e8..2fc06a7602bef083510ee3f1c13c2748895383c1 100644 (file)
@@ -881,7 +881,7 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
         g_free (username);
         break;
     case GREETER_MESSAGE_SET_RESETTABLE:
-        greeter->priv->resettable = read_int (greeter, &offset);
+        greeter->priv->resettable = (gboolean)read_int (greeter, &offset);
         break;
     default:
         l_warning (greeter, "Unknown message from greeter: %d", id);
index 10ec7a06aaad9d9fdf20d2e8ea60316823dfa97c..83c383b0cb66fb7ebd101a0cd6a8af66ef453780 100644 (file)
@@ -223,8 +223,11 @@ seat_set_active_session (Seat *seat, Session *session)
             Greeter *greeter = GREETER (s);
             if (greeter_get_resettable (greeter))
             {
-                l_debug (seat, "Idling greeter");
-                greeter_idle (greeter);
+                if (seat->priv->active_session == greeter)
+                {
+                    l_debug (seat, "Idling greeter");
+                    greeter_idle (greeter);
+                }
             }
             else
             {
@@ -1132,7 +1135,8 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
 
     /* If can re-use the display server, stop the greeter first */
     display_server = session_get_display_server (SESSION (greeter));
-    if (can_share_display_server (seat, display_server) &&
+    if (!greeter_get_resettable (greeter) &&
+        can_share_display_server (seat, display_server) &&
         strcmp (display_server_get_session_type (display_server), session_get_session_type (session)) == 0)
     {
         l_debug (seat, "Stopping greeter; display server will be re-used for user session");
diff --git a/tests/scripts/lock-seat-resettable.conf b/tests/scripts/lock-seat-resettable.conf
new file mode 100644 (file)
index 0000000..94bc672
--- /dev/null
@@ -0,0 +1,68 @@
+#
+# Check can lock a seat from D-Bus
+# Uses a resettable greeter
+#
+
+[SeatDefaults]
+user-session=default
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+#?*WAIT
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=no-password1
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=no-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# Start new X server for session
+#?XSERVER-1 START VT=8 SEAT=seat0
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+#?VT ACTIVATE VT=8
+#?GREETER-X-0 IDLE
+
+# Session starts
+#?SESSION-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_GREETER_DATA_DIR=.*/no-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=no-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Lock the seat
+#?*SESSION-X-1 LOCK-SEAT
+#?SESSION-X-1 LOCK-SEAT
+
+# Back to greeter
+#?LOGIN1 LOCK-SESSION
+#?GREETER-X-0 RESET
+#?GREETER-X-0 LOCK-HINT
+#?VT ACTIVATE VT=7
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/lock-session-resettable.conf b/tests/scripts/lock-session-resettable.conf
new file mode 100644 (file)
index 0000000..09afb56
--- /dev/null
@@ -0,0 +1,69 @@
+#
+# Check can lock a session from D-Bus
+# Uses a resettable greeter
+#
+
+[SeatDefaults]
+user-session=default
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+#?*WAIT
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=no-password1
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=no-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# Start new X server for session
+#?XSERVER-1 START VT=8 SEAT=seat0
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+#?VT ACTIVATE VT=8
+#?GREETER-X-0 IDLE
+
+# Session starts
+#?SESSION-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_GREETER_DATA_DIR=.*/no-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=no-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Lock the session
+#?*SESSION-X-1 LOCK-SESSION
+#?SESSION-X-1 LOCK-SESSION
+
+# Back to greeter with session user selected
+#?LOGIN1 LOCK-SESSION
+#?GREETER-X-0 RESET
+#?GREETER-X-0 SELECT-USER-HINT USERNAME=no-password1
+#?GREETER-X-0 LOCK-HINT
+#?VT ACTIVATE VT=7
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/switch-to-greeter-resettable.conf b/tests/scripts/switch-to-greeter-resettable.conf
new file mode 100644 (file)
index 0000000..4bd0756
--- /dev/null
@@ -0,0 +1,71 @@
+#
+# Use D-Bus interface to show the greeter
+# Uses a resettable greeter
+#
+
+[SeatDefaults]
+allow-guest=false
+user-session=default
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+#?GREETER-X-0 HAS-GUEST-ACCOUNT-HINT=FALSE
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-0 RESPOND TEXT="password"
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# Start new X server for session
+#?XSERVER-1 START VT=8 SEAT=seat0
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+#?VT ACTIVATE VT=8
+#?GREETER-X-0 IDLE
+
+# Session starts
+#?SESSION-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Show the greeter
+#?*SWITCH-TO-GREETER
+#?RUNNER SWITCH-TO-GREETER
+
+# Session is locked
+#?LOGIN1 LOCK-SESSION
+
+# Switch to greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?VT ACTIVATE VT=7
+
+# Cleanup
+#?*STOP-DAEMON
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/switch-to-guest-fail-resettable.conf b/tests/scripts/switch-to-guest-fail-resettable.conf
new file mode 100644 (file)
index 0000000..7242950
--- /dev/null
@@ -0,0 +1,81 @@
+#
+# Check D-Bus interface can trigger/switch to guest session
+# Uses a resettable greeter
+#
+
+[LightDM]
+guest-account-script=false
+
+[SeatDefaults]
+user-session=default
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-0 RESPOND TEXT="password"
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# Start new X server for session
+#?XSERVER-1 START VT=8 SEAT=seat0
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+#?VT ACTIVATE VT=8
+#?GREETER-X-0 IDLE
+
+# Session starts
+#?SESSION-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Switch to guest
+#?*SWITCH-TO-GUEST
+#?RUNNER SWITCH-TO-GUEST
+
+# Start new X server for guest
+#?XSERVER-2 START VT=9 SEAT=seat0
+#?*XSERVER-2 INDICATE-READY
+#?XSERVER-2 INDICATE-READY
+#?XSERVER-2 ACCEPT-CONNECT
+
+# (guest account attempts to start and fails)
+
+# Back to greeter
+#?LOGIN1 LOCK-SESSION
+#?GREETER-X-0 RESET
+#?GREETER-X-0 SELECT-GUEST-HINT
+#?VT ACTIVATE VT=7
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?XSERVER-2 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/switch-to-user-existing-resettable.conf b/tests/scripts/switch-to-user-existing-resettable.conf
new file mode 100644 (file)
index 0000000..da9b47e
--- /dev/null
@@ -0,0 +1,96 @@
+#
+# Check that switching to an existing account with a password shows the greeter
+# Uses a resettable greeter
+#
+
+[SeatDefaults]
+user-session=default
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+#?*WAIT
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-0 RESPOND TEXT="password"
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# Start new X server for session
+#?XSERVER-1 START VT=8 SEAT=seat0
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+#?VT ACTIVATE VT=8
+#?GREETER-X-0 IDLE
+
+# Session starts
+#?SESSION-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Switch to another user
+#?*SWITCH-TO-USER USERNAME=no-password1
+#?RUNNER SWITCH-TO-USER USERNAME=no-password1
+
+# New X server starts
+#?XSERVER-2 START VT=9 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-2 INDICATE-READY
+#?XSERVER-2 INDICATE-READY
+#?XSERVER-2 ACCEPT-CONNECT
+
+# Old session is locked
+#?LOGIN1 LOCK-SESSION
+
+# New session starts
+#?SESSION-X-2 START XDG_SEAT=seat0 XDG_VTNR=9 XDG_GREETER_DATA_DIR=.*/no-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=no-password1
+#?XSERVER-2 ACCEPT-CONNECT
+#?SESSION-X-2 CONNECT-XSERVER
+
+# Switch to new session
+#?LOGIN1 ACTIVATE-SESSION SESSION=c2
+#?VT ACTIVATE VT=9
+
+# Switch back to first user
+#?*SWITCH-TO-USER USERNAME=have-password1
+#?RUNNER SWITCH-TO-USER USERNAME=have-password1
+
+# Which switches to greeter
+#?LOGIN1 LOCK-SESSION
+#?GREETER-X-0 RESET
+#?GREETER-X-0 SELECT-USER-HINT USERNAME=have-password1
+#?VT ACTIVATE VT=7
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?SESSION-X-2 TERMINATE SIGNAL=15
+#?XSERVER-2 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/switch-to-user-logout-active-resettable.conf b/tests/scripts/switch-to-user-logout-active-resettable.conf
new file mode 100644 (file)
index 0000000..42bc786
--- /dev/null
@@ -0,0 +1,91 @@
+#
+# Check that switching to a user and logging out the active session starts a greeter
+# Uses a resettable greeter
+#
+
+[SeatDefaults]
+user-session=default
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+#?*WAIT
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-0 RESPOND TEXT="password"
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# Start new X server for session
+#?XSERVER-1 START VT=8 SEAT=seat0
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+#?VT ACTIVATE VT=8
+#?GREETER-X-0 IDLE
+
+# Session starts
+#?SESSION-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Switch user
+#?*SWITCH-TO-USER USERNAME=no-password2
+#?RUNNER SWITCH-TO-USER USERNAME=no-password2
+
+# New X server starts
+#?XSERVER-2 START VT=9 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-2 INDICATE-READY
+#?XSERVER-2 INDICATE-READY
+#?XSERVER-2 ACCEPT-CONNECT
+
+# Session is locked
+#?LOGIN1 LOCK-SESSION
+
+# Session starts
+#?SESSION-X-2 START XDG_SEAT=seat0 XDG_VTNR=9 XDG_GREETER_DATA_DIR=.*/no-password2 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=no-password2
+#?XSERVER-2 ACCEPT-CONNECT
+#?SESSION-X-2 CONNECT-XSERVER
+
+# Switch to new session
+#?LOGIN1 ACTIVATE-SESSION SESSION=c2
+#?VT ACTIVATE VT=9
+
+# Log out new session
+#?*SESSION-X-2 LOGOUT
+#?XSERVER-2 TERMINATE SIGNAL=15
+
+# Switch back to greeter
+#?VT ACTIVATE VT=7
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/switch-to-user-resettable.conf b/tests/scripts/switch-to-user-resettable.conf
new file mode 100644 (file)
index 0000000..ed5e577
--- /dev/null
@@ -0,0 +1,74 @@
+#
+# Check that switching to a user shows the greeter
+# Uses a resettable greeter
+#
+
+[SeatDefaults]
+user-session=default
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+#?*WAIT
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Log into account with a password
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-0 RESPOND TEXT="password"
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+
+# Start new X server for session
+#?XSERVER-1 START VT=8 SEAT=seat0
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+#?VT ACTIVATE VT=8
+#?GREETER-X-0 IDLE
+
+# Session starts
+#?SESSION-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-1 ACCEPT-CONNECT
+#?SESSION-X-1 CONNECT-XSERVER
+
+# Switch to an account with a password
+#?*SWITCH-TO-USER USERNAME=have-password2
+#?RUNNER SWITCH-TO-USER USERNAME=have-password2
+
+# Switch to greeter
+#?LOGIN1 LOCK-SESSION
+#?GREETER-X-0 RESET
+#?VT ACTIVATE VT=7
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Requested user is automatically selected
+#?GREETER-X-0 SELECT-USER-HINT USERNAME=have-password2
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password2
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?SESSION-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
index 0be56c0b70f9ea2a610433f72e7076345f5c5b26..86b5fb6c669da8ec824907e81efff45250eb3fc7 100644 (file)
@@ -437,13 +437,6 @@ main (int argc, char **argv)
         g_signal_connect (lightdm_user_list_get_instance (), "user-removed", G_CALLBACK (user_removed_cb), NULL);
     }
 
-    if (g_key_file_get_boolean (config, "test-greeter-config", "resettable", NULL))
-    {
-        lightdm_greeter_set_resettable (greeter, TRUE);
-        g_signal_connect (greeter, "idle", G_CALLBACK (idle_cb), NULL);
-        g_signal_connect (greeter, "reset", G_CALLBACK (reset_cb), NULL);
-    }
-
     status_notify ("%s CONNECT-TO-DAEMON", greeter_id);
     if (!lightdm_greeter_connect_sync (greeter, NULL))
     {
@@ -453,6 +446,13 @@ main (int argc, char **argv)
 
     status_notify ("%s CONNECTED-TO-DAEMON", greeter_id);
 
+    if (g_key_file_get_boolean (config, "test-greeter-config", "resettable", NULL))
+    {
+        lightdm_greeter_set_resettable (greeter, TRUE);
+        g_signal_connect (greeter, "idle", G_CALLBACK (idle_cb), NULL);
+        g_signal_connect (greeter, "reset", G_CALLBACK (reset_cb), NULL);
+    }
+
     print_hints (greeter);
 
     g_main_loop_run (loop);
index 2bc80e3e6c130f74a4d1df65b6bebf9ac23ec016..012940641f43ec903bbcdc955f989dda03ed9c1d 100755 (executable)
@@ -270,6 +270,13 @@ if log_user_changes:
     LightDM.UserList.get_instance ().connect ('user-added', user_added_cb)
     LightDM.UserList.get_instance ().connect ('user-removed', user_removed_cb)
 
+status_notify ('%s CONNECT-TO-DAEMON' % greeter_id)
+if not greeter.connect_sync ():
+    status_notify ('%s FAIL-CONNECT-DAEMON' % greeter_id)
+    exit (1)
+
+status_notify ('%s CONNECTED-TO-DAEMON' % greeter_id)
+
 def idle_cb (greeter):
     status_notify ('%s IDLE' % (greeter_id))
 def reset_cb (greeter):
@@ -285,13 +292,6 @@ if resettable:
     LightDM.Greeter.get_instance ().connect ('idle', idle_cb)
     LightDM.Greeter.get_instance ().connect ('reset', reset_cb)
 
-status_notify ('%s CONNECT-TO-DAEMON' % greeter_id)
-if not greeter.connect_sync ():
-    status_notify ('%s FAIL-CONNECT-DAEMON' % greeter_id)
-    exit (1)
-
-status_notify ('%s CONNECTED-TO-DAEMON' % greeter_id)
-
 print_hints (greeter)
 
 loop.run ()
index bac1fea8cadb96748ec803e11b5b50e168576767..1fb7f36053827f0cbbccf8edd108fd3a3a789d3e 100644 (file)
@@ -298,13 +298,6 @@ main(int argc, char *argv[])
         QObject::connect (users_model, SIGNAL(rowsAboutToBeRemoved(const QModelIndex&, int, int)), greeter, SLOT(userRowsRemoved(const QModelIndex&, int, int)));
     }
 
-    if (config->value ("test-greeter-config/resettable", "false") == "true")
-    {
-        greeter->setResettable (true);
-        QObject::connect (greeter, SIGNAL(idle()), greeter, SLOT(idle()));
-        QObject::connect (greeter, SIGNAL(reset()), greeter, SLOT(reset()));
-    }
-
     status_notify ("%s CONNECT-TO-DAEMON", greeter_id);
     if (!greeter->connectSync())
     {
@@ -314,6 +307,13 @@ main(int argc, char *argv[])
 
     status_notify ("%s CONNECTED-TO-DAEMON", greeter_id);
 
+    if (config->value ("test-greeter-config/resettable", "false") == "true")
+    {
+        greeter->setResettable (true);
+        QObject::connect (greeter, SIGNAL(idle()), greeter, SLOT(idle()));
+        QObject::connect (greeter, SIGNAL(reset()), greeter, SLOT(reset()));
+    }
+
     greeter->printHints();
 
     return app->exec();
diff --git a/tests/test-lock-seat-resettable b/tests/test-lock-seat-resettable
new file mode 100755 (executable)
index 0000000..0fb4199
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner lock-seat-resettable test-gobject-greeter
diff --git a/tests/test-lock-session-resettable b/tests/test-lock-session-resettable
new file mode 100755 (executable)
index 0000000..0e0b3ca
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner lock-session-resettable test-gobject-greeter
diff --git a/tests/test-switch-to-greeter-resettable b/tests/test-switch-to-greeter-resettable
new file mode 100755 (executable)
index 0000000..82d9cf2
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner switch-to-greeter-resettable test-gobject-greeter
diff --git a/tests/test-switch-to-guest-fail-resettable b/tests/test-switch-to-guest-fail-resettable
new file mode 100755 (executable)
index 0000000..bf110f2
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner switch-to-guest-fail-resettable test-gobject-greeter
diff --git a/tests/test-switch-to-user-existing-resettable b/tests/test-switch-to-user-existing-resettable
new file mode 100755 (executable)
index 0000000..9d31c4a
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner switch-to-user-existing-resettable test-gobject-greeter
diff --git a/tests/test-switch-to-user-logout-active-resettable b/tests/test-switch-to-user-logout-active-resettable
new file mode 100755 (executable)
index 0000000..c4461a5
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner switch-to-user-logout-active-resettable test-gobject-greeter
diff --git a/tests/test-switch-to-user-resettable b/tests/test-switch-to-user-resettable
new file mode 100755 (executable)
index 0000000..93358f8
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner switch-to-user-resettable test-gobject-greeter