Метод withToken
Метод withToken применяется к HTTP-клиенту в тестах
Laravel и возвращает тот же экземпляр запроса,
дополненный заголовком Authorization с Bearer-токеном.
Первым параметром передаётся строка с токеном доступа.
Вторым параметром можно указать тип токена (по умолчанию 'Bearer').
Этот метод особенно полезен при тестировании API-маршрутов,
которые защищены middleware auth:api или аналогичными.
Синтаксис
<?php
$this->withToken($token, $type = 'Bearer')->get($uri);
?>
Пример
Давайте протестируем защищённый маршрут, который требует наличия Bearer-токена в заголовке запроса:
<?php
namespace Tests\Feature\Api;
use Tests\TestCase;
class UserProfileTest extends TestCase
{
public function test_authenticated_user_can_access_profile()
{
$token = 'valid-api-token-12345';
$res = $this->withToken($token)
->get('/api/user/profile');
$res->assertStatus(200);
}
}
?>
Результат выполнения кода:
"Test passed: status code 200"
Пример
Давайте проверим, что запрос с неверным токеном возвращает ошибку авторизации:
<?php
namespace Tests\Feature\Api;
use Tests\TestCase;
class UserProfileTest extends TestCase
{
public function test_invalid_token_returns_unauthorized()
{
$invalidToken = 'invalid-token-xyz';
$res = $this->withToken($invalidToken)
->get('/api/user/profile');
$res->assertUnauthorized();
}
}
?>
Результат выполнения кода:
"Test passed: unauthorized status 401"
Пример
Давайте используем метод withToken для создания новой
статьи через API с аутентификацией:
<?php
namespace Tests\Feature\Api;
use Tests\TestCase;
class ArticleCreateTest extends TestCase
{
public function test_authenticated_user_can_create_article()
{
$token = 'user-auth-token-67890';
$data = [
'title' => 'article',
'content' => 'content'
];
$res = $this->withToken($token)
->postJson('/api/articles', $data);
$res->assertCreated()
->assertJson([
'status' => 'success'
]);
}
}
?>
Результат выполнения кода:
"Test passed: article created with status 201"
Смотрите также
-
метод
actingAs,
который выполняет аутентификацию через пользовательскую модель -
метод
withHeaders,
который добавляет произвольные заголовки к запросу -
метод
withSession,
который устанавливает данные сессии для запроса -
метод
withoutMiddleware,
который отключает middleware для тестового запроса