diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2015-11-18 14:39:25 +1300 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2015-11-18 14:39:25 +1300 |
commit | 52047219af4b23c15477e5eef4ffea1aa5581cbe (patch) | |
tree | ac32b6e521c167b3ff8702f6e83cb3de50d21dc4 | |
parent | 31aec64e4c6f2a513222d9f1e21ad9f52798f8a3 (diff) | |
download | lightdm-git-52047219af4b23c15477e5eef4ffea1aa5581cbe.tar.gz |
Backport some user tests
-rw-r--r-- | tests/Makefile.am | 8 | ||||
-rw-r--r-- | tests/scripts/autologin-guest-timeout.conf | 6 | ||||
-rw-r--r-- | tests/scripts/autologin-timeout.conf | 6 | ||||
-rw-r--r-- | tests/scripts/user-background.conf | 40 | ||||
-rw-r--r-- | tests/scripts/user-image.conf | 40 | ||||
-rw-r--r-- | tests/scripts/user-logged-in.conf | 90 | ||||
-rw-r--r-- | tests/scripts/user-name.conf | 49 | ||||
-rw-r--r-- | tests/src/test-gobject-greeter.c | 119 | ||||
-rwxr-xr-x | tests/src/test-python-greeter | 41 | ||||
-rw-r--r-- | tests/src/test-qt-greeter.cpp | 95 | ||||
-rw-r--r-- | tests/src/test-qt-greeter.h | 4 | ||||
-rwxr-xr-x | tests/test-user-background | 2 | ||||
-rwxr-xr-x | tests/test-user-image | 2 | ||||
-rwxr-xr-x | tests/test-user-logged-in | 2 | ||||
-rwxr-xr-x | tests/test-user-name | 2 |
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 |