PHP Lumen: игнорирование промежуточного программного обеспечения в тестах API


PHP Lumen: игнорирование промежуточного программного обеспечения в тестах API

23.09.2020 07:34:02 Просмотров 6 Источник

В моем приложении Lumen я использую пакет паспорта Lumen для защиты моих конечных точек API.

Мой web.php реализовал охранник следующим образом:

$router->group(['middleware' => 'client.credentials'], function($request) use ($router) {
    ...
}

С каждым запросом отправляется и проверяется данный токен на предъявителя.

Теперь моя проблема заключается в том, что я не хочу использовать всю систему аутентификации при написании своих тестов.

Я определил базовый тестовый класс и должен сделать следующее для каждого отдельного теста:

...
abstract class TestBase extends TestCase
{
    public function setUp(): void
    {
        parent::setUp();
        // Create my User in DB.
        $this->createUserForTest();
        // Register a new passport client .
        $this->createClientForTest();
        // Call the /api/oauth/token endpoint to get a valid token for the given client + user.
        $this->createTokenForTest();
    }
}

Пример теста выглядит следующим образом:

public function get_getSomeData_validData()
{
    $response = $this->call('GET', "/some/awesome/endpoint");
    $response->assertStatus(200);
}

Это работает, но поскольку мне нужно делать это для каждого отдельного теста, это занимает некоторое время, если у вас много тестов.

Есть ли возможность игнорировать промежуточное программное обеспечение, если вы сами вызываете api?

У вопроса есть решение - Посмотреть?

Ответы - PHP Lumen: игнорирование промежуточного программного обеспечения в тестах API / PHP Lumen: Ignore Middleware in API Tests

Является ответом!
Kamlesh Paul

23.09.2020 07:45:50

я думаю, вы можете просто использовать как Passport::actingAsClient($client); для теста

ссылка на ссылку ref https://github.com/laravel/passport/pull/1083

так что вы можете использовать вот так

$user =  $this->createUserForTest();
Passport::actingAsClient($user);

Основной код паспорта https://github.com/laravel/passport/pull/1083/files

Помочь в развитии проекта:
Закрыть X