From 46dc1a4b57a76c08432c56f758d29f2a39ad46ac Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Mon, 25 Jul 2011 12:49:09 +1000 Subject: [PATCH] Add tests for login with invalid sessions, and autologin with session/xserver crash --- .bzrignore | 3 +- tests/Makefile.am | 21 ++++++-- .../{test-session.desktop => default.desktop} | 0 tests/scripts/autologin-invalid-session.conf | 3 ++ .../scripts/autologin-invalid-session.script | 28 +++++++++++ tests/scripts/autologin-session-crash.conf | 5 ++ tests/scripts/autologin-session-crash.script | 44 ++++++++++++++++ tests/scripts/autologin-xserver-crash.script | 11 ++-- tests/scripts/autologin.script | 2 +- tests/scripts/login-invalid-session.conf | 4 ++ tests/scripts/login-invalid-session.script | 50 +++++++++++++++++++ tests/src/test-gobject-greeter.c | 2 +- tests/src/test-qt-greeter.cpp | 2 +- tests/src/test-runner.c | 1 - tests/test-autologin-invalid-session | 2 + tests/test-autologin-session-crash | 2 + tests/test-autologin-xserver-crash | 2 +- tests/test-login-gobject-invalid-session | 2 + tests/test-login-qt-invalid-session | 2 + 19 files changed, 168 insertions(+), 18 deletions(-) rename tests/data/xsessions/{test-session.desktop => default.desktop} (100%) create mode 100644 tests/scripts/autologin-invalid-session.conf create mode 100644 tests/scripts/autologin-invalid-session.script create mode 100644 tests/scripts/autologin-session-crash.conf create mode 100644 tests/scripts/autologin-session-crash.script create mode 100644 tests/scripts/login-invalid-session.conf create mode 100644 tests/scripts/login-invalid-session.script create mode 100755 tests/test-autologin-invalid-session create mode 100755 tests/test-autologin-session-crash create mode 100755 tests/test-login-gobject-invalid-session create mode 100755 tests/test-login-qt-invalid-session diff --git a/.bzrignore b/.bzrignore index 48fafc23..ce146b06 100644 --- a/.bzrignore +++ b/.bzrignore @@ -56,9 +56,8 @@ tests/data/passwd tests/src/*_moc.cpp tests/src/plymouth tests/src/test-gobject-greeter +tests/src/test-guest-account tests/src/test-qt-greeter tests/src/test-runner tests/src/test-session tests/src/test-xserver -tests/src/test-cleanup-guest -tests/src/test-setup-guest diff --git a/tests/Makefile.am b/tests/Makefile.am index 03c412fa..730d3b23 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -4,15 +4,19 @@ TESTS = \ test-no-config \ test-headless \ test-autologin \ - test-autologin-guest \ - test-autologin-guest-fail-setup-script \ test-autologin-invalid-user \ + test-autologin-invalid-session \ + test-autologin-xserver-crash \ + test-autologin-session-crash \ test-autologin-logout \ + test-autologin-guest \ + test-autologin-guest-fail-setup-script \ test-login-gobject \ test-login-gobject-manual \ test-login-gobject-no-password \ test-login-gobject-wrong-password \ test-login-gobject-invalid-user \ + test-login-gobject-invalid-session \ test-login-gobject-logout \ test-login-gobject-xserver-crash \ test-login-gobject-session-crash \ @@ -28,9 +32,9 @@ TESTS = \ test-switch-to-user \ test-xdmcp-login -# test-autologin-invalid-session -# test-autologin-session-crash # test-autologin-session-exit-error +# test-login-gobject-session-exit-error +# test-login-qt-session-exit-error if COMPILE_LIBLIGHTDM_QT TESTS += \ @@ -39,6 +43,7 @@ TESTS += \ test-login-qt-no-password \ test-login-qt-wrong-password \ test-login-qt-invalid-user \ + test-login-qt-invalid-session \ test-login-qt-logout \ test-login-qt-xserver-crash \ test-login-qt-session-crash \ @@ -64,10 +69,16 @@ EXTRA_DIST = \ scripts/autologin-guest.script \ scripts/autologin-guest-fail-setup-script.conf \ scripts/autologin-guest-fail-setup-script.script \ + scripts/autologin-invalid-session.conf \ + scripts/autologin-invalid-session.script \ scripts/autologin-invalid-user.conf \ scripts/autologin-invalid-user.script \ scripts/autologin-logout.conf \ scripts/autologin-logout.script \ + scripts/autologin-session-crash.conf \ + scripts/autologin-session-crash.script \ + scripts/autologin-xserver-crash.conf \ + scripts/autologin-xserver-crash.script \ scripts/headless.conf \ scripts/headless.script \ scripts/login.conf \ @@ -80,6 +91,8 @@ EXTRA_DIST = \ scripts/login-guest-fail-setup-script.script \ scripts/login-guest-no-setup-script.conf \ scripts/login-guest-no-setup-script.script \ + scripts/login-invalid-session.conf \ + scripts/login-invalid-session.script \ scripts/login-invalid-user.conf \ scripts/login-invalid-user.script \ scripts/login-logout.conf \ diff --git a/tests/data/xsessions/test-session.desktop b/tests/data/xsessions/default.desktop similarity index 100% rename from tests/data/xsessions/test-session.desktop rename to tests/data/xsessions/default.desktop diff --git a/tests/scripts/autologin-invalid-session.conf b/tests/scripts/autologin-invalid-session.conf new file mode 100644 index 00000000..c25c1681 --- /dev/null +++ b/tests/scripts/autologin-invalid-session.conf @@ -0,0 +1,3 @@ +[SeatDefaults] +autologin-user=alice +user-session=invalid diff --git a/tests/scripts/autologin-invalid-session.script b/tests/scripts/autologin-invalid-session.script new file mode 100644 index 00000000..f921586e --- /dev/null +++ b/tests/scripts/autologin-invalid-session.script @@ -0,0 +1,28 @@ +# +# Check can login +# + +RUNNER DAEMON-START + +# X server starts +XSERVER :50 START +XSERVER :50 INDICATE-READY + +# LightDM connects to X server +XSERVER :50 ACCEPT-CONNECT + +# (session fails to start) + +# Greeter starts +GREETER START +XSERVER :50 ACCEPT-CONNECT +GREETER CONNECT-XSERVER :50 +GREETER CONNECT-TO-DAEMON +GREETER CONNECTED-TO-DAEMON + +# Cleanup +*STOP-DAEMON +# Don't know what order they will terminate +(GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +(GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/autologin-session-crash.conf b/tests/scripts/autologin-session-crash.conf new file mode 100644 index 00000000..8bc4cbfc --- /dev/null +++ b/tests/scripts/autologin-session-crash.conf @@ -0,0 +1,5 @@ +[SeatDefaults] +autologin-user=alice + +[test-session-config] +sigsegv=true diff --git a/tests/scripts/autologin-session-crash.script b/tests/scripts/autologin-session-crash.script new file mode 100644 index 00000000..3398ed09 --- /dev/null +++ b/tests/scripts/autologin-session-crash.script @@ -0,0 +1,44 @@ +# +# Check if session crashes then returned to greeter +# + +RUNNER DAEMON-START + +# X server starts +XSERVER :50 START +XSERVER :50 INDICATE-READY + +# LightDM connects to X server +XSERVER :50 ACCEPT-CONNECT + +# Session starts +SESSION START USER=alice +XSERVER :50 ACCEPT-CONNECT +SESSION CONNECT-XSERVER + +# Session crashes +SESSION CRASH + +# X server stops +XSERVER :50 TERMINATE SIGNAL=15 + +# X server starts +XSERVER :50 START +XSERVER :50 INDICATE-READY + +# LightDM connects to X server +XSERVER :50 ACCEPT-CONNECT + +# Greeter starts +GREETER START +XSERVER :50 ACCEPT-CONNECT +GREETER CONNECT-XSERVER :50 +GREETER CONNECT-TO-DAEMON +GREETER CONNECTED-TO-DAEMON + +# Cleanup +*STOP-DAEMON +# Don't know what order they will terminate +(GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +(GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/autologin-xserver-crash.script b/tests/scripts/autologin-xserver-crash.script index f86b33cd..b9d19841 100644 --- a/tests/scripts/autologin-xserver-crash.script +++ b/tests/scripts/autologin-xserver-crash.script @@ -1,17 +1,17 @@ # -# Check X server crashing during autologin returns to greeter +# Check LightDM returns to the greeter if the X server crashes inside a session # RUNNER DAEMON-START -# X server starts +# XServer starts XSERVER :50 START XSERVER :50 INDICATE-READY # LightDM connects to X server XSERVER :50 ACCEPT-CONNECT -# Default session starts +# Session starts SESSION START USER=alice XSERVER :50 ACCEPT-CONNECT SESSION CONNECT-XSERVER @@ -20,14 +20,12 @@ SESSION CONNECT-XSERVER SESSION CRASH-XSERVER XSERVER :50 CRASH -# Session terminates +# User session is terminated SESSION TERMINATE SIGNAL=15 # X server restarts XSERVER :50 START XSERVER :50 INDICATE-READY - -# LightDM connects to X server XSERVER :50 ACCEPT-CONNECT # Greeter starts @@ -37,7 +35,6 @@ GREETER CONNECT-XSERVER :50 GREETER CONNECT-TO-DAEMON GREETER CONNECTED-TO-DAEMON -# Cleanup *STOP-DAEMON # Don't know what order they will terminate (GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) diff --git a/tests/scripts/autologin.script b/tests/scripts/autologin.script index e41e937c..697c5283 100644 --- a/tests/scripts/autologin.script +++ b/tests/scripts/autologin.script @@ -11,7 +11,7 @@ XSERVER :50 INDICATE-READY # LightDM connects to X server XSERVER :50 ACCEPT-CONNECT -# Default session starts +# Session starts SESSION START USER=alice XSERVER :50 ACCEPT-CONNECT SESSION CONNECT-XSERVER diff --git a/tests/scripts/login-invalid-session.conf b/tests/scripts/login-invalid-session.conf new file mode 100644 index 00000000..2459f7f5 --- /dev/null +++ b/tests/scripts/login-invalid-session.conf @@ -0,0 +1,4 @@ +[test-greeter-config] +username=alice +password=password +session=invalid diff --git a/tests/scripts/login-invalid-session.script b/tests/scripts/login-invalid-session.script new file mode 100644 index 00000000..a62043a1 --- /dev/null +++ b/tests/scripts/login-invalid-session.script @@ -0,0 +1,50 @@ +# +# Check can login +# + +RUNNER DAEMON-START + +# X server starts +XSERVER :50 START +XSERVER :50 INDICATE-READY + +# LightDM connects to X server +XSERVER :50 ACCEPT-CONNECT + +# Greeter starts +GREETER START +XSERVER :50 ACCEPT-CONNECT +GREETER CONNECT-XSERVER :50 +GREETER CONNECT-TO-DAEMON +GREETER CONNECTED-TO-DAEMON + +# Login as alice +GREETER AUTHENTICATE USERNAME=alice +GREETER SHOW-PROMPT TEXT="Password:" +GREETER RESPOND TEXT="password" +GREETER AUTHENTICATION-COMPLETE USERNAME=alice AUTHENTICATED=TRUE +GREETER TERMINATE SIGNAL=15 + +# X server stops, the session is invalid +XSERVER :50 TERMINATE SIGNAL=15 + +# X server restarts +XSERVER :50 START +XSERVER :50 INDICATE-READY + +# LightDM connects to X server +XSERVER :50 ACCEPT-CONNECT + +# Greeter starts +GREETER START +XSERVER :50 ACCEPT-CONNECT +GREETER CONNECT-XSERVER :50 +GREETER CONNECT-TO-DAEMON +GREETER CONNECTED-TO-DAEMON + +# Cleanup +*STOP-DAEMON +# Don't know what order they will terminate +(GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +(GREETER TERMINATE SIGNAL=15|XSERVER :50 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 7e8ccd6d..293dba67 100644 --- a/tests/src/test-gobject-greeter.c +++ b/tests/src/test-gobject-greeter.c @@ -53,7 +53,7 @@ authentication_complete_cb (LightDMGreeter *greeter) if (!lightdm_greeter_get_is_authenticated (greeter)) return; - if (!lightdm_greeter_start_session_sync (greeter, NULL, NULL)) + if (!lightdm_greeter_start_session_sync (greeter, g_key_file_get_string (config, "test-greeter-config", "session", NULL), NULL)) notify_status ("GREETER SESSION-FAILED"); } diff --git a/tests/src/test-qt-greeter.cpp b/tests/src/test-qt-greeter.cpp index fccea0f2..08817a9c 100644 --- a/tests/src/test-qt-greeter.cpp +++ b/tests/src/test-qt-greeter.cpp @@ -54,7 +54,7 @@ void TestGreeter::authenticationComplete () if (!isAuthenticated ()) return; - if (!startSessionSync ()) + if (!startSessionSync (config->value ("test-greeter-config/session").toString ())) notify_status ("GREETER SESSION-FAILED"); } diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c index 863059cf..5bf5ddf6 100644 --- a/tests/src/test-runner.c +++ b/tests/src/test-runner.c @@ -588,7 +588,6 @@ main (int argc, char **argv) g_string_append(command_line, " --xserver-command=test-xserver"); if (greeter) g_string_append_printf (command_line, " --greeter-session=%s", greeter); - g_string_append (command_line, " --user-session=test-session"); g_string_append (command_line, " --session-wrapper="); g_string_append_printf (command_line, " --passwd-file %s/passwd", temp_dir); g_string_append_printf (command_line, " --cache-dir %s/cache", temp_dir); diff --git a/tests/test-autologin-invalid-session b/tests/test-autologin-invalid-session new file mode 100755 index 00000000..24cf7ed4 --- /dev/null +++ b/tests/test-autologin-invalid-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner autologin-invalid-session test-gobject-greeter diff --git a/tests/test-autologin-session-crash b/tests/test-autologin-session-crash new file mode 100755 index 00000000..257df5f5 --- /dev/null +++ b/tests/test-autologin-session-crash @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner autologin-session-crash test-gobject-greeter diff --git a/tests/test-autologin-xserver-crash b/tests/test-autologin-xserver-crash index 2b9feaf9..7dafa999 100755 --- a/tests/test-autologin-xserver-crash +++ b/tests/test-autologin-xserver-crash @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner autologin-xserver-crash +./src/test-runner autologin-xserver-crash test-gobject-greeter diff --git a/tests/test-login-gobject-invalid-session b/tests/test-login-gobject-invalid-session new file mode 100755 index 00000000..22b0c1e3 --- /dev/null +++ b/tests/test-login-gobject-invalid-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner login-invalid-session test-gobject-greeter diff --git a/tests/test-login-qt-invalid-session b/tests/test-login-qt-invalid-session new file mode 100755 index 00000000..11d0d584 --- /dev/null +++ b/tests/test-login-qt-invalid-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner login-invalid-session test-qt-greeter -- 2.39.2