Интеграционные тесты - Backend
Какую роль выполняют интеграционные тесты?
Проверка корректности работы основных сценариев приложения, а также получение метрик скорости работы приложения.
WARNING
Сценарии для Pepeunit Backend проверяют исключительно бизнеслогику, они не стремятся проверить то как работает какой-либо из слоёв API.
Cценарии User
Сценарий 1 - Cоздание
- Создать Пользователей
- Попытаться создать Пользователя с существующим login
- Установить роль Админа одному из Пользователей
Сценарий 2 - Авторизация
- Получить токен авторизации для всех Пользователей
- Попытаться получить токен с не валидным password
- Попытаться получить токен с не валидным login
Сценарий 3 - Верификация
- Проверить верификацию с несуществующим кодом
- Сгенерировать верификационный код всем созданным Пользователям
- Проверить верификационный код для всех созданных Пользователей
- Проверить что кодов больше нет в redis
Сценарий 4 - Блокировка и Разблокировка
- Заблокировать Пользователя
- Разблокировать Пользователя
- Попытаться заблокировать Пользователя не имея прав Администратора
- Попытаться разблокировать Пользователя не имея прав Администратора
Сценарий 5 - Модификация
- Обновить логин на не занятый
- Обновить логин на занятый
- Проверка обновления пароля
Сценарий 6 - Множественная выборка
- Выборка со всеми параметрами для получения списка
Cценарии Repo
Сценарий 1 - Создание
- Создать открытый/закрытый repo gitlab
- Создать открытый/закрытый repo github
- Создать Repo с разными уровнями видимости
- Попытаться создать Repo с существующим именем
- Попытаться создать Repo с невалидным url
- Попытаться создать закрытый Repo с невалидными кредами
Cценарий 2 - Модификация
- Установить всем repo default ветку
- Обновить название на не занятое
- Обновить название на занятое
- Изменить автоматическое обновление на ручное
- Установить все три вида апдейтов - ручной, автоматический по коммиту, автоматический по тэгу
- Установить для компилируемых - default ветку
Cценарий 3 - Получить все комиты по ветке
- Получить первые 10 коммитов
- Проверить первый коммит
- Проверить выборку коммитов для не существующей ветки
Сценарий 4 - Получение доступных платформ
- Проверка получения платформ от удалённого репозитория
- Проверка получения платформ доступных на инстансе по тэгам
- Проверка получения не существующих тэгов
- Проверка получения коммитов без тэгов
- Проверка получения коммитов с тэгами
Сценарий 5 - Обновить креды
Для закрытых репозиториев gitlab и github
- Обновить креды на невалидные
- Попробовать обновить репозиторий с невалидными кредами
- Обновить креды на валидные
Сценарий 6 - Установить ветку по умолчанию
- Для всех тестовых Repo - проставить каждой из сущностей первую ветку по умолчанию
- Попробовать проставить не существующую ветку по умолчанию
Сценарий 7 - Обновить физический репозиторий
- Удалить один из тестовых физических Repo
- Обновить все тестовые физические Repo
Сценарий 8 - Удаление
- Удалить репозиторий к которому не присоеденены Unit
Сценарий 9 - Множественная выборка
- Выборка по создателю и автообновляемости
- Выборка со всеми параметрами
Сценарии Unit
Сценарий 1 - Создание
- Создать автообновлеяемые Unit
- Создать все 3 варианта видимости
- Создать Unit для всех сценариев обновления:
На основе Форма обновления Unit Форма обновления Repo Interpreter Руками Руками Interpreter Руками По последнему Коммиту Interpreter Руками По последнему Тэгу Interpreter Автоматически Руками Interpreter Автоматически По последнему Коммиту Interpreter Автоматически По последнему Тэгу Compiler Руками Руками Compiler Руками По последнему Тэгу Compiler Автоматически Руками Compiler Автоматически По последнему Тэгу - Создать Unit с существующим именем
- Попытаться Unit создать для Repo у которого нет стандарной ветки
- Попытатьсяc cоздать Unit от верссии Repo у которого нет env_example.json и schema_example.json
Сценарий 2 - Проверка удаляемости Repo
- Проверить удаляемость Repo, если есть хотябы 1 Unit
Cценарий 3 - Модификация
- Обновить название
- Попытаться обновить название на занятое
- Обновление видимости
- Попытаться установить автоматическое обновление Unit без установки коммита и ветки
- Изменить автоматическое обновление Unit на ручное
- Изменить ручное обновление на автоматическое
- Попытаться модифицировать Unit без полномочий создателя
Cценарий 4 - Работа с файлом окружения
- Получить файл окружения у верссии в которой он есть
- Попытаться установить переменную, которой нет в env_example.json
- Установить всем тестовым Unit env.json
Сценарий 5 - Получение прошивки
- Получить прошивку zip, tar, tgz и проверить env.json файлы
- Попробовать получить прошивку через tgz со сломанными wbits и level
- Проверить получение таргет версии для Unit
Сценарий 6 - Работа хранилища для Unit
- Проверка сохранения и получения данных из хранилища
- Проверка возникновения ошибки для данных большой длинны
Сценарий 7 - Запуск контура инфраструктуры
- Запустить бекенд в отдельной сессии screen с проверкой запуска
- Запустить N Units в отдельных сессиях screen с проверкой запуска
Сценарий 8 - Обновление Unit напрямую
- Перевести все Unit на существующие старые версии
- Попробовать Unit на несущетвующую версию
- Попробовать перевести Unit на версию с невалидным env_example.json
- Попробовать обновить с невалидным env.json
Сценарий 9 - Обновление Unit автоматически через Repo
- Обновить Repo руками на определённую версию, проверить связанные Unit
- Обновить Repo обновляющийся на последнюю версию, через вызов автоматического обновления, проверить связанные Unit
Сценарий 10 - Множественная выборка Unit
- Выборка по всем параметрам
Сценарии UnitNode
Cценарий 1 - Модификация UnitNode
- Обновить видимость
- Обновить для Input презаписываемость
- Попробовать обновить для Output презаписываемость
Сценарий 2 - Взаимодействие
- Каждое взаимодействие - это установка input UnitNode, который автоматически передаётся в output UnitNode на стороне Unit, с логированием в json файл
- Установить связи UnitNodeEdge
- UnitNode Output -> Input - Public - Internal
- UnitNode Output -> Input - Internal - Private
- Обновить состояние схемы на устройствах
- Отправить значение в Input топик - Public Unit
- Попробовать установить значение со стороны Pepeunit для Output топика
- Проверить log.json каждого из Unit на предмет нужного значения
Сценарий 3 - Установить значения Input
- Попробовать установить значения для Input от имени Unit с проставленным флагом is_rewritable_input=False и True
Сценарий 4 - Получение UnitNodeEdge по unit_uuid
- Получить все связи определённого Unit
Сценарий 5 - Удаление UnitNodeEdge
- Удалить существующий UnitNodeEdge
- Попробовать удалить не существующий UnitNodeEdge
Сценарий 6 - Множественная выборка UnitNode
- Выборка по всем парамтерам фильтра
Сценарий 7 - Удаление Unit
- Удалить Unit
- Проверить что его нет
Сценарий 8 - Проверка распределения версий для Unit по Repo uuid
- Проверить получение статистики - какие версии используют Unit у конкретного Repo
Сценарии Permission
Сценарий 1 - Создание Permission
- Создать Permission между другим Пользователем и приватным Unit
- Попробовать содать Permission с несуществующим Агентом
- Попробовать содать Permission с несуществующим Ресурсом
Сценарий 2 - Получение Permission
- Получить все Ресурсы по Агенту
- Попробовать получить все Ресурсы по несуществующему Агенту
Сценарий 3 - Удаление Permission
- Удалить существующий Permission
- Попробовать удалить несуществующий Permission
Сценарии Metrics
Сценарий 1 - Создание Metrics
- Получить все метрики инстанса