Метод assertAuthenticatedAs
Метод assertAuthenticatedAs используется в тестах Laravel
для проверки, что текущий аутентифицированный пользователь
соответствует переданной модели. Первым параметром
передаётся экземпляр модели пользователя, вторым
необязательным параметром можно указать имя
охранника (guard), если используется нестандартная
аутентификация.
Синтаксис
<?php
$this->assertAuthenticatedAs($user, $guard);
?>
Пример
Давайте проверим, что после входа пользователь
аутентифицирован именно как модель User
с идентификатором 1:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
class AuthTest extends TestCase
{
public function test_user_can_login()
{
$user = User::factory()->create([
'email' => 'user@example.com',
'password' => bcrypt('password123')
]);
$this->post('/login', [
'email' => 'user@example.com',
'password' => 'password123'
]);
$this->assertAuthenticatedAs($user);
}
}
?>
Результат выполнения кода:
"OK"
Пример
Давайте проверим аутентификацию с использованием
определённого охранника 'admin':
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Admin;
class AdminAuthTest extends TestCase
{
public function test_admin_can_login()
{
$admin = Admin::factory()->create([
'email' => 'admin@example.com',
'password' => bcrypt('admin123')
]);
$this->post('/admin/login', [
'email' => 'admin@example.com',
'password' => 'admin123'
]);
$this->assertAuthenticatedAs($admin, 'admin');
}
}
?>
Результат выполнения кода:
"OK"
Пример
Проверим, что метод assertAuthenticatedAs
выбросит исключение, если пользователь не
аутентифицирован или аутентифицирован под
другой учётной записью:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
class AuthFailedTest extends TestCase
{
public function test_assert_fails_when_wrong_user()
{
$user1 = User::factory()->create();
$user2 = User::factory()->create();
$this->actingAs($user1);
$this->assertAuthenticatedAs($user2);
}
}
?>
Результат выполнения кода:
"PHPUnit\\Framework\\ExpectationFailedException: The authenticated user is not the expected user."
Смотрите также
-
метод
assertAuthenticated,
который проверяет, что пользователь аутентифицирован -
метод
actingAs,
который устанавливает текущего аутентифицированного пользователя -
метод
assertGuest,
который проверяет, что пользователь не аутентифицирован -
класс
TestCase,
базовый класс для всех тестов в Laravel