# Реализуйте интеграционное тестирование работы анализатора (РЧ21). Прежде чем проводить исследования на биоматериалах, нужно провести верификацию на наличие необходимых функций в коде.  Вам предстоит задача - разработать интеграционный тест для выполнения верификации программного обеспечения анализатора. Для этого разработайте АПИ сервер анализатора, который содержит конечные точки (endpoints), и возвращает определенные ответы. Затем напишите интеграционный тест, который будет обращаться к этому АПИ, отправлять на него запросы и получать ответы, в зависимости от содержания запроса.  Логика работы анализатора: - приём заказа - обработка заказа (тут вы эмулируете какую-то задержку, ~~можете случайным образом,~~ можете в список услуг прописать) - получение статуса: возвращаете прогресс, если заказ в работе. если заказ выполнен, то возвращаете результат и ОСВОБОЖДАЕТЕ анализатор Есть два анализатора **Biorad** и **Ledetect** с пересекающимся набором услуг (т.е. есть услуги, которые можно выполнить на обоих анализаторах, но есть и такие, которые можно выполнить только на одном) Коды и названия услуг и поддержка анализатором: Код | Название | Доступные анализаторы :--:|-----------|---------------------- 619 | TSH | Ledetect, Biorad 311 | Амилаза | Ledetect 548 | Альбумин | Biorad 258 | Креатинин |Biorad, Ledetect 176 | Билирубин общий | Biorad 501 | Гепатит В | Ledetect 543 | Гепатит С | Ledetect, Biorad 229 | СПИД | Ledetect 415 | Кальций общий | Ledetect 323 | Глюкоза | Ledetect 855 | Ковид IgM | Biorad 346 | Общий белок | Ledetect 836 | Железо | Biorad ## Первая задача: разработать http-сервер для реализации АПИ анализатора АПИ анализатора 1. Отправка заказа: * метод: **POST** * путь: `/api/analyzer/{{name}}`, где `{{name}}` - название анализатора * тип данных: **JSON** * Формат данных: ```json { "patient": 1, // id клиента "services": [ // массив услуг { "serviceCode": 619 }, // код услуги { "serviceCode": 258 }, ] } ``` * возможные ответы: Код ответа | Тело ответа (body) | Комментарий :---------:|--------------------|------------ `200` |   | заказ принят `404` | $"Analyzer with name '{name}' not found" | Не найден анализатор с указанным именем `400` | "Analyzer is busy" | Анализатор занят `400` | "Analyzer can not do this order. May be order contains services which analyzer does not support." | На анализатор отправлена услуга, которую анализатор не может выполнить (услуги нет в списке поддерживаемых) 1. Проверка статуса заказа * метод: **GET** * путь: `/api/analyzer/{{name}}` * возможные ответы (код и ответ в body): Код ответа | Тело ответа (body) | Комментарий :---------:|--------------------|------------ `200` | {"patient": 1,
"services": [
{ "сode": 619, "result": "" },
{ "code": 258, "result": "" }
]} | заказ готов `200` | {"progress":50} | Заказ обрабатывается (прогресс в процентах) `400` | "Analyzer is not working." | анализатор не выполняет никакой запрос `404` | $"Analyzer with name '{name}' not found" | Не найден анализатор с указанным именем ## Вторая задача Разработайте тестовые сценарии и unit-тесты для тестрования АПИ, реализованного в первой задаче