Каков общепринятый способ тестирования JSON API маршрутов (Laravel + PhpUnit) защищенных Bearer-токенами?

Тестирование JSON API маршрутов в Laravel, защищенных Bearer-токенами, можно осуществить с использованием фреймворка для тестирования PhpUnit. Ниже я представлю общепринятый способ такого тестирования.

Перед началом тестирования нужно создать тестовую базу данных для Laravel. Для этого вам нужно выполнить следующие шаги:

1. В файле ".env" в корневой папке вашего проекта установите настройки базы данных тестового окружения:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_database
DB_USERNAME=root
DB_PASSWORD=

2. Создайте базу данных, указанную в настройках, используя вашу систему управления базами данных или команду php artisan db:create.

Перейдем к подробному описанию способа тестирования защищенных Bearer-токенами JSON API маршрутов в Laravel:

1. Создайте новый тестовый класс, например, ApiTest, в папке tests/Feature. Этот класс будет содержать в себе все необходимые тесты.
2. В методе setUp тестового класса установите настройки для базы данных, создайте фабрику пользователей и мигрируйте базу данных:

protected function setUp(): void
{
    parent::setUp();

    $this->artisan('migrate');
}

3. Объявите необходимые зависимости в свойстве protected, например, $user и $token, которые будут представлять пользователя и его Bearer-токен:

protected $user;
protected $token;

4. Создайте метод testLogin, который будет использоваться для авторизации пользователя и получения Bearer-токена:

public function testLogin()
{
    $user = factory(User::class)->create([
        'email' => '[email protected]',
        'password' => Hash::make('password')
    ]);

    $response = $this->json('POST', '/api/login', [
        'email' => $user->email,
        'password' => 'password'
    ]);

    $this->token = $response->json('token');
    $this->user = $user;
}

5. Создайте остальные методы для тестирования ваших JSON API маршрутов, например, testApiRoute, в которых используйте Bearer-токен:

public function testApiRoute()
{
    $response = $this->withHeader('Authorization', 'Bearer ' . $this->token)
                     ->json('GET', '/api/route');

    $response->assertStatus(200);
}

6. Запустите ваши тесты с помощью команды phpunit. В результате вы должны увидеть успешное выполнение тестов.

В итоге, вы получите подробный обзор работы ваших JSON API маршрутов, защищенных Bearer-токенами, и сможете легко отследить возможные проблемы.