В качестве результата пришлите ссылки на ваши GitHub-проекты в личном кабинете студента на сайте netology.ru.
Все задачи этого занятия нужно делать в разных репозиториях.
Важно: если у вас что-то не получилось, то оформляйте Issue по установленным правилам.
Важно: не делайте ДЗ всех занятий в одном репозитории! Иначе вам потом придётся достаточно сложно подключать системы Continuous Integration.
- Инициализируйте на своём компьютере пустой Git-репозиторий
- Добавьте в него готовый файл .gitignore
- Добавьте в этот же каталог код, требуемый в ДЗ
- Сделайте необходимые коммиты
- Создайте публичный репозиторий на GitHub и свяжите свой локальный репозиторий с удалённым
- Сделайте пуш (удостоверьтесь, что ваш код появился на GitHub)
- Ссылку на ваш проект отправьте в личном кабинете на сайте netology.ru
- Задачи, отмеченные, как необязательные, можно не сдавать, это не повлияет на получение зачета
Важно: задачи этого занятия не предполагают подключения к CI.
Пожалуйста, ознакомьтесь с кратким руководством по работе с Volumes
Пожалуйста, ознакомьтесь с кратким руководством по работе с клиентами SQL
Случилось то, что обычно случается ближе к дедлайну: никто ничего не успевает и винит во всём остальных других.
Разработчикам не особо до вас ("им ведь нужно пилить новые фичи"), поэтому они подготовили для вас сборку, работающую с СУБД и даже приложили схему БД (см. файл schema.sql), но при этом сказали "остальное вам нужно сделать самим, там не сложно" 😈.
Что вам нужно сделать:
- Внимательно изучить схему
- Создать Docker Container на базе MySQL 8 (прописать создание БД, пользователя, пароля)
- Запустить SUT (app-deadline.jar): для указания параметров подключения к БД можно использовать:
- либо переменные окружения
DB_URL
,DB_USER
,DB_PASS
- либо указать их через флаги командной строки при запуске:
-P:jdbc.url=...
,-P:jdbc.user=...
,-P:jdbc.password=...
(внимание: при запуске флаги не нужно указывать через запятую!). Данное приложение не использует файлapplication.properties
в качестве конфигурации, конфигурационный файл находится внутри jar архива. - либо можете схитрить и попробовать подобрать значения, зашитые в саму SUT
А дальше выясняется куча забавных вещей 😈. Рекомендуем вам попробовать разобраться самим, но если будет сложно, загляните в подсказку.
Подсказка
Проблема: SUT не создаёт самостоятельно таблицы в БД.
Поэтому вам нужно сходить на сайт-описание Docker Image MySQL и посмотреть, как при инициализации скармливать схему (будет использоваться технология volumes).
Подсказка
Проблема: SUT вставляет в БД демо-данные, а поскольку там есть ограничение уникальности, это приводит к ошибкам.
Поэтому вам нужно где-то настроить вычистку данных за SUT.
Если вы решите вдруг генерировать пользователей, чтобы под ними тестировать "Вход в приложение", то не должны удивляться тому, что в базе данных пароль пользователя хранится в зашифрованном виде.
Попытка его записать туда в открытом виде ни к чему хорошему не приведёт.
Настойчивые требования к разработчикам "раскрыть" алгоритм генерации пароля - ни к чему не привели.
Что же делать?
Подсказка
Если вы внимательно присмотритесь к демо-данным, то они очень похожи (прямо подозрительно) на те, что были в одной из предыдущих задач.
Значит вы можете попробовать использовать уже готовые "зашифрованные пароли", зная то, какие они были в незашифрованном виде.
Если вы добрались до этого шага и всё-таки успешно запустили SUT, то вы уже герой!
Но теперь выяснилась следующая забавная информация: разработчики фронтенда поругались с разработчиками бэкенда и вы можете протестировать только "Вход в систему".
Внимательно посмотрите, как и куда сохраняются коды генерации в СУБД и напишите тест, который взяв информацию из БД о сгенерированном коде позволит вам протестировать "Вход в систему" через веб-интерфейс.
P.S. Неплохо бы ещё проверить, что при трёхкратном неверном вводе пароля система блокируется.
Итого в результате у вас должно получиться:
- docker-compose.yml*
- app-deadline.jar
- schema.sql
- код ваших авто-тестов
Если ваша система не поддерживает Docker, то вам придётся (к сожалению) вручную установить MySQL на свой компьютер и отрабатывать тесты уже на ней. В этом случае положите в репозиторий файлик README.md
, в котором опишите последовательность действий (со скриншотами) для установки сервера MySQL и загрузки в него файла schema.sql
.