Files
chat/tests/test_endpoints.sh
Andrew K. Choi ddce9f5125
All checks were successful
continuous-integration/drone/push Build is passing
Major fixes and new features
2025-09-25 15:51:48 +09:00

250 lines
10 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт для тестирования всех API-эндпоинтов через API Gateway
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# База URL API Gateway
GATEWAY_URL="http://localhost:8000"
# Функция для проверки статуса ответа
check_status() {
local response=$1
local endpoint=$2
if echo "$response" | grep -q "\"status\"\|\"id\"\|\"message\""; then
echo -e "${GREEN}$endpoint - OK${NC}"
return 0
else
echo -e "${RED}$endpoint - Error: $response${NC}"
return 1
fi
}
# Проверка доступности API Gateway
echo -e "${BLUE}===============================================${NC}"
echo -e "${BLUE}🔍 Проверка API Gateway и всех маршрутов${NC}"
echo -e "${BLUE}===============================================${NC}"
echo -e "${YELLOW}🔎 Проверка API Gateway...${NC}"
HEALTH_RESPONSE=$(curl -s "$GATEWAY_URL/api/v1/health")
if echo "$HEALTH_RESPONSE" | grep -q "healthy"; then
echo -e "${GREEN}✅ API Gateway работает${NC}"
else
echo -e "${RED}❌ API Gateway недоступен. Убедитесь, что он запущен.${NC}"
exit 1
fi
echo -e "\n${BLUE}==== User Service Endpoints ====${NC}"
# Регистрация тестового пользователя
echo -e "${YELLOW}→ Тестирование /api/v1/auth/register${NC}"
REGISTER_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/auth/register" \
-H "Content-Type: application/json" \
-d '{
"username": "test_endpoints",
"email": "test_endpoints@example.com",
"password": "Test@1234",
"full_name": "Test Endpoints User",
"phone_number": "+7123456789"
}')
check_status "$REGISTER_RESPONSE" "/api/v1/auth/register"
USER_ID=$(echo "$REGISTER_RESPONSE" | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
if [ -n "$USER_ID" ]; then
echo -e " └─ Создан пользователь с ID: $USER_ID"
else
echo -e " └─ Не удалось получить ID пользователя"
fi
# Авторизация
echo -e "${YELLOW}→ Тестирование /api/v1/auth/login${NC}"
LOGIN_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{
"username": "test_endpoints",
"password": "Test@1234"
}')
check_status "$LOGIN_RESPONSE" "/api/v1/auth/login"
TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"access_token":"[^"]*"' | cut -d'"' -f4)
if [ -z "$TOKEN" ]; then
echo -e "${RED}Не удалось получить токен авторизации. Дальнейшие тесты невозможны.${NC}"
exit 1
fi
# Получение профиля пользователя
echo -e "${YELLOW}→ Тестирование /api/v1/users/me${NC}"
ME_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/users/me" \
-H "Authorization: Bearer $TOKEN")
check_status "$ME_RESPONSE" "/api/v1/users/me"
# Изменение пароля
echo -e "${YELLOW}→ Тестирование /api/v1/users/me/change-password${NC}"
PASSWORD_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/users/me/change-password" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"current_password": "Test@1234",
"new_password": "Test@5678"
}')
check_status "$PASSWORD_RESPONSE" "/api/v1/users/me/change-password"
# Получение дашборда
echo -e "${YELLOW}→ Тестирование /api/v1/users/dashboard${NC}"
DASH_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/users/dashboard" \
-H "Authorization: Bearer $TOKEN")
check_status "$DASH_RESPONSE" "/api/v1/users/dashboard"
echo -e "\n${BLUE}==== Location Service Endpoints ====${NC}"
# Обновление местоположения
echo -e "${YELLOW}→ Тестирование /api/v1/locations/update${NC}"
LOCATION_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/locations/update" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"latitude": 55.7558,
"longitude": 37.6173,
"accuracy": 5.0
}')
check_status "$LOCATION_RESPONSE" "/api/v1/locations/update"
# Получение последнего местоположения
echo -e "${YELLOW}→ Тестирование /api/v1/locations/last${NC}"
LAST_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/locations/last" \
-H "Authorization: Bearer $TOKEN")
check_status "$LAST_RESPONSE" "/api/v1/locations/last"
# История местоположений
echo -e "${YELLOW}→ Тестирование /api/v1/locations/history${NC}"
HISTORY_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/locations/history" \
-H "Authorization: Bearer $TOKEN")
check_status "$HISTORY_RESPONSE" "/api/v1/locations/history"
echo -e "\n${BLUE}==== Emergency Service Endpoints ====${NC}"
# Создание тревожного оповещения
echo -e "${YELLOW}→ Тестирование /api/v1/emergency/alerts${NC}"
ALERT_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/emergency/alerts" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"latitude": 55.7558,
"longitude": 37.6173,
"alert_type": "SOS",
"message": "Endpoint test alert"
}')
check_status "$ALERT_RESPONSE" "/api/v1/emergency/alerts POST"
ALERT_ID=$(echo "$ALERT_RESPONSE" | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
# Получение своих оповещений
echo -e "${YELLOW}→ Тестирование /api/v1/emergency/alerts/my${NC}"
MY_ALERTS_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/emergency/alerts/my" \
-H "Authorization: Bearer $TOKEN")
check_status "$MY_ALERTS_RESPONSE" "/api/v1/emergency/alerts/my"
# Отмена тревожного оповещения
if [ -n "$ALERT_ID" ]; then
echo -e "${YELLOW}→ Тестирование /api/v1/emergency/alerts/$ALERT_ID/cancel${NC}"
CANCEL_RESPONSE=$(curl -s -X PATCH "$GATEWAY_URL/api/v1/emergency/alerts/$ALERT_ID/cancel" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"reason": "Test completed"}')
check_status "$CANCEL_RESPONSE" "/api/v1/emergency/alerts/$ALERT_ID/cancel"
fi
echo -e "\n${BLUE}==== Calendar Service Endpoints ====${NC}"
# Получение записей календаря
echo -e "${YELLOW}→ Тестирование /api/v1/calendar/entries${NC}"
ENTRIES_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/calendar/entries" \
-H "Authorization: Bearer $TOKEN")
check_status "$ENTRIES_RESPONSE" "/api/v1/calendar/entries GET"
# Создание записи календаря
echo -e "${YELLOW}→ Тестирование /api/v1/calendar/entries POST${NC}"
ENTRY_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/calendar/entries" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"date": "2025-09-25",
"mood": "good",
"symptoms": ["headache", "fatigue"],
"notes": "Test entry"
}')
check_status "$ENTRY_RESPONSE" "/api/v1/calendar/entries POST"
ENTRY_ID=$(echo "$ENTRY_RESPONSE" | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
if [ -n "$ENTRY_ID" ]; then
echo -e " └─ Создана запись календаря с ID: $ENTRY_ID"
else
echo -e " └─ Не удалось получить ID записи календаря"
fi
# Получение обзора цикла
echo -e "${YELLOW}→ Тестирование /api/v1/calendar/cycle-overview${NC}"
CYCLE_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/calendar/cycle-overview" \
-H "Authorization: Bearer $TOKEN")
check_status "$CYCLE_RESPONSE" "/api/v1/calendar/cycle-overview"
# Получение настроек календаря
echo -e "${YELLOW}→ Тестирование /api/v1/calendar/settings${NC}"
SETTINGS_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/calendar/settings" \
-H "Authorization: Bearer $TOKEN")
check_status "$SETTINGS_RESPONSE" "/api/v1/calendar/settings"
echo -e "\n${BLUE}==== Notification Service Endpoints ====${NC}"
# Регистрация устройства
echo -e "${YELLOW}→ Тестирование /api/v1/notifications/devices${NC}"
DEVICE_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/notifications/devices" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"device_token": "test-device-token-endpoint-test",
"device_type": "android",
"device_name": "Test Device"
}')
check_status "$DEVICE_RESPONSE" "/api/v1/notifications/devices POST"
DEVICE_ID=$(echo "$DEVICE_RESPONSE" | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
if [ -n "$DEVICE_ID" ]; then
echo -e " └─ Зарегистрировано устройство с ID: $DEVICE_ID"
else
echo -e " └─ Не удалось получить ID устройства"
fi
# Получение устройств
echo -e "${YELLOW}→ Тестирование /api/v1/notifications/devices GET${NC}"
DEVICES_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/notifications/devices" \
-H "Authorization: Bearer $TOKEN")
check_status "$DEVICES_RESPONSE" "/api/v1/notifications/devices GET"
# Тестовое уведомление
echo -e "${YELLOW}→ Тестирование /api/v1/notifications/test${NC}"
TEST_RESPONSE=$(curl -s -X POST "$GATEWAY_URL/api/v1/notifications/test" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"title": "Test Notification",
"body": "This is a test notification"
}')
check_status "$TEST_RESPONSE" "/api/v1/notifications/test"
# История уведомлений
echo -e "${YELLOW}→ Тестирование /api/v1/notifications/history${NC}"
HISTORY_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/notifications/history" \
-H "Authorization: Bearer $TOKEN")
check_status "$HISTORY_RESPONSE" "/api/v1/notifications/history"
echo -e "\n${BLUE}==== Проверка общей доступности сервисов ====${NC}"
# Получение статуса всех сервисов
echo -e "${YELLOW}→ Тестирование /api/v1/services-status${NC}"
STATUS_RESPONSE=$(curl -s -X GET "$GATEWAY_URL/api/v1/services-status")
check_status "$STATUS_RESPONSE" "/api/v1/services-status"
echo -e "\n${GREEN}✅ Тестирование эндпоинтов завершено${NC}"