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']);
|
|
});
|