<?php
declare(strict_types=1);
namespace Tests\Feature\Admin;
use App\Models\User;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;
class AdminTest extends TestCase
{
#[Test]
public function adminPageRedirectsUnauthorisedUsersToLoginPage(): void
$response = $this->get('/admin');
$response->assertRedirect('/login');
}
public function loginPageLoads(): void
$response = $this->get('/login');
$response->assertViewIs('login');
public function loginAttemptWithBadCredentialsFails(): void
$response = $this->post('/login', [
'username' => 'bad',
'password' => 'credentials',
]);
public function loginSucceeds(): void
User::factory([
'name' => 'admin',
'password' => bcrypt('password'),
])->create();
'password' => 'password',
$response->assertRedirect('/admin');
public function whenLoggedInRedirectsToAdminPage(): void
$user = User::factory()->create();
$response = $this->actingAs($user)->get('/login');
$response->assertRedirect('/');
public function loggedOutUsersSimplyRedirected(): void
$response = $this->get('/logout');
public function loggedInUsersShownLogoutForm(): void
$response = $this->actingAs($user)->get('/logout');
$response->assertViewIs('logout');
public function loggedInUsersCanLogout(): void
$response = $this->actingAs($user)->post('/logout');