Метод assertUnauthorized
Метод assertUnauthorized применяется к объекту HTTP-ответа в тестах и проверяет, что сервер вернул статус 401 Unauthorized. Этот статус указывает на то, что запрос требует аутентификации пользователя, которая не была предоставлена или недействительна. Метод часто используется при тестировании защищённых маршрутов, контроллеров и middleware, чтобы убедиться, что доступ запрещён для неавторизованных пользователей. Метод не принимает никаких параметров и возвращает тот же объект ответа для цепочки вызовов.
Синтаксис
<?php
$response->assertUnauthorized();
?>
Пример
Давайте протестируем маршрут '/profile', который требует аутентификации. Сделаем запрос без токена и проверим, что возвращается статус 401:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ProfileTest extends TestCase
{
public function test_profile_requires_authentication()
{
$res = $this->getJson('/api/profile');
$res->assertUnauthorized();
}
}
?>
Результат выполнения кода (тест пройден):
"OK (1 test, 1 assertion)"
Пример
Проверим, что защищённый маршрут возвращает 401 при использовании неверного токена. Создадим запрос с заголовком авторизации, содержащим некорректный токен:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ApiTest extends TestCase
{
public function test_invalid_token_returns_unauthorized()
{
$res = $this->withHeaders([
'Authorization' => 'Bearer invalid_token'
])->getJson('/api/profile');
$res->assertUnauthorized();
}
}
?>
Результат выполнения кода:
"OK (1 test, 1 assertion)"
Пример
Используем метод assertUnauthorized вместе с другими проверками. Например, проверим, что ответ содержит сообщение об ошибке и имеет правильную структуру:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class AuthTest extends TestCase
{
public function test_unauthorized_response_structure()
{
$res = $this->getJson('/api/admin/dashboard');
$res->assertUnauthorized()
->assertJson([
'message' => 'Unauthenticated.'
])
->assertJsonStructure([
'message'
]);
}
}
?>
Результат выполнения кода:
"OK (1 test, 3 assertions)"
Смотрите также
-
метод
assertStatus,
который проверяет произвольный код статуса HTTP -
метод
assertForbidden,
который проверяет статус 403 (Forbidden) -
метод
assertOk,
который проверяет статус 200 (OK) -
метод
actingAs,
который используется для аутентификации в тестах