summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2015-11-18 14:39:25 +1300
committerRobert Ancell <robert.ancell@canonical.com>2015-11-18 14:39:25 +1300
commit52047219af4b23c15477e5eef4ffea1aa5581cbe (patch)
treeac32b6e521c167b3ff8702f6e83cb3de50d21dc4
parent31aec64e4c6f2a513222d9f1e21ad9f52798f8a3 (diff)
downloadlightdm-git-52047219af4b23c15477e5eef4ffea1aa5581cbe.tar.gz
Backport some user tests
-rw-r--r--tests/Makefile.am8
-rw-r--r--tests/scripts/autologin-guest-timeout.conf6
-rw-r--r--tests/scripts/autologin-timeout.conf6
-rw-r--r--tests/scripts/user-background.conf40
-rw-r--r--tests/scripts/user-image.conf40
-rw-r--r--tests/scripts/user-logged-in.conf90
-rw-r--r--tests/scripts/user-name.conf49
-rw-r--r--tests/src/test-gobject-greeter.c119
-rwxr-xr-xtests/src/test-python-greeter41
-rw-r--r--tests/src/test-qt-greeter.cpp95
-rw-r--r--tests/src/test-qt-greeter.h4
-rwxr-xr-xtests/test-user-background2
-rwxr-xr-xtests/test-user-image2
-rwxr-xr-xtests/test-user-logged-in2
-rwxr-xr-xtests/test-user-name2
15 files changed, 458 insertions, 48 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index dd5f3a30..9f2b8f2d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -52,6 +52,10 @@ TESTS = \
test-user-renamed \
test-user-renamed-invalid \
test-keyboard-layout \
+ test-user-name \
+ test-user-image \
+ test-user-background \
+ test-user-logged-in \
test-no-keyboard-layout \
test-language \
test-no-language \
@@ -294,6 +298,10 @@ EXTRA_DIST = \
scripts/switch-to-user-logout.conf \
scripts/switch-to-user-no-password.conf \
scripts/system-xauthority.conf \
+ scripts/user-background.conf \
+ scripts/user-image.conf \
+ scripts/user-logged-in.conf \
+ scripts/user-name.conf \
scripts/util-path.conf \
scripts/user-renamed.conf \
scripts/user-renamed-invalid.conf \
diff --git a/tests/scripts/autologin-guest-timeout.conf b/tests/scripts/autologin-guest-timeout.conf
index 5a118650..bc574182 100644
--- a/tests/scripts/autologin-guest-timeout.conf
+++ b/tests/scripts/autologin-guest-timeout.conf
@@ -7,7 +7,7 @@ disable-guest-wrapper=true
[SeatDefaults]
autologin-guest=true
-autologin-user-timeout=1
+autologin-user-timeout=99
user-session=default
#?*START-DAEMON
@@ -28,8 +28,8 @@ user-session=default
#?GREETER-X-0 CONNECT-TO-DAEMON
#?GREETER-X-0 CONNECTED-TO-DAEMON
-# Autologin timer expires
-#?GREETER-X-0 AUTOLOGIN-TIMER-EXPIRED
+# Greeter is requested to timeout
+#?GREETER-X-0 AUTOLOGIN-GUEST TIMEOUT=99
# Trigger autologin
#?*GREETER-X-0 AUTHENTICATE-AUTOLOGIN
diff --git a/tests/scripts/autologin-timeout.conf b/tests/scripts/autologin-timeout.conf
index 3c2ff45c..8a8ee3ea 100644
--- a/tests/scripts/autologin-timeout.conf
+++ b/tests/scripts/autologin-timeout.conf
@@ -4,7 +4,7 @@
[SeatDefaults]
autologin-user=have-password1
-autologin-user-timeout=1
+autologin-user-timeout=99
user-session=default
#?*START-DAEMON
@@ -25,8 +25,8 @@ user-session=default
#?GREETER-X-0 CONNECT-TO-DAEMON
#?GREETER-X-0 CONNECTED-TO-DAEMON
-# Autologin timer expires
-#?GREETER-X-0 AUTOLOGIN-TIMER-EXPIRED
+# Greeter is requested to timeout
+#?GREETER-X-0 AUTOLOGIN-USER USERNAME=have-password1 TIMEOUT=99
# Trigger autologin
#?*GREETER-X-0 AUTHENTICATE-AUTOLOGIN
diff --git a/tests/scripts/user-background.conf b/tests/scripts/user-background.conf
new file mode 100644
index 00000000..5fd3362c
--- /dev/null
+++ b/tests/scripts/user-background.conf
@@ -0,0 +1,40 @@
+#
+# Check returns correct background for a user
+#
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7
+
+# 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_SESSION_COOKIE=ck-cookie-x:0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Watch a user for properties changes
+#?*GREETER-X-0 WATCH-USER USERNAME=prop-user
+#?GREETER-X-0 WATCH-USER USERNAME=prop-user
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=BACKGROUND
+#?GREETER-X-0 LOG-USER USERNAME=prop-user BACKGROUND=
+
+# Change background
+#?*UPDATE-USER USERNAME=prop-user BACKGROUND=field
+#?RUNNER UPDATE-USER USERNAME=prop-user BACKGROUND=field
+#?GREETER-X-0 USER-CHANGED USERNAME=prop-user
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=BACKGROUND
+#?GREETER-X-0 LOG-USER USERNAME=prop-user BACKGROUND=field
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/user-image.conf b/tests/scripts/user-image.conf
new file mode 100644
index 00000000..e6578c70
--- /dev/null
+++ b/tests/scripts/user-image.conf
@@ -0,0 +1,40 @@
+#
+# Check returns correct image for a user
+#
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7
+
+# 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_SESSION_COOKIE=ck-cookie-x:0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Watch a user for properties changes
+#?*GREETER-X-0 WATCH-USER USERNAME=prop-user
+#?GREETER-X-0 WATCH-USER USERNAME=prop-user
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=IMAGE
+#?GREETER-X-0 LOG-USER USERNAME=prop-user IMAGE=
+
+# Change image
+#?*UPDATE-USER USERNAME=prop-user IMAGE=flower
+#?RUNNER UPDATE-USER USERNAME=prop-user IMAGE=flower
+#?GREETER-X-0 USER-CHANGED USERNAME=prop-user
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=IMAGE
+#?GREETER-X-0 LOG-USER USERNAME=prop-user IMAGE=flower
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/user-logged-in.conf b/tests/scripts/user-logged-in.conf
new file mode 100644
index 00000000..d06eb358
--- /dev/null
+++ b/tests/scripts/user-logged-in.conf
@@ -0,0 +1,90 @@
+#
+# Check user marked as logged in
+#
+
+[SeatDefaults]
+user-session=default
+
+[test-greeter-config]
+log-user-changes=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7
+
+# 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_SESSION_COOKIE=ck-cookie-x:0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Check not marked as logged in
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=LOGGED-IN
+#?GREETER-X-0 LOG-USER USERNAME=prop-user LOGGED-IN=FALSE
+
+# Log into account
+#?*GREETER-X-0 AUTHENTICATE USERNAME=prop-user
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=prop-user AUTHENTICATED=TRUE
+#?*GREETER-X-0 START-SESSION
+#?GREETER-X-0 TERMINATE SIGNAL=15
+
+# Session starts
+#?SESSION-X-0 START XDG_SESSION_COOKIE=ck-cookie-x:0 USER=prop-user
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Switch to greeter
+#?*SWITCH-TO-GREETER
+#?RUNNER SWITCH-TO-GREETER
+
+# New X server starts
+#?XSERVER-1 START VT=8
+
+# Daemon connects when X server is ready
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+
+# Session is locked
+#?CONSOLE-KIT LOCK-SESSION
+
+# Greeter starts
+#?GREETER-X-1 START XDG_SESSION_COOKIE=ck-cookie-x:1
+#?XSERVER-1 ACCEPT-CONNECT
+#?GREETER-X-1 CONNECT-XSERVER
+#?GREETER-X-1 CONNECT-TO-DAEMON
+#?GREETER-X-1 CONNECTED-TO-DAEMON
+
+# Switch to greeter
+#?VT ACTIVATE VT=8
+
+# Watch a user for properties changes
+#?*GREETER-X-1 WATCH-USER USERNAME=prop-user
+#?GREETER-X-1 WATCH-USER USERNAME=prop-user
+
+# Check marked as logged in
+#?*GREETER-X-1 LOG-USER USERNAME=prop-user FIELDS=LOGGED-IN
+#?GREETER-X-1 LOG-USER USERNAME=prop-user LOGGED-IN=TRUE
+
+# Logout session
+#?*SESSION-X-0 LOGOUT
+#?XSERVER-0 TERMINATE SIGNAL=15
+
+# Check not marked as logged in
+#?GREETER-X-1 USER-CHANGED USERNAME=prop-user
+#?*GREETER-X-1 LOG-USER USERNAME=prop-user FIELDS=LOGGED-IN
+#?GREETER-X-1 LOG-USER USERNAME=prop-user LOGGED-IN=FALSE
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-1 TERMINATE SIGNAL=15
+#?XSERVER-1 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/user-name.conf b/tests/scripts/user-name.conf
new file mode 100644
index 00000000..f050ab40
--- /dev/null
+++ b/tests/scripts/user-name.conf
@@ -0,0 +1,49 @@
+#
+# Check returns correct real/display name for a user
+#
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7
+
+# 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_SESSION_COOKIE=ck-cookie-x:0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Watch a user for properties changes
+#?*GREETER-X-0 WATCH-USER USERNAME=prop-user
+#?GREETER-X-0 WATCH-USER USERNAME=prop-user
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=REAL-NAME,DISPLAY-NAME
+#?GREETER-X-0 LOG-USER USERNAME=prop-user REAL-NAME=TEST DISPLAY-NAME=TEST
+
+# Change real name
+#?*UPDATE-USER USERNAME=prop-user REAL-NAME=RENAMED
+#?RUNNER UPDATE-USER USERNAME=prop-user REAL-NAME=RENAMED
+#?GREETER-X-0 USER-CHANGED USERNAME=prop-user
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=REAL-NAME
+#?GREETER-X-0 LOG-USER USERNAME=prop-user REAL-NAME=RENAMED
+
+# Check display name reverts to username if real name is blank
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=DISPLAY-NAME
+#?GREETER-X-0 LOG-USER USERNAME=prop-user DISPLAY-NAME=RENAMED
+#?*UPDATE-USER USERNAME=prop-user REAL-NAME=
+#?RUNNER UPDATE-USER USERNAME=prop-user REAL-NAME=
+#?GREETER-X-0 USER-CHANGED USERNAME=prop-user
+#?*GREETER-X-0 LOG-USER USERNAME=prop-user FIELDS=DISPLAY-NAME
+#?GREETER-X-0 LOG-USER USERNAME=prop-user DISPLAY-NAME=prop-user
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/src/test-gobject-greeter.c b/tests/src/test-gobject-greeter.c
index d425928d..29e90fb0 100644
--- a/tests/src/test-gobject-greeter.c
+++ b/tests/src/test-gobject-greeter.c
@@ -44,7 +44,6 @@ authentication_complete_cb (LightDMGreeter *greeter)
static void
autologin_timer_expired_cb (LightDMGreeter *greeter)
{
- status_notify ("%s AUTOLOGIN-TIMER-EXPIRED", greeter_id);
}
static gboolean
@@ -64,6 +63,45 @@ sigterm_cb (gpointer user_data)
}
static void
+notify_hints (LightDMGreeter *greeter)
+{
+ int timeout = lightdm_greeter_get_autologin_timeout_hint (greeter);
+
+ if (lightdm_greeter_get_select_user_hint (greeter))
+ status_notify ("%s SELECT-USER-HINT USERNAME=%s", greeter_id, lightdm_greeter_get_select_user_hint (greeter));
+ if (lightdm_greeter_get_select_guest_hint (greeter))
+ status_notify ("%s SELECT-GUEST-HINT", greeter_id);
+ if (lightdm_greeter_get_lock_hint (greeter))
+ status_notify ("%s LOCK-HINT", greeter_id);
+ if (!lightdm_greeter_get_has_guest_account_hint (greeter))
+ status_notify ("%s HAS-GUEST-ACCOUNT-HINT=FALSE", greeter_id);
+ if (lightdm_greeter_get_hide_users_hint (greeter))
+ status_notify ("%s HIDE-USERS-HINT", greeter_id);
+ if (lightdm_greeter_get_show_manual_login_hint (greeter))
+ status_notify ("%s SHOW-MANUAL-LOGIN-HINT", greeter_id);
+ if (lightdm_greeter_get_autologin_user_hint (greeter))
+ {
+ if (timeout != 0)
+ status_notify ("%s AUTOLOGIN-USER USERNAME=%s TIMEOUT=%d", greeter_id, lightdm_greeter_get_autologin_user_hint (greeter), timeout);
+ else
+ status_notify ("%s AUTOLOGIN-USER USERNAME=%s", greeter_id, lightdm_greeter_get_autologin_user_hint (greeter));
+ }
+ else if (lightdm_greeter_get_autologin_guest_hint (greeter))
+ {
+ if (timeout != 0)
+ status_notify ("%s AUTOLOGIN-GUEST TIMEOUT=%d", greeter_id, timeout);
+ else
+ status_notify ("%s AUTOLOGIN-GUEST", greeter_id);
+ }
+}
+
+static void
+user_changed_cb (LightDMUser *user)
+{
+ status_notify ("%s USER-CHANGED USERNAME=%s", greeter_id, lightdm_user_get_name (user));
+}
+
+static void
request_cb (const gchar *name, GHashTable *params)
{
if (!name)
@@ -102,14 +140,76 @@ request_cb (const gchar *name, GHashTable *params)
else if (strcmp (name, "LOG-USER-LIST-LENGTH") == 0)
status_notify ("%s LOG-USER-LIST-LENGTH N=%d", greeter_id, lightdm_user_list_get_length (lightdm_user_list_get_instance ()));
- else if (strcmp (name, "LOG-USER") == 0)
+ else if (strcmp (name, "WATCH-USER") == 0)
{
LightDMUser *user;
const gchar *username;
username = g_hash_table_lookup (params, "USERNAME");
user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), username);
- status_notify ("%s LOG-USER USERNAME=%s", greeter_id, lightdm_user_get_name (user));
+ if (user)
+ g_signal_connect (user, "changed", G_CALLBACK (user_changed_cb), NULL);
+ status_notify ("%s WATCH-USER USERNAME=%s", greeter_id, username);
+ }
+
+ else if (strcmp (name, "LOG-USER") == 0)
+ {
+ LightDMUser *user;
+ const gchar *username, *image, *background, *language, *layout, *session;
+ const gchar * const * layouts;
+ gchar **fields = NULL;
+ gchar *layouts_text;
+ GString *status_text;
+ int i;
+
+ username = g_hash_table_lookup (params, "USERNAME");
+ if (g_hash_table_lookup (params, "FIELDS"))
+ fields = g_strsplit (g_hash_table_lookup (params, "FIELDS"), ",", -1);
+ if (!fields)
+ {
+ fields = g_malloc (sizeof (gchar *) * 1);
+ fields[0] = NULL;
+ }
+
+ user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), username);
+ image = lightdm_user_get_image (user);
+ background = lightdm_user_get_background (user);
+ language = lightdm_user_get_language (user);
+ layout = lightdm_user_get_layout (user);
+ layouts = lightdm_user_get_layouts (user);
+ layouts_text = g_strjoinv (";", (gchar **) layouts);
+ session = lightdm_user_get_session (user);
+
+ status_text = g_string_new ("");
+ g_string_append_printf (status_text, "%s LOG-USER USERNAME=%s", greeter_id, username);
+ for (i = 0; fields[i]; i++)
+ {
+ if (strcmp (fields[i], "REAL-NAME") == 0)
+ g_string_append_printf (status_text, " REAL-NAME=%s", lightdm_user_get_real_name (user));
+ else if (strcmp (fields[i], "DISPLAY-NAME") == 0)
+ g_string_append_printf (status_text, " DISPLAY-NAME=%s", lightdm_user_get_display_name (user));
+ else if (strcmp (fields[i], "IMAGE") == 0)
+ g_string_append_printf (status_text, " IMAGE=%s", image ? image : "");
+ else if (strcmp (fields[i], "BACKGROUND") == 0)
+ g_string_append_printf (status_text, " BACKGROUND=%s", background ? background : "");
+ else if (strcmp (fields[i], "LANGUAGE") == 0)
+ g_string_append_printf (status_text, " LANGUAGE=%s", language ? language : "");
+ else if (strcmp (fields[i], "LAYOUT") == 0)
+ g_string_append_printf (status_text, " LAYOUT=%s", layout ? layout : "");
+ else if (strcmp (fields[i], "LAYOUTS") == 0)
+ g_string_append_printf (status_text, " LAYOUTS=%s", layouts_text);
+ else if (strcmp (fields[i], "SESSION") == 0)
+ g_string_append_printf (status_text, " SESSION=%s", session ? session : "");
+ else if (strcmp (fields[i], "LOGGED-IN") == 0)
+ g_string_append_printf (status_text, " LOGGED-IN=%s", lightdm_user_get_logged_in (user) ? "TRUE" : "FALSE");
+ else if (strcmp (fields[i], "HAS-MESSAGES") == 0)
+ g_string_append_printf (status_text, " HAS-MESSAGES=%s", lightdm_user_get_has_messages (user) ? "TRUE" : "FALSE");
+ }
+ g_strfreev (fields);
+ g_free (layouts_text);
+
+ status_notify ("%s", status_text->str);
+ g_string_free (status_text, TRUE);
}
else if (strcmp (name, "LOG-USER-LIST") == 0)
@@ -262,18 +362,7 @@ main (int argc, char **argv)
status_notify ("%s CONNECTED-TO-DAEMON", greeter_id);
- if (lightdm_greeter_get_select_user_hint (greeter))
- status_notify ("%s SELECT-USER-HINT USERNAME=%s", greeter_id, lightdm_greeter_get_select_user_hint (greeter));
- if (lightdm_greeter_get_select_guest_hint (greeter))
- status_notify ("%s SELECT-GUEST-HINT", greeter_id);
- if (lightdm_greeter_get_lock_hint (greeter))
- status_notify ("%s LOCK-HINT", greeter_id);
- if (!lightdm_greeter_get_has_guest_account_hint (greeter))
- status_notify ("%s HAS-GUEST-ACCOUNT-HINT=FALSE", greeter_id);
- if (lightdm_greeter_get_hide_users_hint (greeter))
- status_notify ("%s HIDE-USERS-HINT", greeter_id);
- if (lightdm_greeter_get_show_manual_login_hint (greeter))
- status_notify ("%s SHOW-MANUAL-LOGIN-HINT", greeter_id);
+ notify_hints (greeter);
g_main_loop_run (loop);
diff --git a/tests/src/test-python-greeter b/tests/src/test-python-greeter
index f7a2c4e5..eada91eb 100755
--- a/tests/src/test-python-greeter
+++ b/tests/src/test-python-greeter
@@ -120,6 +120,31 @@ def request_cb (channel, condition):
return True
+def notify_hints (greeter):
+ if greeter.get_select_user_hint () is not None:
+ status_notify ('%s SELECT-USER-HINT USERNAME=%s' % (greeter_id, greeter.get_select_user_hint ()))
+ if greeter.get_select_guest_hint ():
+ status_notify ('%s SELECT-GUEST-HINT' % greeter_id)
+ if greeter.get_lock_hint ():
+ status_notify ('%s LOCK-HINT' % greeter_id)
+ if not greeter.get_has_guest_account_hint ():
+ status_notify ('%s HAS-GUEST-ACCOUNT-HINT=FALSE' % greeter_id)
+ if greeter.get_hide_users_hint ():
+ status_notify ('%s HIDE-USERS-HINT' % greeter_id)
+ if greeter.get_show_manual_login_hint ():
+ status_notify ('%s SHOW-MANUAL-LOGIN-HINT' % greeter_id)
+ timeout = greeter.get_autologin_timeout_hint ()
+ if greeter.get_autologin_user_hint () is not None:
+ if timeout != 0:
+ status_notify ('%s AUTOLOGIN-USER USERNAME=%s TIMEOUT=%d' % (greeter_id, greeter.get_autologin_user_hint (), timeout))
+ else:
+ status_notify ('%s AUTOLOGIN-USER USERNAME=%s' % (greeter_id, greeter.get_autologin_user_hint ()))
+ elif greeter.get_autologin_guest_hint ():
+ if timeout != 0:
+ status_notify ('%s AUTOLOGIN-GUEST TIMEOUT=%d' % (greeter_id, timeout))
+ else:
+ status_notify ('%s AUTOLOGIN-GUEST' % greeter_id)
+
path = os.getenv ('LIGHTDM_TEST_ROOT') + '/.s'
status_socket = socket.socket (socket.AF_UNIX, socket.SOCK_STREAM)
status_socket.connect (path)
@@ -166,7 +191,7 @@ def authentication_complete_cb (greeter):
status_notify ('%s AUTHENTICATION-COMPLETE AUTHENTICATED=%s' % (greeter_id, is_authenticated))
def autologin_timer_expired_cb (greeter):
- status_notify ('%s AUTOLOGIN-TIMER-EXPIRED' % greeter_id)
+ pass
greeter = LightDM.Greeter ()
greeter.connect ('show-message', show_message_cb)
@@ -194,17 +219,5 @@ if not greeter.connect_sync ():
status_notify ('%s CONNECTED-TO-DAEMON' % greeter_id)
-if greeter.get_select_user_hint () is not None:
- status_notify ('%s SELECT-USER-HINT USERNAME=%s' % (greeter_id, greeter.get_select_user_hint ()))
-if greeter.get_select_guest_hint ():
- status_notify ('%s SELECT-GUEST-HINT' % greeter_id)
-if greeter.get_lock_hint ():
- status_notify ('%s LOCK-HINT' % greeter_id)
-if not greeter.get_has_guest_account_hint ():
- status_notify ('%s HAS-GUEST-ACCOUNT-HINT=FALSE' % greeter_id)
-if greeter.get_hide_users_hint ():
- status_notify ('%s HIDE-USERS-HINT' % greeter_id)
-if greeter.get_show_manual_login_hint ():
- status_notify ('%s SHOW-MANUAL-LOGIN-HINT' % greeter_id)
-
+notify_hints (greeter)
loop.run ()
diff --git a/tests/src/test-qt-greeter.cpp b/tests/src/test-qt-greeter.cpp
index cae1cee2..4aabe2c3 100644
--- a/tests/src/test-qt-greeter.cpp
+++ b/tests/src/test-qt-greeter.cpp
@@ -5,6 +5,7 @@
#include <glib-object.h>
#include <xcb/xcb.h>
#include <QLightDM/Greeter>
+#include <QLightDM/UsersModel>
#include <QtCore/QSettings>
#include <QtCore/QDebug>
#include <QtCore/QCoreApplication>
@@ -16,6 +17,7 @@ static gchar *greeter_id;
static QCoreApplication *app = NULL;
static QSettings *config = NULL;
static TestGreeter *greeter = NULL;
+static QLightDM::UsersModel *users_model = NULL;
TestGreeter::TestGreeter ()
{
@@ -47,7 +49,55 @@ void TestGreeter::authenticationComplete ()
void TestGreeter::autologinTimerExpired ()
{
- status_notify ("%s AUTOLOGIN-TIMER-EXPIRED", greeter_id);
+}
+
+void TestGreeter::printHints ()
+{
+ if (selectUserHint() != "")
+ status_notify ("%s SELECT-USER-HINT USERNAME=%s", greeter_id, greeter->selectUserHint ().toAscii ().constData ());
+ if (selectGuestHint())
+ status_notify ("%s SELECT-GUEST-HINT", greeter_id);
+ if (lockHint())
+ status_notify ("%s LOCK-HINT", greeter_id);
+ if (!hasGuestAccountHint ())
+ status_notify ("%s HAS-GUEST-ACCOUNT-HINT=FALSE", greeter_id);
+ if (hideUsersHint ())
+ status_notify ("%s HIDE-USERS-HINT", greeter_id);
+ if (showManualLoginHint ())
+ status_notify ("%s SHOW-MANUAL-LOGIN-HINT", greeter_id);
+ int timeout = autologinTimeoutHint ();
+ if (autologinUserHint () != "")
+ {
+ if (timeout != 0)
+ status_notify ("%s AUTOLOGIN-USER USERNAME=%s TIMEOUT=%d", greeter_id, greeter->autologinUserHint ().toAscii ().constData (), timeout);
+ else
+ status_notify ("%s AUTOLOGIN-USER USERNAME=%s", greeter_id, greeter->autologinUserHint ().toAscii ().constData ());
+ }
+ else if (autologinGuestHint ())
+ {
+ if (timeout != 0)
+ status_notify ("%s AUTOLOGIN-GUEST TIMEOUT=%d", greeter_id, timeout);
+ else
+ status_notify ("%s AUTOLOGIN-GUEST", greeter_id);
+ }
+}
+
+void TestGreeter::userRowsInserted (const QModelIndex & parent, int start, int end)
+{
+ for (int i = start; i <= end; i++)
+ {
+ QString name = users_model->data (users_model->index (i, 0), QLightDM::UsersModel::NameRole).toString ();
+ status_notify ("%s USER-ADDED USERNAME=%s", greeter_id, qPrintable (name));
+ }
+}
+
+void TestGreeter::userRowsRemoved (const QModelIndex & parent, int start, int end)
+{
+ for (int i = start; i <= end; i++)
+ {
+ QString name = users_model->data (users_model->index (i, 0), QLightDM::UsersModel::NameRole).toString ();
+ status_notify ("%s USER-REMOVED USERNAME=%s", greeter_id, qPrintable (name));
+ }
}
static void
@@ -101,6 +151,29 @@ request_cb (const gchar *name, GHashTable *params)
status_notify ("%s SESSION-FAILED", greeter_id);
}
}
+
+ else if (strcmp (name, "LOG-USER-LIST-LENGTH") == 0)
+ status_notify ("%s LOG-USER-LIST-LENGTH N=%d", greeter_id, users_model->rowCount (QModelIndex ()));
+
+ else if (strcmp (name, "LOG-USER") == 0)
+ {
+ const gchar *username = (const gchar *) g_hash_table_lookup (params, "USERNAME");
+ for (int i = 0; i < users_model->rowCount (QModelIndex ()); i++)
+ {
+ QString name = users_model->data (users_model->index (i, 0), QLightDM::UsersModel::NameRole).toString ();
+ if (name == username)
+ status_notify ("%s LOG-USER USERNAME=%s", greeter_id, qPrintable (name));
+ }
+ }
+
+ else if (strcmp (name, "LOG-USER-LIST") == 0)
+ {
+ for (int i = 0; i < users_model->rowCount (QModelIndex ()); i++)
+ {
+ QString name = users_model->data (users_model->index (i, 0), QLightDM::UsersModel::NameRole).toString ();
+ status_notify ("%s LOG-USER USERNAME=%s", greeter_id, qPrintable (name));
+ }
+ }
}
int
@@ -165,6 +238,13 @@ main(int argc, char *argv[])
greeter = new TestGreeter();
+ users_model = new QLightDM::UsersModel();
+ if (config->value ("test-greeter-config/log-user-changes", "false") == "true")
+ {
+ QObject::connect (users_model, SIGNAL(rowsInserted(const QModelIndex&, int, int)), greeter, SLOT(userRowsInserted(const QModelIndex&, int, int)));
+ QObject::connect (users_model, SIGNAL(rowsAboutToBeRemoved(const QModelIndex&, int, int)), greeter, SLOT(userRowsRemoved(const QModelIndex&, int, int)));
+ }
+
status_notify ("%s CONNECT-TO-DAEMON", greeter_id);
if (!greeter->connectSync())
{
@@ -174,18 +254,7 @@ main(int argc, char *argv[])
status_notify ("%s CONNECTED-TO-DAEMON", greeter_id);
- if (greeter->selectUserHint() != "")
- status_notify ("%s SELECT-USER-HINT USERNAME=%s", greeter_id, greeter->selectUserHint ().toAscii ().constData ());
- if (greeter->selectGuestHint())
- status_notify ("%s SELECT-GUEST-HINT", greeter_id);
- if (greeter->lockHint())
- status_notify ("%s LOCK-HINT", greeter_id);
- if (!greeter->hasGuestAccountHint ())
- status_notify ("%s HAS-GUEST-ACCOUNT-HINT=FALSE", greeter_id);
- if (greeter->hideUsersHint ())
- status_notify ("%s HIDE-USERS-HINT", greeter_id);
- if (greeter->showManualLoginHint ())
- status_notify ("%s SHOW-MANUAL-LOGIN-HINT", greeter_id);
+ greeter->printHints();
return app->exec();
}
diff --git a/tests/src/test-qt-greeter.h b/tests/src/test-qt-greeter.h
index c5c9f661..624ed9a9 100644
--- a/tests/src/test-qt-greeter.h
+++ b/tests/src/test-qt-greeter.h
@@ -8,9 +8,13 @@ class TestGreeter : public QLightDM::Greeter
public:
TestGreeter ();
+ void printHints();
+
private Q_SLOTS:
void showMessage(QString text, QLightDM::Greeter::MessageType type);
void showPrompt(QString text, QLightDM::Greeter::PromptType type);
void authenticationComplete();
void autologinTimerExpired();
+ void userRowsInserted(const QModelIndex & parent, int start, int end);
+ void userRowsRemoved(const QModelIndex & parent, int start, int end);
};
diff --git a/tests/test-user-background b/tests/test-user-background
new file mode 100755
index 00000000..5049b0bc
--- /dev/null
+++ b/tests/test-user-background
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner user-background test-gobject-greeter
diff --git a/tests/test-user-image b/tests/test-user-image
new file mode 100755
index 00000000..4f8d64bb
--- /dev/null
+++ b/tests/test-user-image
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner user-image test-gobject-greeter
diff --git a/tests/test-user-logged-in b/tests/test-user-logged-in
new file mode 100755
index 00000000..c3497a68
--- /dev/null
+++ b/tests/test-user-logged-in
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner user-logged-in test-gobject-greeter
diff --git a/tests/test-user-name b/tests/test-user-name
new file mode 100755
index 00000000..b4cdb46b
--- /dev/null
+++ b/tests/test-user-name
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner user-name test-gobject-greeter