Files
hw3/README.md

66 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OTUS Rest-assured Homework 3
## Цель проекта
Автоматизировать API-сценарии для `https://petstore.swagger.io` с использованием Rest-assured, JUnit Jupiter и quality gates (Checkstyle + SpotBugs).
## Стек технологий
- Java 21
- Maven
- Rest-assured `6.0.0`
- JUnit Jupiter `6.0.2`
- Jackson Databind `2.21.0`
- Commons Codec `1.21.0`
- Maven Surefire Plugin `3.5.4`
- Maven Compiler Plugin `3.15.0`
- Checkstyle (`maven-checkstyle-plugin` `3.6.0`)
- SpotBugs (`spotbugs-maven-plugin` `4.9.8.2`)
## Реализованные сценарии
1. `POST /pet` + `GET /pet/{id}`:
- создание питомца;
- повторное чтение по id;
- проверка, что вернулся именно созданный объект.
2. `GET /pet/{id}`:
- проверка схемы ответа через Json Schema Validator.
3. Негативные сценарии:
- `POST /pet` с malformed JSON возвращает `4xx`;
- `GET /pet/{id}` для удаленного/несуществующего id возвращает `404`;
- `GET /pet/findByStatus` с невалидным статусом возвращает пустой список.
## Архитектура
- 2-уровневый дизайн:
- `service` слой (HTTP-вызовы + спецификации);
- `tests` слой (сценарии).
- Тесты создают сервис напрямую (`new PetService()`), без DI-фреймворка.
## Структура проекта
- `src/main/java/ru/otus/petstore/config` — конфигурация
- `src/main/java/ru/otus/petstore/model` — модели API (`Pet`, `Category`, `Tag`)
- `src/main/java/ru/otus/petstore/service` — сервисы API
- `src/test/java/ru/otus/petstore/tests` — автотесты (позитивные и негативные сценарии)
- `src/test/java/ru/otus/petstore/util` — фабрика тестовых данных
- `src/test/resources/schemas` — JSON schema
## Запуск
### 1. Только тесты
```bash
mvn test
```
### 2. Полная проверка (тесты + Checkstyle + SpotBugs)
```bash
mvn verify
```
## Параметры запуска
- `base.uri` (по умолчанию `https://petstore.swagger.io`)
- `base.path` (по умолчанию `/v2`)
- значения читаются из `System properties` во время выполнения тестов.
Пример:
```bash
mvn "-Dbase.uri=https://petstore.swagger.io" "-Dbase.path=/v2" test
```