Как можно улучшить метод logout в контроллере ApiAuthController.php и соответствующий тест test_api_logout для проверки его функционала? Добавьте краткое описание вопроса, чтобы облегчить понимание его содержания.
Похоже, что метод revoke() для токена в Laravel не обрывает текущую сессию авторизации. Для того чтобы улучшить метод logout в контроллере ApiAuthController.php, можно использовать метод revokeOtherTokens(), который отзывает все другие токены пользователя, кроме текущего. Таким образом, это обеспечит более надежное завершение сеанса для пользователя. Также, для улучшения теста test_api_logout, рекомендуется проверить, что после вызова logout текущий токен пользователя больше не действует и доступ к защищенным ресурсам запрещен. Можно также добавить проверку статуса ответа на успешное завершение сеанса. Таким образом, улучшенный метод logout и соответствующий тест test_api_logout будут более эффективно подтверждать работоспособность завершения сеанса пользователя в API.
Я вот так проверял
public function test_success_unauthorized(): void { $response = $this->postJson(route('auth.logout')); $response ->assertOk() ->assertJsonStructure([ 'status', 'message', ]) ->assertExactJson([ 'status' => true, 'message' => 'The access token was deleted', ]); $this->assertGuest('web'); }
Вроде было что-то такое у меня, но пока не могу вспомнить. Сегодня чуть позже проверю.
Есть пара замечаний.
1) Зачем создаешь пользователя через напрямую? Есть жеUser::factory()->create()
без ненужного ручного заполнения массива данных.
2) Зачем руками удаляешь пользователя? Есть же специальные трейты https://laravel.com/docs/10.x/database-testing#res...
3) Для проверки аутентификации пользователя есть же специальные ассерты https://laravel.com/docs/10.x/http-tests#authentic...