Files
amare/tests/Feature/Auth/InternalAuthenticationTest.php
manoel freitas 8da8d19504 feat: CMS de conteúdo do site (WEB-02/03/04/06)
Implementa gestão Filament de configurações, serviços, portfólio e depoimentos com policies admin-only, upload validado e seed determinístico.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-28 23:16:25 -03:00

91 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Feature\Auth;
use App\Enums\UserRole;
use App\Filament\Resources\Users\Pages\ListUsers;
use App\Models\User;
use Filament\Auth\Pages\Login;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
use Tests\TestCase;
class InternalAuthenticationTest extends TestCase
{
use RefreshDatabase;
public function test_active_admin_can_log_in_to_filament_panel(): void
{
$admin = User::factory()->admin()->create([
'email' => 'admin@example.com',
]);
Livewire::test(Login::class)
->set('data.email', $admin->email)
->set('data.password', 'password')
->call('authenticate')
->assertHasNoFormErrors()
->assertRedirect(route('filament.admin.pages.dashboard'));
$this->assertAuthenticatedAs($admin);
}
public function test_active_assistant_can_log_in_to_filament_panel(): void
{
$assistant = User::factory()->assistant()->create([
'email' => 'assistant@example.com',
]);
Livewire::test(Login::class)
->set('data.email', $assistant->email)
->set('data.password', 'password')
->call('authenticate')
->assertHasNoFormErrors()
->assertRedirect(route('filament.admin.pages.dashboard'));
$this->assertAuthenticatedAs($assistant);
}
public function test_inactive_user_is_denied_panel_access(): void
{
$inactiveUser = User::factory()->admin()->inactive()->create([
'email' => 'inactive@example.com',
]);
Livewire::test(Login::class)
->set('data.email', $inactiveUser->email)
->set('data.password', 'password')
->call('authenticate')
->assertHasFormErrors(['email']);
$this->assertGuest();
}
public function test_assistant_cannot_access_user_management(): void
{
$assistant = User::factory()->assistant()->create();
$this->actingAs($assistant);
Livewire::test(ListUsers::class)
->assertForbidden();
}
public function test_admin_can_access_user_management(): void
{
$admin = User::factory()->admin()->create();
$this->actingAs($admin);
Livewire::test(ListUsers::class)
->assertSuccessful();
}
public function test_user_role_is_limited_to_admin_and_assistant(): void
{
$this->assertSame(['admin', 'assistant'], array_column(UserRole::cases(), 'value'));
}
}