@@ -444,6 +444,55 @@ defmodule PlausibleWeb.AuthControllerTest do
444444 end
445445 end
446446
447+ describe "POST /login failed attempt logs" do
448+ import ExUnit.CaptureLog
449+
450+ setup do
451+ patch_env ( :log_failed_login_attempts , true )
452+ end
453+
454+ test "on missing user" , % { conn: conn } do
455+ logs =
456+ capture_log ( fn ->
457+ post ( conn , "/login" , email: "user@example.com" , password: "password" )
458+ end )
459+
460+ assert logs =~ "[warning] [login] user not found for user@example.com"
461+ end
462+
463+ test "on wrong password" , % { conn: conn } do
464+ user = insert ( :user , password: "password" )
465+
466+ logs =
467+ capture_log ( fn ->
468+ post ( conn , "/login" , email: user . email , password: "wrong" )
469+ end )
470+
471+ assert logs =~ "[warning] [login] wrong password for #{ user . email } "
472+ end
473+
474+ test "on too many login attempts" , % { conn: conn } do
475+ user = insert ( :user , password: "password" )
476+
477+ capture_log ( fn ->
478+ for _ <- 1 .. 5 do
479+ build_conn ( )
480+ |> put_req_header ( "x-forwarded-for" , "1.1.1.1" )
481+ |> post ( "/login" , email: user . email , password: "wrong" )
482+ end
483+ end )
484+
485+ logs =
486+ capture_log ( fn ->
487+ conn
488+ |> put_req_header ( "x-forwarded-for" , "1.1.1.1" )
489+ |> post ( "/login" , email: user . email , password: "wrong" )
490+ end )
491+
492+ assert logs =~ "[warning] [login] too many logging attempts for #{ user . email } "
493+ end
494+ end
495+
447496 describe "GET /password/request-reset" do
448497 test "renders the form" , % { conn: conn } do
449498 conn = get ( conn , "/password/request-reset" )
0 commit comments