Files
docs/testing.md
T

5.5 KiB
Raw Permalink Blame History

Проверка локального контура

Эта страница описывает, как быстро убедиться, что локальные backend, cabinet, БД и тестовые данные работают корректно.

Подготовка

Запустите локальный контур и соберите ассеты cabinet:

make local-up
make local-assets

Если нужно заново пересоздать тестовые данные:

make local-seed

Автоматическая smoke-проверка

Основная команда проверки:

make local-smoke

Она проверяет:

  • Swagger backend: http://localhost:8081/docs;
  • Swagger cabinet: http://localhost:8082/api/swagger;
  • backend авторизацию через JWT;
  • backend справочники филиалов, отделений, врачей и прайса;
  • cabinet страницу логина;
  • cabinet авторизацию тестовым пользователем;
  • cabinet главную страницу после логина;
  • cabinet API баннера, прайса и врачей.

Успешный результат выглядит так:

== 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:

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"])')

Проверить текущего пользователя:

curl -sS http://localhost:8081/user/ \
  -H "Authorization: Bearer $TOKEN" \
  | python3 -m json.tool

Ожидаемый смысл ответа: successful: true, uid: 100001, regionId: 91.

Проверить филиалы:

curl -sS 'http://localhost:8081/filial/list?regionId=91' \
  | python3 -m json.tool

В ответе должен быть филиал Сова Local.

Проверить отделения:

curl -sS http://localhost:8081/department/list \
  | python3 -m json.tool

В ответе должно быть отделение Терапия.

Проверить врачей:

curl -sS 'http://localhost:8081/specialist/list?regionId=91' \
  | python3 -m json.tool

В ответе должен быть врач Иванов Иван Иванович с alias ivanov-ivan.

Проверить прайс:

curl -sS http://localhost:8081/pricelist/list \
  | python3 -m json.tool

В ответе должна быть услуга Прием терапевта с локальной ценой.

Ручная проверка cabinet API

Проверить баннер региона:

curl -sS http://localhost:8082/api/banner/91 \
  | python3 -m json.tool

Ожидается JSON с active: true.

Проверить группы прайса:

curl -sS http://localhost:8082/api/pricelist/departments \
  | python3 -m json.tool

В ответе должна быть группа Консультации.

Проверить список врачей:

curl -sS http://localhost:8082/api/doctors/91 \
  | python3 -m json.tool

В ответе должен быть врач Иванов Иван Иванович, отзывы и прайс.

Что делать при ошибках

Если cabinet /login отдает 500 с ошибкой про public/build/entrypoints.json, соберите ассеты:

make local-assets

Если API отдает пустые данные или ошибки типов, пересоздайте seed:

make local-seed
make local-smoke

Если контейнеры были пересозданы с нуля:

make local-up
make local-assets
make local-smoke