Метод assertAuthenticated
Метод assertAuthenticated применяется в тестах Laravel
для проверки того, что текущий пользователь успешно
аутентифицирован. Этот метод доступен в тестовом классе,
который наследуется от TestCase, и позволяет
утверждать, что запрос выполняется аутентифицированным
пользователем. Метод не принимает никаких параметров
и возвращает void.
Синтаксис
<?php
$this->assertAuthenticated();
?>
Пример
Давайте проверим, что пользователь аутентифицирован после успешного входа в систему:
<?php
namespace Tests\Feature\Auth;
use Tests\TestCase;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
class LoginTest extends TestCase
{
use RefreshDatabase;
public function test_user_can_authenticate()
{
$user = User::factory()->create([
'email' => 'test@example.com',
'password' => bcrypt('password123'),
]);
$response = $this->post('/login', [
'email' => 'test@example.com',
'password' => 'password123',
]);
$this->assertAuthenticated();
}
}
?>
Результат выполнения кода:
"Test passed: User is authenticated"
Пример
Давайте проверим, что пользователь не аутентифицирован при неверных учётных данных:
<?php
namespace Tests\Feature\Auth;
use Tests\TestCase;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
class LoginTest extends TestCase
{
use RefreshDatabase;
public function test_user_cannot_authenticate_with_invalid_password()
{
$user = User::factory()->create([
'email' => 'test@example.com',
'password' => bcrypt('password123'),
]);
$response = $this->post('/login', [
'email' => 'test@example.com',
'password' => 'wrongpassword',
]);
$this->assertGuest();
}
}
?>
Результат выполнения кода:
"Test passed: User is guest"
Пример
Давайте проверим аутентификацию пользователя при доступе к защищённому маршруту:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ProfileTest extends TestCase
{
use RefreshDatabase;
public function test_authenticated_user_can_access_profile()
{
$user = User::factory()->create();
$response = $this->actingAs($user)
->get('/profile');
$this->assertAuthenticated();
$response->assertStatus(200);
}
}
?>
Результат выполнения кода:
"Test passed: User is authenticated and profile page is accessible"
Смотрите также
-
метод
assertGuest,
который проверяет, что пользователь не аутентифицирован -
метод
assertAuthenticatedAs,
который проверяет, что аутентифицирован конкретный пользователь -
метод
actingAs,
который выполняет вход пользователя для тестирования -
класс
RefreshDatabase,
который сбрасывает состояние базы данных перед тестами