get(route('login')); $response->assertStatus(200); } public function test_users_can_authenticate_using_the_login_screen() { $user = User::factory()->create(); $response = $this->post(route('login.store'), [ 'login' => $user->email, 'password' => 'password', ]); $this->assertAuthenticated(); $response->assertRedirect('/packages'); } public function test_users_can_authenticate_with_username() { $user = User::factory()->create(['username' => 'testuser']); $response = $this->post(route('login.store'), [ 'login' => 'testuser', 'password' => 'password', ]); $this->assertAuthenticated(); $response->assertRedirect('/packages'); } public function test_users_can_not_authenticate_with_invalid_password() { $user = User::factory()->create(); $response = $this->post(route('login.store'), [ 'login' => $user->email, 'password' => 'wrong-password', ]); $this->assertGuest(); $response->assertRedirect(route('login', absolute: false)); $response->assertSessionHasErrors(['login' => 'Diese Anmeldedaten wurden nicht gefunden.']); } public function test_login_redirects_unverified_user_to_verification_notice() { $user = User::factory()->create([ 'email_verified_at' => null, ]); $response = $this->post(route('login.store'), [ 'login' => $user->email, 'password' => 'password', ]); $this->assertAuthenticated(); $response->assertRedirect(route('verification.notice', absolute: false)); } public function test_users_can_logout() { $user = User::factory()->create(); $response = $this->actingAs($user)->post(route('logout')); $this->assertGuest(); $response->assertRedirect('/'); } public function test_users_are_rate_limited() { $user = User::factory()->create(); for ($i = 0; $i < 5; $i++) { $response = $this->post(route('login.store'), [ 'login' => $user->email, 'password' => 'wrong-password', ]); $response->assertStatus(302); $response->assertSessionHasErrors(['login' => 'Diese Anmeldedaten wurden nicht gefunden.']); } $response = $this->post(route('login.store'), [ 'login' => $user->email, 'password' => 'wrong-password', ]); $response->assertStatus(302); $response->assertSessionHasErrors(['login']); $this->assertStringContainsString( 'Zu viele Login-Versuche.', collect(session('errors')->get('login'))->first() ); } }