Ответ
PUT-запросы используются для полного обновления существующего ресурса. Их тестирование фокусируется на корректности замены данных и идемпотентности.
Ключевые аспекты для проверки:
- Успешное обновление: Отправка валидного тела запроса на существующий эндпоинт (например,
PUT /users/123) должна возвращать200 OKили204 No Content, а данные ресурса — полностью заменяться. - Идемпотентность: Повторный идентичный PUT-запрос не должен изменять результат или состояние системы после первого успешного выполнения.
- Валидация: Проверка реакции на невалидные данные (те же коды ошибок, что и для POST).
- Обработка отсутствующих ресурсов: Запрос к несуществующему ID может либо создавать новый ресурс (если API это допускает), либо возвращать
404 Not Found. - Проверка прав доступа: Обновление чужого ресурса должно возвращать
403 Forbidden.
Пример сценария:
PUT /api/v1/products/456 HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
{
"name": "New Product Name",
"price": 29.99,
"inStock": true
}
Ожидаемый результат: Код 200. Последующий GET /api/v1/products/456 возвращает объект точно с теми полями, которые были в PUT-запросе (старые данные перезаписаны).
Важно: PUT отличается от PATCH, который обновляет ресурс частично. Понимание этой семантики HTTP критично для написания корректных тестов.