summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2015-11-17 14:43:48 +1300
committerRobert Ancell <robert.ancell@canonical.com>2015-11-17 14:43:48 +1300
commit1bdcc9591215782f279bb5196d7ccf27e74c257e (patch)
tree24970704d7f8ba6e4425e617502b09fecd882662
parentaa336a1a4ff0c61e3695bd4768f7825058b1f15b (diff)
downloadlightdm-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.am12
-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.conf2
-rw-r--r--tests/scripts/xdmcp-client-xorg-1.16.conf30
-rw-r--r--tests/scripts/xdmcp-server-autologin.conf45
-rw-r--r--tests/scripts/xdmcp-server-double-login.conf100
-rw-r--r--tests/scripts/xdmcp-server-guest.conf62
-rw-r--r--tests/scripts/xdmcp-server-login.conf4
-rw-r--r--tests/scripts/xdmcp-server-open-file-descriptors.conf4
-rw-r--r--tests/scripts/xremote-autologin.conf30
-rw-r--r--tests/scripts/xremote-login.conf45
-rw-r--r--tests/scripts/xserver-config.conf32
-rw-r--r--tests/src/X.c88
-rwxr-xr-xtests/test-allow-tcp2
-rwxr-xr-xtests/test-allow-tcp-xorg-1.172
-rwxr-xr-xtests/test-xdmcp-client-xorg-1.162
-rwxr-xr-xtests/test-xremote-autologin2
-rwxr-xr-xtests/test-xremote-login2
-rwxr-xr-xtests/test-xserver-config2
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