66 lines
2.5 KiB
Markdown
66 lines
2.5 KiB
Markdown
# 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
|
||
```
|