unip-controller/tests/integration/requests/app2/readme.md
2025-04-15 20:56:15 +03:00

5.8 KiB
Raw Blame History


Система: Единая библиотека, Центр ИИ НИУ ВШЭ

Модуль: Тесты

Авторы: Полежаев В.А., Хританков А.С.

Дата создания: 2024 г.


Ручное тестирование пайплайнов

Используемые данные

Ресурсы тестового приложения находятся в папке tests/data/resources/pu-user1/apps/app2.

Используется тестовый пользователь pu-user1 (ресурсы пользователя см. в папке tests/data/resources/pu-user1).

Запросы и данные запросов находятся в папке tests/integration/requests/test_app2.

  1. Приложение pu-user1-pa-app2 пользователя pu-user1 c размещенным APIComponent для Pipelines API, Files API. См. api-pipelines.yaml, api-files.yaml.

  2. Пайплайны. См. exp-pipeline6.yaml и остальные ресурсы пайплайнов в файлах с маской exp-pipeline*.yaml.

Пайплайны

test-ep6 (exp-pipeline6.yaml)

Базовый тестовый пайплайн с одним этапом.

Для этого пайплайна есть два манифеста интерфесов APIComponent с OIDC аутентификацией:

  • api-cmp6-oidc.yaml (OIDC)
  • api-cmp6-oidc-ba.yaml (OIDC, Basic)

test-ep7 (exp-pipeline7.yaml)

Особенности:

  • Повторяет логику test-ep6, но для переменных пути и ящики используются по умолчанию;

test-ep8, test-ep9 (exp-pipeline8.yaml, exp-pipeline9.yaml)

Особенности:

  • Пайплайны связаны в цепочку, test-ep8 вызывает test-ep9.

test-ep10 (exp-pipeline10.yaml)

Особенности:

  • Включает спецификацию типов входных и выходных переменных;

Данные запросов

data.json, data1.json, data2.json

Отражают все основные виды входов:

  • только файловый вход (data.json)
  • файловый и объектный вход (data1.json)
  • только объектный вход (data2.json)

Виды выходов:

  • заданная файловая группа (все файлы)
  • файловая группа не задана, будет создана временная файловая группа (все файлы)

Для использования data.json необходимо предварительно загрузить содержимое файла test-group21/file22.

Данные data.json, data1.json, data2.json применимы для тестирования пайплайнов:

  • test-ep6
  • test-ep7
  • test-ep12

Данные data2.json применимы для тестирования пайплайнов:

  • test-ep8 и test-ep9

data-typed.json, data-typed-bad.json, data-typed-bad2.json

Включают корректные и некорректные относительно спецификации типов входов и выходов типы данных и типы содержимого.

Данные применимы для тестирования пайплайнов:

  • test-ep10

data11.json, data112.json

Аналогичны data.json и data2.json соответственно.

Данные применимы для тестирования пайплайнов:

  • test-ep11

Тестовые данные

Файл some_data.csv можно использовать в качестве тестового файлового входа (файл может быть загружен через Files API).

Запросы

Старт триала

curl -X POST https:///pu-user1-pa-app2/pipelines/test-ep6/trials
-d @./data/data.json -H "Content-Type: application/json" -u "developer:"

Добавить условие статуса

curl -X POST https:///pu-user1-pa--app2/pipelines/test-ep6/trials//status/conditions
-d @./data/status-condition.json -H "Content-Type: application/json" -u "developer:"

Получить триалы

Один:

url -X GET https:///pu-user1-pa-app2/trials/6bc5dfee-aeae-4269-8982-abf0fcfa3c65
-u "developer:"

Все триалы пайплайна:

curl -X GET https:///pu-user1-pa-app2/pipelines/test-ep6/trials
-u "developer:"

Все триалы пользователя:

curl -X GET https:///pu-user1-pa-app2/trials
-u "developer:"

Получить пайплайны

curl -X GET https:///pu-user1-pa-app2/pipelines/test-ep6
-u "developer:"

curl -X GET https:///pu-user1-pa-app2/pipelines/test-ep6/version
-u "developer:"

curl -X GET https:///pu-user1-pa-app2/pipelines
-u "developer:"

Загрузка файла some-data.csv (при необходимости)

curl -X PUT https:///pu-user1-pa-app2/files/test-app2-user-data/test-group21/file22
-u "developer:"

curl -X PUT -d @./data/some_data.csv ""

OIDC аутентификация

Получить токен для OIDC аутентификации:

curl -L -X POST https:///keycloak/realms/master/protocol/openid-connect/token
--data-urlencode 'client_id=dev-multi-auth'
--data-urlencode 'grant_type=password'
--data-urlencode 'username=test-multi-auth'
--data-urlencode 'password='

dev-multi-auth - имя клиента Keycloak, test-multi-auth - имя пользователя.

Использовать токен в запросах:

(например, для получения списка пайплайнов)

curl -X GET https:///pu-user1-pa-app2/pipelines
-L
-H "Authorization: Bearer "