Какой у вас опыт работы с токенами при тестировании API?

«Какой у вас опыт работы с токенами при тестировании API?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал с различными типами токенов для аутентификации и авторизации в API.

Типы токенов и их тестирование:

  1. JWT (JSON Web Token):

    • Проверка структуры (header, payload, signature).
    • Валидация срока действия (exp claim).
    • Тестирование обновления токена (refresh tokens).
      
      # Пример теста с истекшим JWT
      import requests
      import time
      import jwt

    Генерация просроченного токена (для теста)

    expired_payload = {"user_id": 123, "exp": int(time.time()) - 3600} expired_token = jwt.encode(expired_payload, 'secret', algorithm='HS256')

    headers = {"Authorization": f"Bearer {expired_token}"} response = requests.get("https://api.example.com/protected", headers=headers)

    Ожидаем статус 401 Unauthorized

    assert response.status_code == 401

  2. OAuth2 токены (access_token, refresh_token):
    • Тестирование flow (Authorization Code, Client Credentials).
    • Проверка scope токенов (доступ только к разрешенным ресурсам).
  3. API-ключи:
    • Проверка передачи в headers (X-API-Key) или query-параметрах.
    • Тестирование ротации и отзыва ключей.

Ключевые аспекты тестирования:

  • Безопасность: Токены не должны попадать в логи. Refresh tokens хранятся безопасно.
  • Обработка ошибок: Корректные HTTP-статусы (401 при неверном токене, 403 при недостаточных правах).
  • Инструменты: Использовал Postman (коллекции с pre-request scripts для автоматического получения токена), pytest.