Аутентификация моих API с помощью Laravel Passport / Phpunit

Я только что аутентифицировал свои API на основе документов.

Дело в том, что мое функциональное тестирование с phpunit не работает. Я получаю ошибку "Неаутентифицировано".

Я пытался использовать промежуточное ПО, рекомендованное здесь, но оно не сработало.

Я думаю, мне нужно будет включить поля csrf в запрос, но я не знаю, как это сделать для тестирования

Вот мой тест:

$this->json('POST', '/api/v1/category/create',$data)
        ->seeJson($data)
        ->seeInDatabase('category', $data);

Есть идеи, как мне это сделать???

1 ответ

Решение

Есть Illuminate\Foundation\Testing\WithoutMiddleware черта, которую вы можете использовать, которая обойдёт промежуточное ПО аутентификации (но и все остальное промежуточное ПО).

Однако более гибкий подход использует встроенную обработку тестирования для аутентификации. Проходя actingAs Функция действительный пользователь выполнит ваш тест, как если бы этот пользователь вошел в систему.

$user = factory(App\User::class)->create();

$this->actingAs($user)->visit('/');
Другие вопросы по тегам