From 36cd7c2e3a670b9992860b458cd11f859a77574a Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Fri, 12 Aug 2016 11:34:54 +1200 Subject: Set hints for in-session-greeters --- src/seat.c | 5 +++ tests/Makefile.am | 10 +++++ tests/scripts/session-greeter-allow-guest.conf | 38 ++++++++++++++++++ tests/scripts/session-greeter-default-session.conf | 39 ++++++++++++++++++ tests/scripts/session-greeter-hide-users.conf | 38 ++++++++++++++++++ .../scripts/session-greeter-show-manual-login.conf | 38 ++++++++++++++++++ .../scripts/session-greeter-show-remote-login.conf | 38 ++++++++++++++++++ tests/src/test-session.c | 46 +++++++++++++++++++--- tests/test-session-greeter-allow-guest | 2 + tests/test-session-greeter-default-session | 2 + tests/test-session-greeter-hide-users | 2 + tests/test-session-greeter-show-manual-login | 2 + tests/test-session-greeter-show-remote-login | 2 + 13 files changed, 256 insertions(+), 6 deletions(-) create mode 100644 tests/scripts/session-greeter-allow-guest.conf create mode 100644 tests/scripts/session-greeter-default-session.conf create mode 100644 tests/scripts/session-greeter-hide-users.conf create mode 100644 tests/scripts/session-greeter-show-manual-login.conf create mode 100644 tests/scripts/session-greeter-show-remote-login.conf create mode 100755 tests/test-session-greeter-allow-guest create mode 100755 tests/test-session-greeter-default-session create mode 100755 tests/test-session-greeter-hide-users create mode 100755 tests/test-session-greeter-show-manual-login create mode 100755 tests/test-session-greeter-show-remote-login diff --git a/src/seat.c b/src/seat.c index 457152cc..021fd3f4 100644 --- a/src/seat.c +++ b/src/seat.c @@ -1886,12 +1886,17 @@ create_greeter_cb (Session *session, Seat *seat) Greeter *greeter; greeter = greeter_new (); + greeter_set_pam_services (greeter, seat_get_string_property (seat, "pam-service"), seat_get_string_property (seat, "pam-autologin-service")); g_signal_connect (greeter, GREETER_SIGNAL_CREATE_SESSION, G_CALLBACK (create_session_cb), seat); g_signal_connect (greeter, GREETER_SIGNAL_START_SESSION, G_CALLBACK (greeter_start_session_cb), seat); + /* Set hints to greeter */ + greeter_set_allow_guest (greeter, seat_get_allow_guest (seat)); + set_greeter_hints (seat, greeter); + return greeter; } diff --git a/tests/Makefile.am b/tests/Makefile.am index 2665b949..6a64e847 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -173,6 +173,11 @@ TESTS = \ test-session-greeter-unlock-twice \ test-session-greeter-switch \ test-session-greeter-multiple-login \ + test-session-greeter-default-session \ + test-session-greeter-allow-guest \ + test-session-greeter-hide-users \ + test-session-greeter-show-manual-login \ + test-session-greeter-show-remote-login \ test-vnc-login \ test-vnc-command \ test-vnc-dimensions \ @@ -551,9 +556,14 @@ EXTRA_DIST = \ scripts/script-hook-session-setup-fail.conf \ scripts/script-hook-session-setup-missing.conf \ scripts/session-greeter.conf \ + scripts/session-greeter-allow-guest.conf \ scripts/session-greeter-autologin.conf \ + scripts/session-greeter-default-session.conf \ + scripts/session-greeter-hide-users.conf \ scripts/session-greeter-multiple-login.conf \ scripts/session-greeter-reconnect.conf \ + scripts/session-greeter-show-manual-login.conf \ + scripts/session-greeter-show-remote-login.conf \ scripts/session-greeter-switch.conf \ scripts/session-greeter-unlock.conf \ scripts/session-greeter-unlock-twice.conf \ diff --git a/tests/scripts/session-greeter-allow-guest.conf b/tests/scripts/session-greeter-allow-guest.conf new file mode 100644 index 00000000..0b5c493f --- /dev/null +++ b/tests/scripts/session-greeter-allow-guest.conf @@ -0,0 +1,38 @@ +# +# Check in-session greeter is informed if manual login should be showed (it defaults to show) +# + +[Seat:*] +autologin-user=have-password1 +user-session=greeter +greeter-allow-guest=false + +#?*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 + +# Session starts +#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?SESSION-X-0 CONNECT-XSERVER + +# Start greeter inside session +#?*SESSION-X-0 GREETER-START +#?SESSION-X-0 GREETER-STARTED + +# Check has correct hint to allow guest +#?SESSION-X-0 GREETER-HAS-GUEST-ACCOUNT-HINT=FALSE + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-0 TERMINATE SIGNAL=15 +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/session-greeter-default-session.conf b/tests/scripts/session-greeter-default-session.conf new file mode 100644 index 00000000..84126720 --- /dev/null +++ b/tests/scripts/session-greeter-default-session.conf @@ -0,0 +1,39 @@ +# +# Check in-session greeter is informed of the default user session +# + +[Seat:*] +autologin-user=have-password1 +autologin-session=greeter +user-session=alternative + +#?*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 + +# Session starts +#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?SESSION-X-0 CONNECT-XSERVER + +# Start greeter inside session +#?*SESSION-X-0 GREETER-START +#?SESSION-X-0 GREETER-STARTED + +# Check has correct user session +#?*SESSION-X-0 GREETER-LOG-DEFAULT-SESSION +#?SESSION-X-0 GREETER-LOG-DEFAULT-SESSION SESSION=alternative + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-0 TERMINATE SIGNAL=15 +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/session-greeter-hide-users.conf b/tests/scripts/session-greeter-hide-users.conf new file mode 100644 index 00000000..ca01d973 --- /dev/null +++ b/tests/scripts/session-greeter-hide-users.conf @@ -0,0 +1,38 @@ +# +# Check in-session greeter is informed if user list should be hidden +# + +[Seat:*] +autologin-user=have-password1 +user-session=greeter +greeter-hide-users=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 + +# Session starts +#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?SESSION-X-0 CONNECT-XSERVER + +# Start greeter inside session +#?*SESSION-X-0 GREETER-START +#?SESSION-X-0 GREETER-STARTED + +# Check has correct hint to allow guest +#?SESSION-X-0 GREETER-HIDE-USERS-HINT + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-0 TERMINATE SIGNAL=15 +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/session-greeter-show-manual-login.conf b/tests/scripts/session-greeter-show-manual-login.conf new file mode 100644 index 00000000..ea7ec274 --- /dev/null +++ b/tests/scripts/session-greeter-show-manual-login.conf @@ -0,0 +1,38 @@ +# +# Check in-session greeter is informed if manual login should be showed +# + +[Seat:*] +autologin-user=have-password1 +user-session=greeter +greeter-show-manual-login=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 + +# Session starts +#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?SESSION-X-0 CONNECT-XSERVER + +# Start greeter inside session +#?*SESSION-X-0 GREETER-START +#?SESSION-X-0 GREETER-STARTED + +# Check has correct hint to allow guest +#?SESSION-X-0 GREETER-SHOW-MANUAL-LOGIN-HINT + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-0 TERMINATE SIGNAL=15 +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/session-greeter-show-remote-login.conf b/tests/scripts/session-greeter-show-remote-login.conf new file mode 100644 index 00000000..a92e3ff2 --- /dev/null +++ b/tests/scripts/session-greeter-show-remote-login.conf @@ -0,0 +1,38 @@ +# +# Check in-session greeter is informed if remote login should be showed (it defaults to show) +# + +[Seat:*] +autologin-user=have-password1 +user-session=greeter +greeter-show-remote-login=false + +#?*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 + +# Session starts +#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?SESSION-X-0 CONNECT-XSERVER + +# Start greeter inside session +#?*SESSION-X-0 GREETER-START +#?SESSION-X-0 GREETER-STARTED + +# Check has correct hint to show remote login +#?SESSION-X-0 GREETER-SHOW-REMOTE-LOGIN-HINT=FALSE + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-0 TERMINATE SIGNAL=15 +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/src/test-session.c b/tests/src/test-session.c index 1b2669fd..08bf6f9e 100644 --- a/tests/src/test-session.c +++ b/tests/src/test-session.c @@ -258,6 +258,7 @@ request_cb (const gchar *name, GHashTable *params) else if (strcmp (name, "GREETER-START") == 0) { + int timeout; GError *error = NULL; g_assert (greeter == NULL); @@ -268,14 +269,41 @@ request_cb (const gchar *name, GHashTable *params) if (lightdm_greeter_connect_to_daemon_sync (greeter, &error)) status_notify ("%s GREETER-STARTED", session_id); else - status_notify ("%s GREETER-FAILED", session_id); + status_notify ("%s GREETER-FAILED", session_id); + + if (lightdm_greeter_get_select_user_hint (greeter)) + status_notify ("%s GREETER-SELECT-USER-HINT USERNAME=%s", session_id, lightdm_greeter_get_select_user_hint (greeter)); + if (lightdm_greeter_get_select_guest_hint (greeter)) + status_notify ("%s GREETER-SELECT-GUEST-HINT", session_id); + if (lightdm_greeter_get_lock_hint (greeter)) + status_notify ("%s GREETER-LOCK-HINT", session_id); + if (!lightdm_greeter_get_has_guest_account_hint (greeter)) + status_notify ("%s GREETER-HAS-GUEST-ACCOUNT-HINT=FALSE", session_id); + if (lightdm_greeter_get_hide_users_hint (greeter)) + status_notify ("%s GREETER-HIDE-USERS-HINT", session_id); + if (lightdm_greeter_get_show_manual_login_hint (greeter)) + status_notify ("%s GREETER-SHOW-MANUAL-LOGIN-HINT", session_id); + if (!lightdm_greeter_get_show_remote_login_hint (greeter)) + status_notify ("%s GREETER-SHOW-REMOTE-LOGIN-HINT=FALSE", session_id); + timeout = lightdm_greeter_get_autologin_timeout_hint (greeter); + if (lightdm_greeter_get_autologin_user_hint (greeter)) + { + if (timeout != 0) + status_notify ("%s GREETER-AUTOLOGIN-USER USERNAME=%s TIMEOUT=%d", session_id, lightdm_greeter_get_autologin_user_hint (greeter), timeout); + else + status_notify ("%s GREETER-AUTOLOGIN-USER USERNAME=%s", session_id, lightdm_greeter_get_autologin_user_hint (greeter)); + } + else if (lightdm_greeter_get_autologin_guest_hint (greeter)) + { + if (timeout != 0) + status_notify ("%s GREETER-AUTOLOGIN-GUEST TIMEOUT=%d", session_id, timeout); + else + status_notify ("%s GREETER-AUTOLOGIN-GUEST", session_id); + } } - else if (strcmp (name, "GREETER-STOP") == 0) - { - g_assert (greeter != NULL); - g_clear_object (&greeter); - } + else if (strcmp (name, "GREETER-LOG-DEFAULT-SESSION") == 0) + status_notify ("%s GREETER-LOG-DEFAULT-SESSION SESSION=%s", session_id, lightdm_greeter_get_default_session_hint (greeter)); else if (strcmp (name, "GREETER-AUTHENTICATE") == 0) { @@ -295,6 +323,12 @@ request_cb (const gchar *name, GHashTable *params) g_clear_error (&error); } } + + else if (strcmp (name, "GREETER-STOP") == 0) + { + g_assert (greeter != NULL); + g_clear_object (&greeter); + } } int diff --git a/tests/test-session-greeter-allow-guest b/tests/test-session-greeter-allow-guest new file mode 100755 index 00000000..9f5d48e3 --- /dev/null +++ b/tests/test-session-greeter-allow-guest @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner session-greeter-allow-guest test-gobject-greeter diff --git a/tests/test-session-greeter-default-session b/tests/test-session-greeter-default-session new file mode 100755 index 00000000..278d1c6f --- /dev/null +++ b/tests/test-session-greeter-default-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner session-greeter-default-session test-gobject-greeter diff --git a/tests/test-session-greeter-hide-users b/tests/test-session-greeter-hide-users new file mode 100755 index 00000000..a988b097 --- /dev/null +++ b/tests/test-session-greeter-hide-users @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner session-greeter-hide-users test-gobject-greeter diff --git a/tests/test-session-greeter-show-manual-login b/tests/test-session-greeter-show-manual-login new file mode 100755 index 00000000..da0f67dc --- /dev/null +++ b/tests/test-session-greeter-show-manual-login @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner session-greeter-show-manual-login test-gobject-greeter diff --git a/tests/test-session-greeter-show-remote-login b/tests/test-session-greeter-show-remote-login new file mode 100755 index 00000000..b6318345 --- /dev/null +++ b/tests/test-session-greeter-show-remote-login @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner session-greeter-show-remote-login test-gobject-greeter -- cgit v1.2.1