assertForbidden
Метод assertForbidden применяется к объекту HTTP-ответа в тестах и проверяет, что статус-код ответа равен 403. В первом параметре можно передать сообщение об ошибке, которое будет выведено в случае провала проверки. Метод также может использоваться вместе с другими проверками для комплексного тестирования.
Синтаксис
<?php
$response->assertForbidden($message);
?>
Пример
Давайте проверим, что маршрут /admin возвращает ошибку доступа для обычного пользователя:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
class AdminTest extends TestCase
{
public function test_admin_page_forbidden_for_regular_user()
{
$user = User::factory()->create([
'is_admin' => false
]);
$response = $this->actingAs($user)
->get('/admin');
$response->assertForbidden();
}
}
?>
Результат выполнения кода:
"Test passed: response status is 403"
Пример
Проверим, что неавторизованный пользователь не может получить доступ к личному кабинету:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ProfileTest extends TestCase
{
public function test_profile_page_forbidden_for_guests()
{
$response = $this->get('/profile');
$response->assertForbidden('Access to profile is restricted');
}
}
?>
Результат выполнения кода:
"Test passed: response status is 403 with custom message"
Пример
Используем метод assertForbidden для проверки API-эндпоинта, который требует прав администратора:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
use App\Models\Role;
class ApiTest extends TestCase
{
public function test_api_endpoint_forbidden_for_non_admin()
{
$user = User::factory()->create();
$user->role_id = Role::where('name', 'editor')->first()->id;
$response = $this->actingAs($user)
->json('DELETE', '/api/users/1');
$response->assertForbidden();
}
}
?>
Результат выполнения кода:
"Test passed: API endpoint returns 403 for non-admin users"
Смотрите также
-
метод
assertStatus,
который проверяет конкретный HTTP-статус -
метод
assertOk,
который проверяет статус 200 -
метод
assertUnauthorized,
который проверяет статус 401 -
метод
assertNotFound,
который проверяет статус 404