71 lines
1.7 KiB
PHP
71 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Models\User;
|
|
use App\Domains\Workspace\Models\Workspace;
|
|
use App\Domains\Workspace\Models\WorkspaceMember;
|
|
use Livewire\Volt\Volt;
|
|
|
|
test('login screen can be rendered', function () {
|
|
$response = $this->get('/login');
|
|
|
|
$response->assertOk();
|
|
});
|
|
|
|
test('users can authenticate using the login screen', function () {
|
|
$user = User::factory()->create();
|
|
|
|
$component = Volt::test('pages.auth.login')
|
|
->set('form.email', $user->email)
|
|
->set('form.password', 'password');
|
|
|
|
$component->call('login');
|
|
|
|
$component
|
|
->assertHasNoErrors()
|
|
->assertRedirect(route('dashboard', absolute: false));
|
|
|
|
$this->assertAuthenticated();
|
|
});
|
|
|
|
test('users can not authenticate with invalid password', function () {
|
|
$user = User::factory()->create();
|
|
|
|
$component = Volt::test('pages.auth.login')
|
|
->set('form.email', $user->email)
|
|
->set('form.password', 'wrong-password');
|
|
|
|
$component->call('login');
|
|
|
|
$component
|
|
->assertHasErrors()
|
|
->assertNoRedirect();
|
|
|
|
$this->assertGuest();
|
|
});
|
|
|
|
test('dashboard redirects authenticated users to workspace', function () {
|
|
$user = User::factory()->create();
|
|
$ws = Workspace::factory()->create(['owner_id' => $user->id]);
|
|
WorkspaceMember::create([
|
|
'workspace_id' => $ws->id,
|
|
'user_id' => $user->id,
|
|
'role' => 'owner',
|
|
'joined_at' => now(),
|
|
]);
|
|
$user->update(['default_workspace_id' => $ws->id]);
|
|
|
|
$this->actingAs($user)
|
|
->get('/dashboard')
|
|
->assertRedirect("/w/{$ws->ulid}");
|
|
});
|
|
|
|
test('users can logout', function () {
|
|
$user = User::factory()->create();
|
|
|
|
$this->actingAs($user)
|
|
->post(route('logout'))
|
|
->assertRedirect('/');
|
|
|
|
$this->assertGuest();
|
|
});
|