/
zagvozdeen
/
rhythm
Обзор
Документация
Войти
/
zagvozdeen
/
rhythm
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
master
scripts/test-data/create_test_users.sh
197 строк
9 KB
Andrey Zhunev
refactor(frontend): упростить реализацию записи/отмены участия в событиях
15 ноя 2025, 13:54
15 ноя 2025, 13:54
e0699ac
Код
Авторство
О чём код?
#!/bin/bash # Скрипт для создания тестовых пользователей # Использование: ./create_test_users.sh set -e # Остановка при ошибке # Цвета для вывода RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Конфигурация API_URL="${API_URL:-https://creavo.ru/api}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TOKEN_DIR="$SCRIPT_DIR" echo -e "${BLUE}🔧 Создание тестовых пользователей...${NC}\n" # Проверка доступности API echo -e "${YELLOW}📡 Проверка доступности бэкенда...${NC}" HEALTH_CHECK=$(curl -s --max-time 10 "$API_URL/events" 2>&1) if echo "$HEALTH_CHECK" | grep -qi "no token\|unauthorized\|could not resolve host"; then if echo "$HEALTH_CHECK" | grep -qi "could not resolve host"; then echo -e "${RED}❌ Ошибка: Бэкенд недоступен по адресу $API_URL${NC}" echo -e "${YELLOW}💡 Проверьте URL или подключение к интернету${NC}" exit 1 fi echo -e "${GREEN}✓ Бэкенд доступен${NC}\n" else echo -e "${YELLOW}⚠ Проверка бэкенда: $HEALTH_CHECK${NC}" echo -e "${YELLOW} Продолжаем выполнение...${NC}\n" fi # ============================================================ # Пользователь 1: Инструктор (создатель тренировок) # ============================================================ echo -e "${BLUE}👨🏫 Регистрация пользователя-инструктора...${NC}" # Генерируем уникальный username с timestamp INSTRUCTOR_TIMESTAMP=$(date +%s) INSTRUCTOR_USERNAME="test_instructor_${INSTRUCTOR_TIMESTAMP}" INSTRUCTOR_PASSWORD="testpass123" INSTRUCTOR_DATA=$(cat <<EOF { "tid": ${INSTRUCTOR_TIMESTAMP}, "first_name": "Алексей", "last_name": "Тренеров", "username": "${INSTRUCTOR_USERNAME}", "password": "${INSTRUCTOR_PASSWORD}", "description": "Профессиональный тренер с 10-летним опытом", "city_id": 1 } EOF ) echo -e "${YELLOW}Данные:${NC} username=${INSTRUCTOR_USERNAME}, password=${INSTRUCTOR_PASSWORD}" INSTRUCTOR_RESPONSE=$(curl -s --max-time 30 -X POST "$API_URL/register" \ -H "Content-Type: application/json" \ -d "$INSTRUCTOR_DATA") # Проверка успешности регистрации # По OpenAPI спецификации ответ: {"data": {"id": ...}} if echo "$INSTRUCTOR_RESPONSE" | grep -q '"data"'; then echo -e "${GREEN}✓ Инструктор зарегистрирован успешно${NC}" INSTRUCTOR_ID=$(echo "$INSTRUCTOR_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2) echo -e "${GREEN} ID: $INSTRUCTOR_ID${NC}" elif echo "$INSTRUCTOR_RESPONSE" | grep -q '"id"'; then # Fallback для старого формата ответа echo -e "${GREEN}✓ Инструктор зарегистрирован успешно${NC}" INSTRUCTOR_ID=$(echo "$INSTRUCTOR_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2) echo -e "${GREEN} ID: $INSTRUCTOR_ID${NC}" else if echo "$INSTRUCTOR_RESPONSE" | grep -qi "already\|duplicate\|exists"; then echo -e "${YELLOW}⚠ Инструктор уже существует, продолжаем...${NC}" else echo -e "${RED}❌ Ошибка регистрации инструктора:${NC}" echo "$INSTRUCTOR_RESPONSE" | head -c 500 exit 1 fi fi # Авторизация инструктора echo -e "\n${YELLOW}🔐 Авторизация инструктора...${NC}" INSTRUCTOR_AUTH=$(curl -s --max-time 30 -X POST "$API_URL/auth" \ -H "Content-Type: application/json" \ -d "{ \"username\": \"${INSTRUCTOR_USERNAME}\", \"password\": \"${INSTRUCTOR_PASSWORD}\" }") INSTRUCTOR_TOKEN=$(echo "$INSTRUCTOR_AUTH" | grep -o '"token":"[^"]*"' | cut -d'"' -f4) if [ -z "$INSTRUCTOR_TOKEN" ]; then echo -e "${RED}❌ Не удалось получить токен инструктора${NC}" echo "Ответ: $INSTRUCTOR_AUTH" | head -c 500 exit 1 fi echo -e "${GREEN}✓ Токен получен${NC}" echo "$INSTRUCTOR_TOKEN" > "$TOKEN_DIR/.instructor_token" echo -e "${GREEN} Сохранен в: .instructor_token${NC}" # ============================================================ # Пользователь 2: Участник (записывается на тренировки) # ============================================================ echo -e "\n${BLUE}👩🦰 Регистрация пользователя-участника...${NC}" PLAYER_DATA='{ "tid": 2002002002, "first_name": "Елена", "last_name": "Спортсменова", "username": "test_player", "password": "player2024", "description": "Люблю спорт и активный образ жизни!", "city_id": 1 }' echo -e "${YELLOW}Данные:${NC} username=test_player, password=player2024" PLAYER_RESPONSE=$(curl -s --max-time 30 -X POST "$API_URL/register" \ -H "Content-Type: application/json" \ -d "$PLAYER_DATA") # Проверка успешности регистрации # По OpenAPI спецификации ответ: {"data": {"id": ...}} if echo "$PLAYER_RESPONSE" | grep -q '"data"'; then echo -e "${GREEN}✓ Участник зарегистрирован успешно${NC}" PLAYER_ID=$(echo "$PLAYER_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2) echo -e "${GREEN} ID: $PLAYER_ID${NC}" elif echo "$PLAYER_RESPONSE" | grep -q '"id"'; then # Fallback для старого формата ответа echo -e "${GREEN}✓ Участник зарегистрирован успешно${NC}" PLAYER_ID=$(echo "$PLAYER_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2) echo -e "${GREEN} ID: $PLAYER_ID${NC}" else if echo "$PLAYER_RESPONSE" | grep -qi "already\|duplicate\|exists"; then echo -e "${YELLOW}⚠ Участник уже существует, продолжаем...${NC}" else echo -e "${RED}❌ Ошибка регистрации участника:${NC}" echo "$PLAYER_RESPONSE" | head -c 500 exit 1 fi fi # Авторизация участника echo -e "\n${YELLOW}🔐 Авторизация участника...${NC}" PLAYER_AUTH=$(curl -s --max-time 30 -X POST "$API_URL/auth" \ -H "Content-Type: application/json" \ -d '{ "username": "test_player", "password": "player2024" }') PLAYER_TOKEN=$(echo "$PLAYER_AUTH" | grep -o '"token":"[^"]*"' | cut -d'"' -f4) if [ -z "$PLAYER_TOKEN" ]; then echo -e "${RED}❌ Не удалось получить токен участника${NC}" echo "Ответ: $PLAYER_AUTH" | head -c 500 exit 1 fi echo -e "${GREEN}✓ Токен получен${NC}" echo "$PLAYER_TOKEN" > "$TOKEN_DIR/.player_token" echo -e "${GREEN} Сохранен в: .player_token${NC}" # ============================================================ # Итоги # ============================================================ echo -e "\n${GREEN}╔════════════════════════════════════════════╗${NC}" echo -e "${GREEN}║ ✅ Тестовые пользователи созданы! ║${NC}" echo -e "${GREEN}╚════════════════════════════════════════════╝${NC}" echo -e "\n${BLUE}📝 Учетные данные для тестирования:${NC}\n" echo -e "${YELLOW}👨🏫 Инструктор (создатель тренировок):${NC}" echo -e " Username: ${GREEN}${INSTRUCTOR_USERNAME}${NC}" echo -e " Password: ${GREEN}${INSTRUCTOR_PASSWORD}${NC}" echo -e " Токен: ${GREEN}$TOKEN_DIR/.instructor_token${NC}" echo -e "\n${YELLOW}👩🦰 Участник (записывается на тренировки):${NC}" echo -e " Username: ${GREEN}test_player${NC}" echo -e " Password: ${GREEN}player2024${NC}" echo -e " Токен: ${GREEN}$TOKEN_DIR/.player_token${NC}" echo -e "\n${BLUE}🎯 Следующий шаг:${NC}" echo -e " ${YELLOW}./create_test_events.sh${NC} - создать тестовые тренировки" echo -e "\n${BLUE}💡 Проверка данных:${NC}" echo -e " curl -X POST -H \"Authorization: Bearer \$(cat $TOKEN_DIR/.instructor_token)\" $API_URL/me" echo ""