Почему после вызова метода revoke() для токена в unit-тесте Laravel 10 авторизация сохраняется?

Как можно улучшить метод logout в контроллере ApiAuthController.php и соответствующий тест test_api_logout для проверки его функционала? 

Добавьте краткое описание вопроса, чтобы облегчить понимание его содержания.
  • 27 февраля 2024 г. 20:18
Ответы на вопрос 2
Похоже, что метод 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...
Похожие вопросы