Назад к вопросам
Middle
7
POST /api/v1/transfers/internal Idempotency-Key: UUID (обязательный) Authorization: Bearer <token> { "source_account_id": "83740e53-609c-[phone]f9e61f22401", "destination_account_id": "[phone]f5c-[phone]a", "amount": 1500.50, "currency": "USD", "description": "payment for rent", "save_as_template": true } { "status": "success", "transaction_id": "77e1c83b-7bb0-437b-9250-8c9339e0538b", "data": { "amount": 1500.00, "currency": "USD", "executed_at": "[phone]T23:15:00Z", "template_saved": true } } [Sequence diagram and database schema are provided for context]
Компании, где спрашивали
waysbits
Ответ от нейросети
sobes.tech AI
Для тестирования данного API-эндпоинта важно проверить следующие моменты:
- Идемпотентность: Заголовок
Idempotency-Keyобязателен и должен гарантировать, что повторный запрос с тем же ключом не создаст дубликат транзакции. - Авторизация: Проверить, что без корректного токена доступ запрещён.
- Валидация входных данных: Проверить корректность UUID, суммы, валюты и других полей.
- Логика сохранения шаблона: Если
save_as_templatetrue, убедиться, что шаблон действительно сохраняется. - Корректность ответа: Статус, ID транзакции, сумма, валюта, время исполнения и флаг сохранения шаблона должны соответствовать ожиданиям.
Пример автоматизированного теста на псевдокоде:
response = post('/api/v1/transfers/internal', headers={
'Idempotency-Key': 'uuid-1234',
'Authorization': 'Bearer valid_token'
}, json={
'source_account_id': 'valid-uuid-1',
'destination_account_id': 'valid-uuid-2',
'amount': 1500.50,
'currency': 'USD',
'description': 'payment for rent',
'save_as_template': True
})
assert response.status_code == 200
assert response.json()['status'] == 'success'
assert response.json()['data']['template_saved'] == True
# Повторный запрос с тем же Idempotency-Key
response_repeat = post(...)
assert response_repeat.json()['transaction_id'] == response.json()['transaction_id']
Также важно проверить обработку ошибок, например, при отсутствии заголовков или неверных данных.