Ответ
1. Тестирование OAuth 2.0 flow с автоматическим обновлением токенов
Задача: Автоматизировать сценарии, где access token "протухает" во время длительной серии запросов. Требовалось автоматически перехватывать 401 ошибку, обновлять токен с помощью refresh token и повторять исходный запрос.
Пример на Python (pytest + requests):
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
class AuthSession:
def __init__(self):
self.session = requests.Session()
self.token = self._get_new_token()
# Настройка повторных попыток для 401
retry_strategy = Retry(
total=2,
status_forcelist=[401],
allowed_methods=["GET", "POST"],
backoff_factor=1
)
adapter = HTTPAdapter(max_retries=retry_strategy)
self.session.mount("https://", adapter)
def _refresh_token(self):
# Логика обновления токена
self.token = self._get_new_token()
def request_with_auth(self, method, url, **kwargs):
# Добавляем текущий токен в заголовки
headers = kwargs.get('headers', {})
headers['Authorization'] = f'Bearer {self.token}'
kwargs['headers'] = headers
response = self.session.request(method, url, **kwargs)
if response.status_code == 401:
self._refresh_token() # Обновляем токен
headers['Authorization'] = f'Bearer {self.token}'
response = self.session.request(method, url, **kwargs) # Повторяем запрос
return response
2. Тестирование геолокации и геозон в мобильном приложении
Задача: Проверить логику push-уведомлений и изменения UI при входе/выходе пользователя из заданных географических зон (геофенсинга).
Подход:
- Инструменты: Appium + симулятор локации (для iOS/Android).
- Метод: Скрипт эмулировал "движение" устройства по заданным координатам (точкам маршрута).
- Проверки:
- Прибытие уведомления в момент пересечения виртуальной границы.
- Корректное отображение точки на карте в реальном времени.
- Отсутствие ложных срабатываний при колебаниях GPS-сигнала.