Интеграционные тесты
Какую роль выполняют интеграционные тесты в приложении?
Интеграционные тесты позволяют протестирововать корректность работы основных сценариев приложения, а также вывести ряд метрик работы системы для администраторов и разработчиков.
WARNING
Все сценарии выполняемые в рамках интеграционных тестов, проверяют исключительно бизнеслогику, они не стремятся проверить то как работает какой-либо из слоёв 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 ветку
- Обновить название на не занятое
- Обновить название на занятое
- Изменить автоматическое обновление на ручное
- Установить все три вида апдейтов - ручной, автоматический по коммиту, автоматический по тэгу
Cценарий 3 - Получить все комиты по ветке
- Получить первые 10 коммитов
- Проверить первый коммит
- Проверить выборку коммитов для не существующей ветки
Сценарий 4 - Обновить креды
Для закрытых репозиториев gitlab и github
- Обновить креды на невалидные
- Попробовать обновить репозиторий с невалидными кредами
- Обновить креды на валидные
Сценарий 5 - Установить ветку по умолчанию
- Для всех тестовых Repo - проставить каждой из сущностей первую ветку по умолчанию
- Попробовать проставить не существующую ветку по умолчанию
Сценарий 6 - Обновить физический репозиторий
- Удалить один из тестовых физических Repo
- Обновить все тестовые физические Repo
Сценарий 7 - Удаление
- Удалить репозиторий к которому не присоеденены Unit
Сценарий 8 - Множественная выборка
- Выборка по создателю и автообновляемости
- Выборка со всеми параметрами
Сценарии Unit
Сценарий 1 - Создание
- Создать автообновлеяемый Unit
- Создать все 3 варианта видимости
- Создать Unit для всех сценариев обновления
Состояние Unit Состояние Repo Unit обновляется руками Repo не обновляется автоматически Unit обновляется руками Repo обновляется автоматически по последнему комиту Unit обновляется руками Repo обновляется автоматически по последнему тегу Unit обновляется автоматически Repo не обновляется автоматически Unit обновляется автоматически Repo обновляется автоматически по последнему комиту Unit обновляется автоматически Repo обновляется автоматически по последнему тегу - Создать 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
Сценарий 6 - Запуск контура инфраструктуры
- Запустить бекенд в отдельной сессии screen с проверкой запуска
- Запустить 8 Units в отдельных сессиях screen с проверкой запуска
Сценарий 7 - Обновление Unit напрямую
- Перевести все Unit на существующие старые версии
- Попробовать Unit на несущетвующую версию
- Попробовать перевести Unit на версию с невалидным env_example.json
- Попробовать обновить с невалидным env.json
Сценарий 8 - Обновление Unit автоматически
- Обновить Repo руками на определённую версию, проверить связанные Unit
- Обновить Repo, обновляющийся на последнюю вресию, через вызов автоматического обновления, проверить связанные Unit
- Обновить Repo, обновляющийся на последний Tag, через вызов автоматического обновления, проверить связанные Unit
Сценарий 9 - Множественная выборка 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
- Проверить что его нет
Сценарии Permission
Сценарий 1 - Создание Permission
- Создать Permission между другим пользователем и приватным Unit
- Попробовать содать Permission с несуществующим Агентом
- Попробовать содать Permission с несуществующим Ресурсом
Сценарий 2 - Получение Permission
- Получить все Ресурсы по Агенту
- Попробовать получить все Ресурсы по несуществующему Агенту
Сценарий 3 - Удаление Permission
- Удалить существующий Permission
- Попробовать удалить несуществующий Permission
Сценарии Metrics
Сценарий 1 - Создание Metrics
- Получить все метрики Узла