@Kerm

Laravel 10, почему после того как я делаю token->revoke() в unit тесте, у меня все равно остается авторизация?

Используется компонент Passport.

Метод логаут в контроллере ApiAuthController.php:

public function logout(Request $request): JsonResponse
{
    $token = $request->user()->token();
    $token->revoke();

    $response = ['message' => __('You have been successfully logged out.')];

    return response()->json($response, ResponseAlias::HTTP_NO_CONTENT, Common::HEADER, JSON_UNESCAPED_UNICODE);
}


Тест:

public function test_api_logout()
{
    $fields = [
        "name" => "Имя",
        "surname" => "Фамилия",
        "email" => "unit-test@mail.ru",
        "password" => Hash::make("12345678"),
        "remember_token" => Str::random(10),
        "user_position_id" => 1,
        "factory_id" => 1,
        "user_role_id" => 1,
        "workcenter_group_id" => 1
    ];

    User::create($fields);

    $response = $this->postJson('/api/login', ['email' => 'unit-test@mail.ru', 'password' => '12345678']);
    $token = $response->json()['token'];

    // логаут
    $response = $this->withHeaders([
        'Authorization' => 'Bearer ' . $token,
    ])->get('/api/logout');

    if ($response->getStatusCode() === 204) {
        // Вернулся ответ, что мы якобы вышли, пытаемся снова выйти
        $response = $this->withHeaders([
            'Authorization' => 'Bearer ' . $token,
        ])->get('/api/logout');

        User::where('email', "unit-test@mail.ru")->forceDelete();

        $response
            ->assertStatus(401);
    } else {
        User::where('email', "unit-test@mail.ru")->forceDelete();
    }
}


Роут logout у меня закрыт миделваркой auth:api:

Route::middleware('auth:api')->group(function () {})


Когда я делаю повторный логаут, я рассчитываю получить код 401, не авторизован, но получаю код 204, типа успешно вышел, но я ведь уже вышел до этого, токен должен был отозваться.
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы