summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2015-11-17 12:38:56 +1300
committerRobert Ancell <robert.ancell@canonical.com>2015-11-17 12:38:56 +1300
commit59b8d005821cb60f00a5119d8022f314bb38c1db (patch)
tree538a6d2053229901bc5ccd483ab09cb1b2ec0665
parenta812213cf499ffa2f3baa44dac89508b3a1a0154 (diff)
downloadlightdm-59b8d005821cb60f00a5119d8022f314bb38c1db.tar.gz
Make XDMCP tests more controllable
-rw-r--r--tests/scripts/xdmcp-server-autologin.conf4
-rw-r--r--tests/scripts/xdmcp-server-double-login.conf8
-rw-r--r--tests/scripts/xdmcp-server-guest.conf4
-rw-r--r--tests/scripts/xdmcp-server-login.conf4
-rw-r--r--tests/scripts/xdmcp-server-open-file-descriptors.conf4
-rw-r--r--tests/src/X.c64
6 files changed, 56 insertions, 32 deletions
diff --git a/tests/scripts/xdmcp-server-autologin.conf b/tests/scripts/xdmcp-server-autologin.conf
index 92a45f1d..414ab0fe 100644
--- a/tests/scripts/xdmcp-server-autologin.conf
+++ b/tests/scripts/xdmcp-server-autologin.conf
@@ -26,9 +26,9 @@ autologin-user=have-password1
# 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-double-login.conf b/tests/scripts/xdmcp-server-double-login.conf
index bc3acdbe..94efd55b 100644
--- a/tests/scripts/xdmcp-server-double-login.conf
+++ b/tests/scripts/xdmcp-server-double-login.conf
@@ -25,9 +25,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
@@ -64,9 +64,9 @@ user-session=default
# Negotiate with daemon
#?XSERVER-99 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS=""
-#?XSERVER-99 SEND-REQUEST DISPLAY-NUMBER=99 AUTHORIZATION-NAME="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER"
+#?*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 SESSION-ID=[0-9]* DISPLAY-NUMBER=99 DISPLAY-CLASS="DISPLAY CLASS"
+#?*XSERVER-99 SEND-MANAGE
# LightDM connects to X server
#?XSERVER-99 ACCEPT-CONNECT
diff --git a/tests/scripts/xdmcp-server-guest.conf b/tests/scripts/xdmcp-server-guest.conf
index 6f5301de..c180026b 100644
--- a/tests/scripts/xdmcp-server-guest.conf
+++ b/tests/scripts/xdmcp-server-guest.conf
@@ -25,9 +25,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-login.conf b/tests/scripts/xdmcp-server-login.conf
index fb3f8090..79cf8edd 100644
--- a/tests/scripts/xdmcp-server-login.conf
+++ b/tests/scripts/xdmcp-server-login.conf
@@ -25,9 +25,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 c0c89f4a..b7fa3f5d 100644
--- a/tests/scripts/xdmcp-server-open-file-descriptors.conf
+++ b/tests/scripts/xdmcp-server-open-file-descriptors.conf
@@ -25,9 +25,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/src/X.c b/tests/src/X.c
index 5621e3b7..d62510b4 100644
--- a/tests/src/X.c
+++ b/tests/src/X.c
@@ -55,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;
@@ -115,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
@@ -137,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
@@ -208,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