diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2015-11-17 14:43:48 +1300 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2015-11-17 14:43:48 +1300 |
commit | 1bdcc9591215782f279bb5196d7ccf27e74c257e (patch) | |
tree | 24970704d7f8ba6e4425e617502b09fecd882662 | |
parent | aa336a1a4ff0c61e3695bd4768f7825058b1f15b (diff) | |
download | lightdm-git-1bdcc9591215782f279bb5196d7ccf27e74c257e.tar.gz |
Backport test improvements:
- Make XDMCP tests more controllable
- Make tests use Xorg 1.17 by default
- Add xremote tests
- Add a regression test for xserver-layout option.
- Test xserver-config option
-rw-r--r-- | tests/Makefile.am | 12 | ||||
-rw-r--r-- | tests/scripts/allow-tcp.conf (renamed from tests/scripts/allow-tcp-xorg-1.17.conf) | 5 | ||||
-rw-r--r-- | tests/scripts/login-remote-session.conf | 2 | ||||
-rw-r--r-- | tests/scripts/xdmcp-client-xorg-1.16.conf | 30 | ||||
-rw-r--r-- | tests/scripts/xdmcp-server-autologin.conf | 45 | ||||
-rw-r--r-- | tests/scripts/xdmcp-server-double-login.conf | 100 | ||||
-rw-r--r-- | tests/scripts/xdmcp-server-guest.conf | 62 | ||||
-rw-r--r-- | tests/scripts/xdmcp-server-login.conf | 4 | ||||
-rw-r--r-- | tests/scripts/xdmcp-server-open-file-descriptors.conf | 4 | ||||
-rw-r--r-- | tests/scripts/xremote-autologin.conf | 30 | ||||
-rw-r--r-- | tests/scripts/xremote-login.conf | 45 | ||||
-rw-r--r-- | tests/scripts/xserver-config.conf | 32 | ||||
-rw-r--r-- | tests/src/X.c | 88 | ||||
-rwxr-xr-x | tests/test-allow-tcp | 2 | ||||
-rwxr-xr-x | tests/test-allow-tcp-xorg-1.17 | 2 | ||||
-rwxr-xr-x | tests/test-xdmcp-client-xorg-1.16 | 2 | ||||
-rwxr-xr-x | tests/test-xremote-autologin | 2 | ||||
-rwxr-xr-x | tests/test-xremote-login | 2 | ||||
-rwxr-xr-x | tests/test-xserver-config | 2 |
19 files changed, 437 insertions, 34 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index dd461647..ac696064 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -34,8 +34,9 @@ TESTS = \ test-autologin-new-authtok \ test-autologin-gobject-timeout \ test-autologin-gobject-guest-timeout \ + test-xserver-config \ + test-allow-tcp \ test-allow-tcp-xorg-1.16 \ - test-allow-tcp-xorg-1.17 \ test-change-authentication \ test-restart-authentication \ test-gobject-cancel-authentication \ @@ -159,7 +160,10 @@ TESTS = \ test-vnc-command \ test-vnc-dimensions \ test-vnc-open-file-descriptors \ + test-xremote-autologin \ + test-xremote-login \ test-xdmcp-client \ + test-xdmcp-client-xorg-1.16 \ test-xdmcp-server-login \ test-utmp-login \ test-utmp-autologin \ @@ -352,8 +356,8 @@ EXTRA_DIST = \ scripts/additional-config-priority.conf \ scripts/additional-system-config.conf \ scripts/additional-system-config-priority.conf \ + scripts/allow-tcp.conf \ scripts/allow-tcp-xorg-1.16.conf \ - scripts/allow-tcp-xorg-1.17.conf \ scripts/audit-autologin.conf \ scripts/autologin.conf \ scripts/autologin-guest.conf \ @@ -556,7 +560,11 @@ EXTRA_DIST = \ scripts/xdg-current-desktop-legacy.conf \ scripts/xdg-seat.conf \ scripts/xdmcp-client.conf \ + scripts/xdmcp-client-xorg-1.16.conf \ scripts/xdmcp-server-login.conf \ scripts/xdmcp-server-open-file-descriptors.conf \ + scripts/xremote-autologin.conf \ + scripts/xremote-login.conf \ + scripts/xserver-config.conf \ scripts/xserver-fail-start.conf \ scripts/xserver-no-share.conf diff --git a/tests/scripts/allow-tcp-xorg-1.17.conf b/tests/scripts/allow-tcp.conf index aa3fdb41..dcaf7e6d 100644 --- a/tests/scripts/allow-tcp-xorg-1.17.conf +++ b/tests/scripts/allow-tcp.conf @@ -1,10 +1,7 @@ # -# Check can enable TCP listening in X.Org >= 1.17 (default is listening disabled) +# Check can enable TCP listening # -[test-xserver-config] -version=1.17.0 - [Seat:*] autologin-user=have-password1 user-session=default diff --git a/tests/scripts/login-remote-session.conf b/tests/scripts/login-remote-session.conf index df6f63e9..7661b8da 100644 --- a/tests/scripts/login-remote-session.conf +++ b/tests/scripts/login-remote-session.conf @@ -1,5 +1,5 @@ # -# Check can login without a username, and is prompted for one +# Check can remotely authenticate for a session # #?*START-DAEMON diff --git a/tests/scripts/xdmcp-client-xorg-1.16.conf b/tests/scripts/xdmcp-client-xorg-1.16.conf new file mode 100644 index 00000000..c41cb13e --- /dev/null +++ b/tests/scripts/xdmcp-client-xorg-1.16.conf @@ -0,0 +1,30 @@ +# +# Check can run a local XDMCP client in X.Org < 1.17 (default is listening enabled) +# + +[test-xserver-config] +version=1.16.0 + +[Seat:*] +xdmcp-manager=127.0.0.1 + +#?*START-DAEMON +#?RUNNER DAEMON-START + +# X server starts +#?XSERVER-0 START VT=7 LISTEN-TCP SEAT=seat0 +#?*XSERVER-0 INDICATE-READY +#?XSERVER-0 INDICATE-READY +#?XSERVER-0 ACCEPT-CONNECT + +# Starts sending XDMCP queries +#?*XSERVER-0 START-XDMCP +#?XSERVER-0 SEND-QUERY + +# Wait to check a greeter is not started +#?*WAIT + +# Cleanup +#?*STOP-DAEMON +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/xdmcp-server-autologin.conf b/tests/scripts/xdmcp-server-autologin.conf new file mode 100644 index 00000000..f0ac8740 --- /dev/null +++ b/tests/scripts/xdmcp-server-autologin.conf @@ -0,0 +1,45 @@ +# +# Check that a remote X server can autologin via XDMCP +# + +[LightDM] +start-default-seat=false + +[XDMCPServer] +enabled=true + +[SeatDefaults] +user-session=default +autologin-user=have-password1 + +#?*START-DAEMON +#?RUNNER DAEMON-START +#?*WAIT + +# Start a remote X server to log in with XDMCP +#?*START-XSERVER ARGS=":98 -query 127.0.0.1 -nolisten unix" +#?XSERVER-98 START LISTEN-TCP NO-LISTEN-UNIX + +# Start sending XDMCP queries +#?*XSERVER-98 START-XDMCP +#?XSERVER-98 SEND-QUERY + +# Negotiate with daemon +#?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" +#?*XSERVER-98 SEND-MANAGE + +# LightDM connects to X server +#?XSERVER-98 ACCEPT-CONNECT + +# Session starts +#?SESSION-X-127.0.0.1:98 START XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-98 ACCEPT-CONNECT +#?SESSION-X-127.0.0.1:98 CONNECT-XSERVER + +# Clean up +#?*STOP-DAEMON +#?SESSION-X-127.0.0.1:98 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/xdmcp-server-double-login.conf b/tests/scripts/xdmcp-server-double-login.conf new file mode 100644 index 00000000..3c7a0506 --- /dev/null +++ b/tests/scripts/xdmcp-server-double-login.conf @@ -0,0 +1,100 @@ +# +# Check that two remote X servers can login via XDMCP +# + +[LightDM] +start-default-seat=false + +[XDMCPServer] +enabled=true + +[SeatDefaults] +user-session=default + +#?*START-DAEMON +#?RUNNER DAEMON-START +#?*WAIT + +# Start a remote X server to log in with XDMCP +#?*START-XSERVER ARGS=":98 -query 127.0.0.1 -nolisten unix" +#?XSERVER-98 START LISTEN-TCP NO-LISTEN-UNIX + +# Start sending XDMCP queries +#?*XSERVER-98 START-XDMCP +#?XSERVER-98 SEND-QUERY + +# Negotiate with daemon +#?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" +#?*XSERVER-98 SEND-MANAGE + +# LightDM connects to X server +#?XSERVER-98 ACCEPT-CONNECT + +# Greeter starts and connects to remote X server +#?GREETER-X-127.0.0.1:98 START XDG_SESSION_CLASS=greeter +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-98 ACCEPT-CONNECT +#?GREETER-X-127.0.0.1:98 CONNECT-XSERVER +#?GREETER-X-127.0.0.1:98 CONNECT-TO-DAEMON +#?GREETER-X-127.0.0.1:98 CONNECTED-TO-DAEMON + +# Log in +#?*GREETER-X-127.0.0.1:98 AUTHENTICATE USERNAME=have-password1 +#?GREETER-X-127.0.0.1:98 SHOW-PROMPT TEXT="Password:" +#?*GREETER-X-127.0.0.1:98 RESPOND TEXT="password" +#?GREETER-X-127.0.0.1:98 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE +#?*GREETER-X-127.0.0.1:98 START-SESSION +#?GREETER-X-127.0.0.1:98 TERMINATE SIGNAL=15 + +# Session starts +#?SESSION-X-127.0.0.1:98 START XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c1 +#?XSERVER-98 ACCEPT-CONNECT +#?SESSION-X-127.0.0.1:98 CONNECT-XSERVER + +# Start a second remote X server to log in with XDMCP +#?*START-XSERVER ARGS=":99 -query 127.0.0.1 -nolisten unix" +#?XSERVER-99 START LISTEN-TCP NO-LISTEN-UNIX + +# Start sending XDMCP queries +#?*XSERVER-99 START-XDMCP +#?XSERVER-99 SEND-QUERY + +# Negotiate with daemon +#?XSERVER-99 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" +#?*XSERVER-99 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?XSERVER-99 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" +#?*XSERVER-99 SEND-MANAGE + +# LightDM connects to X server +#?XSERVER-99 ACCEPT-CONNECT + +# Greeter starts and connects to remote X server +#?GREETER-X-127.0.0.1:99 START XDG_SESSION_CLASS=greeter +#?LOGIN1 ACTIVATE-SESSION SESSION=c2 +#?XSERVER-99 ACCEPT-CONNECT +#?GREETER-X-127.0.0.1:99 CONNECT-XSERVER +#?GREETER-X-127.0.0.1:99 CONNECT-TO-DAEMON +#?GREETER-X-127.0.0.1:99 CONNECTED-TO-DAEMON + +# Log in +#?*GREETER-X-127.0.0.1:99 AUTHENTICATE USERNAME=have-password1 +#?GREETER-X-127.0.0.1:99 SHOW-PROMPT TEXT="Password:" +#?*GREETER-X-127.0.0.1:99 RESPOND TEXT="password" +#?GREETER-X-127.0.0.1:99 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE +#?*GREETER-X-127.0.0.1:99 START-SESSION +#?GREETER-X-127.0.0.1:99 TERMINATE SIGNAL=15 + +# Session starts +#?SESSION-X-127.0.0.1:99 START XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c3 +#?XSERVER-99 ACCEPT-CONNECT +#?SESSION-X-127.0.0.1:99 CONNECT-XSERVER + +# Clean up +#?*STOP-DAEMON +#?SESSION-X-127.0.0.1:98 TERMINATE SIGNAL=15 +#?SESSION-X-127.0.0.1:99 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/xdmcp-server-guest.conf b/tests/scripts/xdmcp-server-guest.conf new file mode 100644 index 00000000..7cd25955 --- /dev/null +++ b/tests/scripts/xdmcp-server-guest.conf @@ -0,0 +1,62 @@ +# +# Check can log into a guest account via XDMCP +# + +[LightDM] +start-default-seat=false + +[XDMCPServer] +enabled=true + +[SeatDefaults] +user-session=default + +#?*START-DAEMON +#?RUNNER DAEMON-START +#?*WAIT + +# Start a remote X server to log in with XDMCP +#?*START-XSERVER ARGS=":98 -query 127.0.0.1 -nolisten unix" +#?XSERVER-98 START LISTEN-TCP NO-LISTEN-UNIX + +# Start sending XDMCP queries +#?*XSERVER-98 START-XDMCP +#?XSERVER-98 SEND-QUERY + +# Negotiate with daemon +#?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" +#?*XSERVER-98 SEND-MANAGE + +# LightDM connects to X server +#?XSERVER-98 ACCEPT-CONNECT + +# Greeter starts and connects to remote X server +#?GREETER-X-127.0.0.1:98 START XDG_SESSION_CLASS=greeter +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-98 ACCEPT-CONNECT +#?GREETER-X-127.0.0.1:98 CONNECT-XSERVER +#?GREETER-X-127.0.0.1:98 CONNECT-TO-DAEMON +#?GREETER-X-127.0.0.1:98 CONNECTED-TO-DAEMON + +# Log in +#?*GREETER-X-127.0.0.1:98 AUTHENTICATE-GUEST +#?GREETER-X-127.0.0.1:98 AUTHENTICATION-COMPLETE AUTHENTICATED=TRUE +#?*GREETER-X-127.0.0.1:98 START-SESSION +#?GREETER-X-127.0.0.1:98 TERMINATE SIGNAL=15 + +# Guest account created +#?GUEST-ACCOUNT ADD USERNAME=guest-.* + +# Guest session starts +#?SESSION-X-127.0.0.1:98 START XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=guest-.* +#?LOGIN1 ACTIVATE-SESSION SESSION=c1 +#?XSERVER-98 ACCEPT-CONNECT +#?SESSION-X-127.0.0.1:98 CONNECT-XSERVER + +# Clean up +#?*STOP-DAEMON +#?SESSION-X-127.0.0.1:98 TERMINATE SIGNAL=15 +#?GUEST-ACCOUNT REMOVE USERNAME=guest-.* +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/xdmcp-server-login.conf b/tests/scripts/xdmcp-server-login.conf index bd43127d..42d8bc7f 100644 --- a/tests/scripts/xdmcp-server-login.conf +++ b/tests/scripts/xdmcp-server-login.conf @@ -26,9 +26,9 @@ user-session=default # Negotiate with daemon #?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-98 SEND-REQUEST DISPLAY-NUMBER=98 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-98 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=98 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-98 SEND-MANAGE # LightDM connects to X server #?XSERVER-98 ACCEPT-CONNECT diff --git a/tests/scripts/xdmcp-server-open-file-descriptors.conf b/tests/scripts/xdmcp-server-open-file-descriptors.conf index c87497ed..7606e154 100644 --- a/tests/scripts/xdmcp-server-open-file-descriptors.conf +++ b/tests/scripts/xdmcp-server-open-file-descriptors.conf @@ -26,9 +26,9 @@ user-session=default # Negotiate with daemon #?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" -#?XSERVER-98 SEND-REQUEST DISPLAY-NUMBER=98 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="127.0.0.1" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" #?XSERVER-98 GOT-ACCEPT SESSION-ID=[0-9]* AUTHENTICATION-NAME="" AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" -#?XSERVER-98 SEND-MANAGE SESSION-ID=[0-9]* DISPLAY-NUMBER=98 DISPLAY-CLASS="DISPLAY CLASS" +#?*XSERVER-98 SEND-MANAGE # LightDM connects to X server #?XSERVER-98 ACCEPT-CONNECT diff --git a/tests/scripts/xremote-autologin.conf b/tests/scripts/xremote-autologin.conf new file mode 100644 index 00000000..45ebaea9 --- /dev/null +++ b/tests/scripts/xremote-autologin.conf @@ -0,0 +1,30 @@ +# +# Check can automatically log into a remote X server +# + +[Seat:*] +type=xremote +autologin-user=have-password1 +user-session=default +xserver-display-number=98 + +# Start a remote X server to use +#?*START-XSERVER ARGS=":98 -listen tcp" +#?XSERVER-98 START LISTEN-TCP + +#?*START-DAEMON +#?RUNNER DAEMON-START + +# LightDM connects to X server +#?XSERVER-98 ACCEPT-CONNECT + +# Session starts +#?SESSION-X-127.0.0.1:98 START XDG_SEAT=seat0 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-98 ACCEPT-CONNECT +#?SESSION-X-127.0.0.1:98 CONNECT-XSERVER + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-127.0.0.1:98 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/xremote-login.conf b/tests/scripts/xremote-login.conf new file mode 100644 index 00000000..e8af8311 --- /dev/null +++ b/tests/scripts/xremote-login.conf @@ -0,0 +1,45 @@ +# +# Check can log into a remote X server +# + +[Seat:*] +type=xremote +user-session=default +xserver-display-number=98 + +# Start a remote X server to use +#?*START-XSERVER ARGS=":98 -listen tcp" +#?XSERVER-98 START LISTEN-TCP + +#?*START-DAEMON +#?RUNNER DAEMON-START + +# LightDM connects to X server +#?XSERVER-98 ACCEPT-CONNECT + +# Greeter starts +#?GREETER-X-127.0.0.1:98 START XDG_SEAT=seat0 XDG_SESSION_CLASS=greeter +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-98 ACCEPT-CONNECT +#?GREETER-X-127.0.0.1:98 CONNECT-XSERVER +#?GREETER-X-127.0.0.1:98 CONNECT-TO-DAEMON +#?GREETER-X-127.0.0.1:98 CONNECTED-TO-DAEMON + +# Log into account with a password +#?*GREETER-X-127.0.0.1:98 AUTHENTICATE USERNAME=have-password1 +#?GREETER-X-127.0.0.1:98 SHOW-PROMPT TEXT="Password:" +#?*GREETER-X-127.0.0.1:98 RESPOND TEXT="password" +#?GREETER-X-127.0.0.1:98 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE +#?*GREETER-X-127.0.0.1:98 START-SESSION +#?GREETER-X-127.0.0.1:98 TERMINATE SIGNAL=15 + +# Session starts +#?SESSION-X-127.0.0.1:98 START XDG_SEAT=seat0 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c1 +#?XSERVER-98 ACCEPT-CONNECT +#?SESSION-X-127.0.0.1:98 CONNECT-XSERVER + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-127.0.0.1:98 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/xserver-config.conf b/tests/scripts/xserver-config.conf new file mode 100644 index 00000000..673a011f --- /dev/null +++ b/tests/scripts/xserver-config.conf @@ -0,0 +1,32 @@ +# +# Check can set X server configuration +# + +[Seat:*] +autologin-user=have-password1 +user-session=default +xserver-config=custom.conf +xserver-layout=custom + +#?*START-DAEMON +#?RUNNER DAEMON-START + +# X server starts +#?XSERVER-0 START CONFIG=custom.conf LAYOUT=custom 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=default USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?SESSION-X-0 CONNECT-XSERVER + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-0 TERMINATE SIGNAL=15 +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/src/X.c b/tests/src/X.c index 1a294fea..e35d0086 100644 --- a/tests/src/X.c +++ b/tests/src/X.c @@ -31,6 +31,12 @@ static gboolean listen_tcp = TRUE; /* TRUE if we allow Unix connections */ static gboolean listen_unix = TRUE; +/* Configuration to use */ +static gchar *config_file = NULL; + +/* Configuration layout to use */ +static gchar *layout = NULL; + /* Path to authority database to use */ static gchar *auth_path = NULL; @@ -49,6 +55,9 @@ static XServer *xserver = NULL; /* XDMCP client */ static XDMCPClient *xdmcp_client = NULL; +/* Session ID provided by XDMCP server */ +static guint32 xdmcp_session_id = 0; + /* Authorization provided by XDMCP server */ static guint16 xdmcp_cookie_length = 0; static guint8 *xdmcp_cookie = NULL; @@ -109,21 +118,7 @@ xdmcp_query_cb (XDMCPClient *client) static void xdmcp_willing_cb (XDMCPClient *client, XDMCPWilling *message) { - gchar **authorization_names; - GInetAddress *addresses[2]; - status_notify ("%s GOT-WILLING AUTHENTICATION-NAME=\"%s\" HOSTNAME=\"%s\" STATUS=\"%s\"", id, message->authentication_name, message->hostname, message->status); - - status_notify ("%s SEND-REQUEST DISPLAY-NUMBER=%d AUTHORIZATION-NAME=\"%s\" MFID=\"%s\"", id, display_number, "MIT-MAGIC-COOKIE-1", "TEST XSERVER"); - - authorization_names = g_strsplit ("MIT-MAGIC-COOKIE-1", " ", -1); - addresses[0] = xdmcp_client_get_local_address (client); - addresses[1] = NULL; - xdmcp_client_send_request (client, display_number, - addresses, - "", NULL, 0, - authorization_names, "TEST XSERVER"); - g_strfreev (authorization_names); } static void @@ -131,17 +126,12 @@ xdmcp_accept_cb (XDMCPClient *client, XDMCPAccept *message) { status_notify ("%s GOT-ACCEPT SESSION-ID=%d AUTHENTICATION-NAME=\"%s\" AUTHORIZATION-NAME=\"%s\"", id, message->session_id, message->authentication_name, message->authorization_name); - /* Ignore if haven't picked a valid authorization */ - if (strcmp (message->authorization_name, "MIT-MAGIC-COOKIE-1") != 0) - return; + xdmcp_session_id = message->session_id; g_free (xdmcp_cookie); xdmcp_cookie_length = message->authorization_data_length; xdmcp_cookie = g_malloc (message->authorization_data_length); memcpy (xdmcp_cookie, message->authorization_data, message->authorization_data_length); - - status_notify ("%s SEND-MANAGE SESSION-ID=%d DISPLAY-NUMBER=%d DISPLAY-CLASS=\"%s\"", id, message->session_id, display_number, "DISPLAY CLASS"); - xdmcp_client_send_manage (client, message->session_id, display_number, "DISPLAY CLASS"); } static void @@ -202,6 +192,46 @@ request_cb (const gchar *name, GHashTable *params) if (!xdmcp_client_start (xdmcp_client)) quit (EXIT_FAILURE); } + + else if (strcmp (name, "SEND-REQUEST") == 0) + { + const gchar *addresses_list, *authorization_names_list, *mfid; + gchar **list, **authorization_names; + gsize list_length; + gint i; + GInetAddress **addresses; + + addresses_list = g_hash_table_lookup (params, "ADDRESSES"); + if (!addresses_list) + addresses_list = ""; + authorization_names_list = g_hash_table_lookup (params, "AUTHORIZATION-NAMES"); + if (!authorization_names_list) + authorization_names_list = ""; + mfid = g_hash_table_lookup (params, "MFID"); + if (!mfid) + mfid = ""; + + list = g_strsplit (addresses_list, " ", -1); + list_length = g_strv_length (list); + addresses = g_malloc (sizeof (GInetAddress *) * (list_length + 1)); + for (i = 0; i < list_length; i++) + addresses[i] = g_inet_address_new_from_string (list[i]); + addresses[i] = NULL; + g_strfreev (list); + + authorization_names = g_strsplit (authorization_names_list, " ", -1); + + xdmcp_client_send_request (xdmcp_client, display_number, + addresses, + "", NULL, 0, + authorization_names, mfid); + g_strfreev (authorization_names); + } + + else if (strcmp (name, "SEND-MANAGE") == 0) + { + xdmcp_client_send_manage (xdmcp_client, xdmcp_session_id, display_number, "DISPLAY CLASS"); + } } static int @@ -244,7 +274,7 @@ main (int argc, char **argv) xorg_version = g_key_file_get_string (config, "test-xserver-config", "version", NULL); if (!xorg_version) - xorg_version = g_strdup ("1.16.0"); + xorg_version = g_strdup ("1.17.0"); tokens = g_strsplit (xorg_version, ".", -1); xorg_version_major = g_strv_length (tokens) > 0 ? atoi (tokens[0]) : 0; xorg_version_minor = g_strv_length (tokens) > 1 ? atoi (tokens[1]) : 0; @@ -261,6 +291,16 @@ main (int argc, char **argv) { display_number = atoi (arg + 1); } + else if (strcmp (arg, "-config") == 0) + { + config_file = argv[i+1]; + i++; + } + else if (strcmp (arg, "-layout") == 0) + { + layout = argv[i+1]; + i++; + } else if (strcmp (arg, "-auth") == 0) { auth_path = argv[i+1]; @@ -345,6 +385,8 @@ main (int argc, char **argv) { g_printerr ("Unrecognized option: %s\n" "Use: %s [:<display>] [option]\n" + "-config file Specify a configuration file\n" + "-layout name Specify the ServerLayout section name\n" "-auth file Select authorization file\n" "-nolisten protocol Don't listen on protocol\n" "-listen protocol Listen on protocol\n" @@ -374,6 +416,10 @@ main (int argc, char **argv) status_text = g_string_new (""); g_string_printf (status_text, "%s START", id); + if (config_file) + g_string_append_printf (status_text, " CONFIG=%s", config_file); + if (layout) + g_string_append_printf (status_text, " LAYOUT=%s", layout); if (vt_number >= 0) g_string_append_printf (status_text, " VT=%d", vt_number); if (listen_tcp) diff --git a/tests/test-allow-tcp b/tests/test-allow-tcp new file mode 100755 index 00000000..d314e7d0 --- /dev/null +++ b/tests/test-allow-tcp @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner allow-tcp test-gobject-greeter diff --git a/tests/test-allow-tcp-xorg-1.17 b/tests/test-allow-tcp-xorg-1.17 deleted file mode 100755 index db2a80b1..00000000 --- a/tests/test-allow-tcp-xorg-1.17 +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./src/dbus-env ./src/test-runner allow-tcp-xorg-1.17 test-gobject-greeter diff --git a/tests/test-xdmcp-client-xorg-1.16 b/tests/test-xdmcp-client-xorg-1.16 new file mode 100755 index 00000000..d6e2f56e --- /dev/null +++ b/tests/test-xdmcp-client-xorg-1.16 @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner xdmcp-client-xorg-1.16 test-gobject-greeter diff --git a/tests/test-xremote-autologin b/tests/test-xremote-autologin new file mode 100755 index 00000000..4cf9f4cf --- /dev/null +++ b/tests/test-xremote-autologin @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner xremote-autologin test-gobject-greeter diff --git a/tests/test-xremote-login b/tests/test-xremote-login new file mode 100755 index 00000000..cab0b5bd --- /dev/null +++ b/tests/test-xremote-login @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner xremote-login test-gobject-greeter diff --git a/tests/test-xserver-config b/tests/test-xserver-config new file mode 100755 index 00000000..9b531dd2 --- /dev/null +++ b/tests/test-xserver-config @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner xserver-config test-gobject-greeter |