Diff options
| author | Bryce Kwon <bryce@brycekwon.com> | |
|---|---|---|
| committer | Bryce Kwon <bryce@brycekwon.com> | |
| commit | ||
| parent | ||
| tree | ||
| download | ||
Say when logins are unavailable
The way back was signed part way through the form, so while the secret's
directory did not exist, or a library was missing, cgit's error landed
inside the hidden input and the page broke off there with no fields.
Diffstat (limited to 'tests/extensions/test-auth.lua')
| -rw-r--r-- | tests/extensions/test-auth.lua | 17 |
1 file changed, 16 insertions, 1 deletion
diff --git a/tests/extensions/test-auth.lua b/tests/extensions/test-auth.lua index 974544d..3a4fabf 100644 --- a/tests/extensions/test-auth.lua +++ b/tests/extensions/test-auth.lua @@ -302,6 +302,18 @@ h.contains("a failed login says so", out, "<p class='login-error' role='alert'>Wrong username or password.</p>") h.equals("and leaves the flag out of the way back", way_back_in(out), "/repo/log/?q=x") +-- The real get_secret, pointed at a directory nobody made, cannot sign the +-- way back, so the page says so whole rather than breaking off in the form. +h.load_with(script, { { "local secret_filename = \"/var/lib/cgit/auth-secret\"", + "local secret_filename = \"no-such-directory/auth-secret\"" } }) +out = run_action("body", {}) +h.contains("a secret that cannot be made leaves a page saying so", out, + "<p class='login-error' role='alert'>Logins are unavailable. The server's error log says why.</p>") +h.excludes("with no form to fill in", out, "<form") +h.contains("and the error log names the directory", h.error_log(), + "as no-such-directory is missing or not writable by cgit\n") +load_script() + local way_back = secure_value("redirect", "/repo/", 0) out = login("Alice", password, way_back) @@ -373,6 +385,9 @@ for _, name in ipairs({ "openssl.rand", "openssl.hmac", "posix.sys.stat", "posix end h.equals("without the libraries a public repository is served", visit("unlisted"), 1) h.check("while a protected one fails closed", not pcall(visit, "secret-repo", session)) -h.check("and so does its login form", not pcall(run_action, "body", {})) +out = run_action("body", {}) +h.contains("and its login page says logins are unavailable", out, "Logins are unavailable.") +h.excludes("and no form to fill in", out, "<form") +h.contains("while the error log names the missing library", h.error_log(), "openssl.rand") h.finish() |
