Major fixes and new features
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
250
tests/test_endpoints.sh
Executable file
250
tests/test_endpoints.sh
Executable file
@@ -0,0 +1,250 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user