212 lines
5.5 KiB
Markdown
212 lines
5.5 KiB
Markdown
# Проверка локального контура
|
||
|
||
Эта страница описывает, как быстро убедиться, что локальные `backend`, `cabinet`, БД и тестовые данные работают корректно.
|
||
|
||
## Подготовка
|
||
|
||
Запустите локальный контур и соберите ассеты cabinet:
|
||
|
||
```bash
|
||
make local-up
|
||
make local-assets
|
||
```
|
||
|
||
Если нужно заново пересоздать тестовые данные:
|
||
|
||
```bash
|
||
make local-seed
|
||
```
|
||
|
||
## Автоматическая smoke-проверка
|
||
|
||
Основная команда проверки:
|
||
|
||
```bash
|
||
make local-smoke
|
||
```
|
||
|
||
Она проверяет:
|
||
|
||
- Swagger backend: `http://localhost:8081/docs`;
|
||
- Swagger cabinet: `http://localhost:8082/api/swagger`;
|
||
- backend авторизацию через JWT;
|
||
- backend справочники филиалов, отделений, врачей и прайса;
|
||
- cabinet страницу логина;
|
||
- cabinet авторизацию тестовым пользователем;
|
||
- cabinet главную страницу после логина;
|
||
- cabinet API баннера, прайса и врачей.
|
||
|
||
Успешный результат выглядит так:
|
||
|
||
```text
|
||
== Backend ==
|
||
OK backend swagger UI (200)
|
||
OK backend swagger JSON (200)
|
||
OK backend login
|
||
OK backend filial list
|
||
OK backend department list
|
||
OK backend specialist list
|
||
OK backend price list
|
||
|
||
== Cabinet ==
|
||
OK cabinet login page (200)
|
||
OK cabinet swagger UI (200)
|
||
OK cabinet swagger JSON (200)
|
||
OK cabinet login response
|
||
OK cabinet authenticated home (200)
|
||
OK cabinet banner API
|
||
OK cabinet price departments API
|
||
OK cabinet doctors API
|
||
|
||
Local smoke test passed.
|
||
```
|
||
|
||
## Тестовые пользователи
|
||
|
||
Backend API:
|
||
|
||
- login: `local.backend@example.test`
|
||
- password: `local-password`
|
||
- uid: `100001`
|
||
- region: `91`
|
||
- роли: `ROLE_USER`, `ROLE_ADMIN`
|
||
|
||
Cabinet:
|
||
|
||
- login: `local.cabinet@example.test`
|
||
- password: `local-password`
|
||
- uid: `200001`
|
||
- роли: `ROLE_USER`, `ROLE_ADMIN`
|
||
|
||
## Ручная проверка в браузере
|
||
|
||
1. Откройте `http://localhost:8081/docs`.
|
||
Должна открыться Swagger UI backend.
|
||
|
||
2. Откройте `http://localhost:8082/api/swagger`.
|
||
Должна открыться Swagger UI cabinet.
|
||
|
||
3. Откройте `http://localhost:8082/login`.
|
||
Должна открыться страница входа без ошибки `500`.
|
||
|
||
4. Войдите в cabinet:
|
||
- email: `local.cabinet@example.test`;
|
||
- password: `local-password`.
|
||
|
||
5. После входа должна открыться главная cabinet: `http://localhost:8082/`.
|
||
|
||
6. Откройте публичные API cabinet:
|
||
- `http://localhost:8082/api/banner/91`;
|
||
- `http://localhost:8082/api/pricelist/departments`;
|
||
- `http://localhost:8082/api/doctors/91`.
|
||
|
||
## Ручная проверка backend API
|
||
|
||
Получить JWT:
|
||
|
||
```bash
|
||
TOKEN=$(curl -sS \
|
||
-X POST http://localhost:8081/user/login \
|
||
-H 'Content-Type: application/json' \
|
||
--data '{"username":"local.backend@example.test","password":"local-password"}' \
|
||
| python3 -c 'import sys,json; print(json.load(sys.stdin)["token"])')
|
||
```
|
||
|
||
Проверить текущего пользователя:
|
||
|
||
```bash
|
||
curl -sS http://localhost:8081/user/ \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
Ожидаемый смысл ответа: `successful: true`, `uid: 100001`, `regionId: 91`.
|
||
|
||
Проверить филиалы:
|
||
|
||
```bash
|
||
curl -sS 'http://localhost:8081/filial/list?regionId=91' \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
В ответе должен быть филиал `Сова Local`.
|
||
|
||
Проверить отделения:
|
||
|
||
```bash
|
||
curl -sS http://localhost:8081/department/list \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
В ответе должно быть отделение `Терапия`.
|
||
|
||
Проверить врачей:
|
||
|
||
```bash
|
||
curl -sS 'http://localhost:8081/specialist/list?regionId=91' \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
В ответе должен быть врач `Иванов Иван Иванович` с alias `ivanov-ivan`.
|
||
|
||
Проверить прайс:
|
||
|
||
```bash
|
||
curl -sS http://localhost:8081/pricelist/list \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
В ответе должна быть услуга `Прием терапевта` с локальной ценой.
|
||
|
||
## Ручная проверка cabinet API
|
||
|
||
Проверить баннер региона:
|
||
|
||
```bash
|
||
curl -sS http://localhost:8082/api/banner/91 \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
Ожидается JSON с `active: true`.
|
||
|
||
Проверить группы прайса:
|
||
|
||
```bash
|
||
curl -sS http://localhost:8082/api/pricelist/departments \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
В ответе должна быть группа `Консультации`.
|
||
|
||
Проверить список врачей:
|
||
|
||
```bash
|
||
curl -sS http://localhost:8082/api/doctors/91 \
|
||
| python3 -m json.tool
|
||
```
|
||
|
||
В ответе должен быть врач `Иванов Иван Иванович`, отзывы и прайс.
|
||
|
||
## Что делать при ошибках
|
||
|
||
Если `cabinet /login` отдает `500` с ошибкой про `public/build/entrypoints.json`, соберите ассеты:
|
||
|
||
```bash
|
||
make local-assets
|
||
```
|
||
|
||
Если API отдает пустые данные или ошибки типов, пересоздайте seed:
|
||
|
||
```bash
|
||
make local-seed
|
||
make local-smoke
|
||
```
|
||
|
||
Если контейнеры были пересозданы с нуля:
|
||
|
||
```bash
|
||
make local-up
|
||
make local-assets
|
||
make local-smoke
|
||
```
|