PHP Lumen: игнорирование промежуточного программного обеспечения в тестах API
В моем приложении 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

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