]> BookStack Code Mirror - bookstack/commitdiff
Added login throttling test, updated reset-pw test method names 3745/head
authorDan Brown <redacted>
Thu, 22 Sep 2022 16:29:38 +0000 (17:29 +0100)
committerDan Brown <redacted>
Thu, 22 Sep 2022 16:29:38 +0000 (17:29 +0100)
tests/Auth/AuthTest.php
tests/Auth/ResetPasswordTest.php

index f0b473472e723db3fb4c9fa66d21157837a76379..8494697667ab20762bacd65ec663ade5615dd939 100644 (file)
@@ -133,6 +133,19 @@ class AuthTest extends TestCase
         $this->assertFalse(auth()->check());
     }
 
+    public function test_login_attempts_are_rate_limited()
+    {
+        for ($i = 0; $i < 5; $i++) {
+            $resp = $this->login('[email protected]', 'pw123');
+        }
+        $resp = $this->followRedirects($resp);
+        $resp->assertSee('These credentials do not match our records.');
+
+        // Check the fifth attempt provides a lockout response
+        $resp = $this->followRedirects($this->login('[email protected]', 'pw123'));
+        $resp->assertSee('Too many login attempts. Please try again in');
+    }
+
     /**
      * Perform a login.
      */
index 1ab579b268aea4bec271965dbc98ade3a5156e38..7b2d2e72b1cf910f42032543ecad09d24212901f 100644 (file)
@@ -9,7 +9,7 @@ use Tests\TestCase;
 
 class ResetPasswordTest extends TestCase
 {
-    public function test_reset_password_flow()
+    public function test_reset_flow()
     {
         Notification::fake();
 
@@ -52,7 +52,7 @@ class ResetPasswordTest extends TestCase
         $this->get('/')->assertSee('Your password has been successfully reset');
     }
 
-    public function test_reset_password_flow_shows_success_message_even_if_wrong_password_to_prevent_user_discovery()
+    public function test_reset_flow_shows_success_message_even_if_wrong_password_to_prevent_user_discovery()
     {
         $this->get('/password/email');
         $resp = $this->followingRedirects()->post('/password/email', [
@@ -75,7 +75,7 @@ class ResetPasswordTest extends TestCase
             ->assertSee('The password reset token is invalid for this email address.');
     }
 
-    public function test_reset_password_page_shows_sign_links()
+    public function test_reset_page_shows_sign_links()
     {
         $this->setSettings(['registration-enabled' => 'true']);
         $resp = $this->get('/password/email');
@@ -83,7 +83,7 @@ class ResetPasswordTest extends TestCase
             ->assertElementContains('a', 'Sign up');
     }
 
-    public function test_reset_password_request_is_throttled()
+    public function test_reset_request_is_throttled()
     {
         $editor = $this->getEditor();
         Notification::fake();