71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace Modules\Auth\Components;
 | |
| 
 | |
| use App\User;
 | |
| use Illuminate\Auth\Events\Lockout;
 | |
| use Tests\TestCase;
 | |
| use Illuminate\Foundation\Testing\DatabaseTransactions;
 | |
| use Illuminate\Support\Facades\Event;
 | |
| use Livewire\Livewire;
 | |
| 
 | |
| uses(TestCase::class);
 | |
| uses(DatabaseTransactions::class);
 | |
| 
 | |
| it('redirects to login', function () {
 | |
|     test()->get('/')->assertRedirect('/login');
 | |
| });
 | |
| 
 | |
| it('displays component', function () {
 | |
|     test()->get('/login')->assertSeeLivewire(LoginForm::class)->assertDontSee('Dashboard');
 | |
| });
 | |
| 
 | |
| it('displays form', function () {
 | |
|     Livewire::test(LoginForm::class)
 | |
|         ->assertSee('Login')
 | |
|         ->assertSee('Passwort vergessen')
 | |
|         ->assertSee(route('password.request'));
 | |
| });
 | |
| 
 | |
| it('loggs in', function () {
 | |
|     User::factory()->loginData('admin@example.com', 'secret')->create();
 | |
|     Livewire::test(LoginForm::class)
 | |
|         ->set('email', 'admin@example.com')
 | |
|         ->set('password', 'secret')
 | |
|         ->call('submit')
 | |
|         ->assertRedirect('/');
 | |
| 
 | |
|     $this->assertEquals('admin@example.com', auth()->user()->email);
 | |
| });
 | |
| 
 | |
| it('displays failed login response', function () {
 | |
|     Livewire::test(LoginForm::class)
 | |
|         ->set('email', 'admin@example.com')
 | |
|         ->set('password', 'secret')
 | |
|         ->call('submit')
 | |
|         ->assertHasErrors(['email' => 'Login fehlgeschlagen.']);
 | |
| });
 | |
| 
 | |
| it('increments login attempts', function () {
 | |
|     Event::fake([Lockout::class]);
 | |
|     Livewire::test(LoginForm::class)
 | |
|         ->set('email', 'admin@example.com')
 | |
|         ->set('password', 'secret')
 | |
|         ->call('submit')
 | |
|         ->call('submit')
 | |
|         ->call('submit')
 | |
|         ->call('submit')
 | |
|         ->call('submit')
 | |
|         ->call('submit');
 | |
|     Event::assertDispatchedTimes(Lockout::class);
 | |
| });
 | |
| 
 | |
| it('requires email and password', function () {
 | |
|     User::factory()->loginData('admin@example.com', 'secret')->create();
 | |
|     Livewire::test(LoginForm::class)
 | |
|         ->set('email', '')
 | |
|         ->set('password', '')
 | |
|         ->call('submit')
 | |
|         ->assertHasErrors(['email', 'password']);
 | |
| });
 |