63 lines
1.9 KiB
PHP
63 lines
1.9 KiB
PHP
<?php
|
|
|
|
use App\Models\User;
|
|
use function Pest\Laravel\get;
|
|
use function Pest\Livewire\livewire;
|
|
|
|
it('renders the login page with template chrome', function () {
|
|
$response = get(route('login'));
|
|
|
|
$response->assertStatus(200)
|
|
->assertSeeText('Willkommen zurück')
|
|
->assertSeeText('Anmelden')
|
|
->assertSeeText('Magic-Link per E-Mail senden')
|
|
->assertSeeText('Mit Passkey anmelden')
|
|
->assertSeeText('Alle Systeme aktiv')
|
|
->assertSeeText('Verwalte')
|
|
->assertSeeText('WordPress-Sites')
|
|
->assertSee('clu-glass', false)
|
|
->assertSee('clu-brand-mark', false)
|
|
->assertSee('clu-term-card', false)
|
|
->assertSee('clu-stat', false);
|
|
});
|
|
|
|
it('mounts the Volt component without errors', function () {
|
|
livewire('pages.auth.login')
|
|
->assertSet('form.email', '')
|
|
->assertSet('form.password', '')
|
|
->assertSet('form.remember', false);
|
|
});
|
|
|
|
it('rejects empty credentials', function () {
|
|
livewire('pages.auth.login')
|
|
->set('form.email', '')
|
|
->set('form.password', '')
|
|
->call('login')
|
|
->assertHasErrors(['form.email', 'form.password']);
|
|
});
|
|
|
|
it('authenticates a user with valid credentials', function () {
|
|
$user = User::factory()->create(['password' => bcrypt('hunter2-secret')]);
|
|
|
|
livewire('pages.auth.login')
|
|
->set('form.email', $user->email)
|
|
->set('form.password', 'hunter2-secret')
|
|
->call('login')
|
|
->assertHasNoErrors()
|
|
->assertRedirect(route('dashboard', absolute: false));
|
|
|
|
expect(auth()->check())->toBeTrue();
|
|
});
|
|
|
|
it('rejects an invalid password', function () {
|
|
$user = User::factory()->create(['password' => bcrypt('correct-password')]);
|
|
|
|
livewire('pages.auth.login')
|
|
->set('form.email', $user->email)
|
|
->set('form.password', 'wrong-password')
|
|
->call('login')
|
|
->assertHasErrors('form.email');
|
|
|
|
expect(auth()->check())->toBeFalse();
|
|
});
|