All checks were successful
continuous-integration/drone/push Build is passing
684 lines
23 KiB
Markdown
684 lines
23 KiB
Markdown
# Запросы для тестирования API приложения для безопасности женщин
|
||
|
||
В этом файле собраны примеры всех API-запросов для тестирования серверной части микросервисного приложения.
|
||
|
||
## Содержание
|
||
- [Общие запросы](#общие-запросы)
|
||
- [Сервис пользователей (User Service)](#сервис-пользователей-user-service)
|
||
- [Сервис экстренной помощи (Emergency Service)](#сервис-экстренной-помощи-emergency-service)
|
||
- [Сервис геолокации (Location Service)](#сервис-геолокации-location-service)
|
||
- [Сервис календаря (Calendar Service)](#сервис-календаря-calendar-service)
|
||
- [Сервис уведомлений (Notification Service)](#сервис-уведомлений-notification-service)
|
||
- [API Gateway](#api-gateway)
|
||
|
||
## Общие запросы
|
||
|
||
### Проверка доступности всех сервисов
|
||
|
||
```bash
|
||
# Проверка API Gateway
|
||
curl -s http://localhost:8000/health | jq
|
||
|
||
# Проверка User Service
|
||
curl -s http://localhost:8001/health | jq
|
||
|
||
# Проверка Emergency Service
|
||
curl -s http://localhost:8002/health | jq
|
||
|
||
# Проверка Location Service
|
||
curl -s http://localhost:8003/health | jq
|
||
|
||
# Проверка Calendar Service
|
||
curl -s http://localhost:8004/health | jq
|
||
|
||
# Проверка Notification Service
|
||
curl -s http://localhost:8005/health | jq
|
||
|
||
# Альтернативные endpoint health
|
||
curl -s http://localhost:8000/api/v1/health | jq
|
||
curl -s http://localhost:8001/api/v1/health | jq
|
||
curl -s http://localhost:8002/api/v1/health | jq
|
||
curl -s http://localhost:8003/api/v1/health | jq
|
||
curl -s http://localhost:8004/api/v1/health | jq
|
||
curl -s http://localhost:8005/api/v1/health | jq
|
||
```
|
||
|
||
## Сервис пользователей (User Service)
|
||
|
||
### Регистрация нового пользователя
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8001/api/v1/users/register \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "usertest1",
|
||
"email": "user1@example.com",
|
||
"password": "SecurePass123!",
|
||
"full_name": "Тест Пользователь",
|
||
"phone_number": "+79001234567"
|
||
}' | jq
|
||
```
|
||
|
||
### Авторизация пользователя
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8001/api/v1/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "usertest1",
|
||
"password": "SecurePass123!"
|
||
}' | jq
|
||
|
||
# Сохраните полученный токен в переменную для дальнейшего использования
|
||
# TOKEN=$(curl -s -X POST http://localhost:8001/api/v1/auth/login -H "Content-Type: application/json" -d '{"username": "usertest1", "password": "SecurePass123!"}' | jq -r '.access_token')
|
||
```
|
||
|
||
### Получение информации о текущем пользователе
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8001/api/v1/users/me \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Обновление профиля пользователя
|
||
|
||
```bash
|
||
curl -X PATCH http://localhost:8001/api/v1/users/me \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"full_name": "Новое Имя Пользователя",
|
||
"phone_number": "+79009876543"
|
||
}' | jq
|
||
```
|
||
|
||
### Добавление контактов для экстренной связи
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8001/api/v1/users/me/emergency-contacts \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"name": "Контакт для экстренной связи",
|
||
"phone_number": "+79001112233",
|
||
"relationship": "Друг"
|
||
}' | jq
|
||
```
|
||
|
||
### Получение списка контактов для экстренной связи
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8001/api/v1/users/me/emergency-contacts \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Удаление контакта для экстренной связи
|
||
|
||
```bash
|
||
# Замените {contact_id} на реальный ID контакта
|
||
curl -X DELETE http://localhost:8001/api/v1/users/me/emergency-contacts/{contact_id} \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|
||
|
||
### Изменение пароля
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8001/api/v1/users/me/change-password \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"current_password": "SecurePass123!",
|
||
"new_password": "NewSecurePass456!"
|
||
}' | jq
|
||
```
|
||
|
||
## Сервис экстренной помощи (Emergency Service)
|
||
|
||
### Отправка сигнала SOS
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8002/api/v1/emergency/alerts \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"latitude": 55.7558,
|
||
"longitude": 37.6173,
|
||
"alert_type": "SOS",
|
||
"message": "Нужна срочная помощь!"
|
||
}' | jq
|
||
|
||
# Сохраните ID созданного оповещения для дальнейших действий
|
||
# ALERT_ID=$(curl -s -X POST http://localhost:8002/api/v1/emergency/alerts -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d '{"latitude": 55.7558, "longitude": 37.6173, "alert_type": "SOS", "message": "Нужна срочная помощь!"}' | jq -r '.id')
|
||
```
|
||
|
||
### Получение активных оповещений пользователя
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8002/api/v1/emergency/alerts/my \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Отмена сигнала SOS
|
||
|
||
```bash
|
||
# Замените {alert_id} на ID полученного ранее оповещения
|
||
curl -X PATCH http://localhost:8002/api/v1/emergency/alerts/{alert_id}/cancel \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Получение списка ближайших оповещений (для волонтеров/служб)
|
||
|
||
```bash
|
||
curl -X GET "http://localhost:8002/api/v1/emergency/alerts/nearby?latitude=55.7558&longitude=37.6173&radius=1.0" \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Отправка отчета о происшествии
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8002/api/v1/emergency/reports \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"latitude": 55.7558,
|
||
"longitude": 37.6173,
|
||
"report_type": "UNSAFE_AREA",
|
||
"description": "Тёмная улица без освещения",
|
||
"severity_level": "MEDIUM"
|
||
}' | jq
|
||
```
|
||
|
||
### Получение списка отчетов о происшествиях в определенном радиусе
|
||
|
||
```bash
|
||
curl -X GET "http://localhost:8002/api/v1/emergency/reports/nearby?latitude=55.7558&longitude=37.6173&radius=5.0" \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
## Сервис геолокации (Location Service)
|
||
|
||
### Обновление местоположения пользователя
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8003/api/v1/locations/update \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"latitude": 55.7558,
|
||
"longitude": 37.6173,
|
||
"accuracy": 10.0
|
||
}' | jq
|
||
```
|
||
|
||
### Получение последнего известного местоположения пользователя
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8003/api/v1/locations/last \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Получение истории перемещений пользователя
|
||
|
||
```bash
|
||
curl -X GET "http://localhost:8003/api/v1/locations/history?start_date=2025-09-20T00:00:00Z&end_date=2025-09-25T23:59:59Z" \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Получение списка безопасных мест поблизости
|
||
|
||
```bash
|
||
curl -X GET "http://localhost:8003/api/v1/locations/safe-places?latitude=55.7558&longitude=37.6173&radius=1.0" \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Добавление безопасного места
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8003/api/v1/locations/safe-places \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"name": "Полицейский участок",
|
||
"latitude": 55.7559,
|
||
"longitude": 37.6174,
|
||
"place_type": "POLICE",
|
||
"description": "Центральный полицейский участок"
|
||
}' | jq
|
||
```
|
||
|
||
### Поиск пользователей в определенном радиусе (для экстренных ситуаций)
|
||
|
||
```bash
|
||
curl -X GET "http://localhost:8003/api/v1/locations/users/nearby?latitude=55.7558&longitude=37.6173&radius=0.5" \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
## Сервис календаря (Calendar Service)
|
||
|
||
### Создание записи в календаре
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8004/api/v1/calendar/entries \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"entry_date": "2025-10-01",
|
||
"cycle_day": 1,
|
||
"symptoms": ["HEADACHE", "FATIGUE"],
|
||
"mood": "NORMAL",
|
||
"notes": "Начало цикла"
|
||
}' | jq
|
||
```
|
||
|
||
### Получение записей календаря за период
|
||
|
||
```bash
|
||
curl -X GET "http://localhost:8004/api/v1/calendar/entries?start_date=2025-09-01&end_date=2025-10-31" \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Обновление записи в календаре
|
||
|
||
```bash
|
||
# Замените {entry_id} на реальный ID записи
|
||
curl -X PATCH http://localhost:8004/api/v1/calendar/entries/{entry_id} \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"symptoms": ["HEADACHE", "FATIGUE", "BLOATING"],
|
||
"mood": "IRRITABLE",
|
||
"notes": "Обновленная запись"
|
||
}' | jq
|
||
```
|
||
|
||
### Получение статистики и прогнозов
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8004/api/v1/calendar/statistics \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Получение прогноза следующего цикла
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8004/api/v1/calendar/predictions/next-cycle \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Настройка параметров календаря
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8004/api/v1/calendar/settings \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"average_cycle_length": 28,
|
||
"average_period_length": 5,
|
||
"notification_enabled": true,
|
||
"notification_days_before": 2
|
||
}' | jq
|
||
```
|
||
|
||
### Получение настроек календаря
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8004/api/v1/calendar/settings \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
## Сервис уведомлений (Notification Service)
|
||
|
||
### Регистрация устройства для Push-уведомлений
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8005/api/v1/notifications/devices \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"device_token": "fcm-token-example-123456",
|
||
"device_type": "ANDROID",
|
||
"app_version": "1.0.0"
|
||
}' | jq
|
||
```
|
||
|
||
### Получение списка зарегистрированных устройств
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8005/api/v1/notifications/devices \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Удаление регистрации устройства
|
||
|
||
```bash
|
||
# Замените {device_id} на реальный ID устройства
|
||
curl -X DELETE http://localhost:8005/api/v1/notifications/devices/{device_id} \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|
||
|
||
### Настройка предпочтений уведомлений
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8005/api/v1/notifications/preferences \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"emergency_alerts": true,
|
||
"nearby_incidents": true,
|
||
"calendar_reminders": true,
|
||
"system_notifications": true
|
||
}' | jq
|
||
```
|
||
|
||
### Получение настроек уведомлений
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8005/api/v1/notifications/preferences \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Отправка тестового уведомления (только для тестирования)
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8005/api/v1/notifications/test \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"title": "Тестовое уведомление",
|
||
"body": "Это тестовое push-уведомление",
|
||
"data": {
|
||
"type": "TEST",
|
||
"action": "OPEN_APP"
|
||
}
|
||
}' | jq
|
||
```
|
||
|
||
### Получение истории уведомлений
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8005/api/v1/notifications/history \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
## API Gateway
|
||
|
||
### Проверка статуса всех сервисов через Gateway
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8000/api/v1/status \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
```
|
||
|
||
### Регистрация через Gateway
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/v1/auth/register \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "gatewayuser",
|
||
"email": "gateway@example.com",
|
||
"password": "GatewayPass123!",
|
||
"full_name": "Gateway Test User",
|
||
"phone_number": "+79991234567"
|
||
}' | jq
|
||
```
|
||
|
||
### Авторизация через Gateway
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/v1/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "gatewayuser",
|
||
"password": "GatewayPass123!"
|
||
}' | jq
|
||
|
||
# Сохраните полученный токен в переменную для дальнейшего использования
|
||
# GW_TOKEN=$(curl -s -X POST http://localhost:8000/api/v1/auth/login -H "Content-Type: application/json" -d '{"username": "gatewayuser", "password": "GatewayPass123!"}' | jq -r '.access_token')
|
||
```
|
||
|
||
### Создание экстренного оповещения через Gateway
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8000/api/v1/emergency/alerts \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $GW_TOKEN" \
|
||
-d '{
|
||
"latitude": 55.7558,
|
||
"longitude": 37.6173,
|
||
"alert_type": "SOS",
|
||
"message": "Тестовое экстренное оповещение через Gateway"
|
||
}' | jq
|
||
```
|
||
|
||
### Комплексный запрос данных пользователя через Gateway
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8000/api/v1/users/dashboard \
|
||
-H "Authorization: Bearer $GW_TOKEN" | jq
|
||
```
|
||
|
||
## Bash скрипт для полного тестирования API
|
||
|
||
Создайте файл `full_api_test.sh` со следующим содержимым:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
|
||
# Colors for output
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
echo -e "${YELLOW}=======================================${NC}"
|
||
echo -e "${YELLOW}🔍 Полное тестирование API приложения ${NC}"
|
||
echo -e "${YELLOW}=======================================${NC}"
|
||
|
||
# 1. Проверка доступности сервисов
|
||
echo -e "\n${GREEN}1. Проверка доступности сервисов${NC}"
|
||
|
||
services=(
|
||
"http://localhost:8000"
|
||
"http://localhost:8001"
|
||
"http://localhost:8002"
|
||
"http://localhost:8003"
|
||
"http://localhost:8004"
|
||
"http://localhost:8005"
|
||
)
|
||
|
||
service_names=(
|
||
"API Gateway"
|
||
"User Service"
|
||
"Emergency Service"
|
||
"Location Service"
|
||
"Calendar Service"
|
||
"Notification Service"
|
||
)
|
||
|
||
for i in ${!services[@]}; do
|
||
echo -n "Проверка ${service_names[$i]} (${services[$i]})... "
|
||
if curl -s "${services[$i]}/health" | grep -q "status.*healthy" || curl -s "${services[$i]}/api/v1/health" | grep -q "status.*healthy"; then
|
||
echo -e "${GREEN}OK${NC}"
|
||
else
|
||
echo -e "${RED}НЕДОСТУПНО${NC}"
|
||
echo "Продолжение тестирования может вызвать ошибки. Хотите продолжить? (y/n)"
|
||
read continue_test
|
||
if [[ $continue_test != "y" ]]; then
|
||
exit 1
|
||
fi
|
||
fi
|
||
done
|
||
|
||
# 2. Регистрация и авторизация
|
||
echo -e "\n${GREEN}2. Регистрация и авторизация${NC}"
|
||
|
||
echo "Регистрация тестового пользователя..."
|
||
REGISTER_RESPONSE=$(curl -s -X POST http://localhost:8001/api/v1/users/register \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "apitest",
|
||
"email": "apitest@example.com",
|
||
"password": "ApiTest123!",
|
||
"full_name": "API Test User",
|
||
"phone_number": "+79997776655"
|
||
}')
|
||
|
||
echo $REGISTER_RESPONSE | jq
|
||
|
||
# Авторизация
|
||
echo "Авторизация тестового пользователя..."
|
||
LOGIN_RESPONSE=$(curl -s -X POST http://localhost:8001/api/v1/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "apitest",
|
||
"password": "ApiTest123!"
|
||
}')
|
||
|
||
echo $LOGIN_RESPONSE | jq
|
||
|
||
TOKEN=$(echo $LOGIN_RESPONSE | jq -r '.access_token')
|
||
if [[ $TOKEN == "null" || -z $TOKEN ]]; then
|
||
echo -e "${RED}Не удалось получить токен авторизации. Тестирование будет остановлено.${NC}"
|
||
exit 1
|
||
else
|
||
echo -e "${GREEN}Успешно получен токен авторизации${NC}"
|
||
fi
|
||
|
||
# 3. Обновление профиля
|
||
echo -e "\n${GREEN}3. Обновление профиля пользователя${NC}"
|
||
curl -s -X PATCH http://localhost:8001/api/v1/users/me \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"full_name": "Обновленное Имя",
|
||
"phone_number": "+79997776655"
|
||
}' | jq
|
||
|
||
# 4. Добавление контактов экстренной связи
|
||
echo -e "\n${GREEN}4. Добавление контакта для экстренной связи${NC}"
|
||
CONTACT_RESPONSE=$(curl -s -X POST http://localhost:8001/api/v1/users/me/emergency-contacts \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"name": "Экстренный контакт",
|
||
"phone_number": "+79991112233",
|
||
"relationship": "Родственник"
|
||
}')
|
||
|
||
echo $CONTACT_RESPONSE | jq
|
||
|
||
CONTACT_ID=$(echo $CONTACT_RESPONSE | jq -r '.id')
|
||
|
||
# 5. Получение списка контактов
|
||
echo -e "\n${GREEN}5. Получение списка экстренных контактов${NC}"
|
||
curl -s -X GET http://localhost:8001/api/v1/users/me/emergency-contacts \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
|
||
# 6. Обновление местоположения пользователя
|
||
echo -e "\n${GREEN}6. Обновление местоположения пользователя${NC}"
|
||
curl -s -X POST http://localhost:8003/api/v1/locations/update \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"latitude": 55.7558,
|
||
"longitude": 37.6173,
|
||
"accuracy": 10.0
|
||
}' | jq
|
||
|
||
# 7. Получение последнего местоположения
|
||
echo -e "\n${GREEN}7. Получение последнего местоположения${NC}"
|
||
curl -s -X GET http://localhost:8003/api/v1/locations/last \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
|
||
# 8. Создание экстренного оповещения
|
||
echo -e "\n${GREEN}8. Создание экстренного оповещения${NC}"
|
||
ALERT_RESPONSE=$(curl -s -X POST http://localhost:8002/api/v1/emergency/alerts \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"latitude": 55.7558,
|
||
"longitude": 37.6173,
|
||
"alert_type": "SOS",
|
||
"message": "Тестовое экстренное оповещение"
|
||
}')
|
||
|
||
echo $ALERT_RESPONSE | jq
|
||
|
||
ALERT_ID=$(echo $ALERT_RESPONSE | jq -r '.id')
|
||
|
||
# 9. Получение активных оповещений
|
||
echo -e "\n${GREEN}9. Получение активных оповещений пользователя${NC}"
|
||
curl -s -X GET http://localhost:8002/api/v1/emergency/alerts/my \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
|
||
# 10. Отмена экстренного оповещения
|
||
if [[ $ALERT_ID != "null" && -n $ALERT_ID ]]; then
|
||
echo -e "\n${GREEN}10. Отмена экстренного оповещения${NC}"
|
||
curl -s -X PATCH http://localhost:8002/api/v1/emergency/alerts/$ALERT_ID/cancel \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
fi
|
||
|
||
# 11. Создание записи в календаре
|
||
echo -e "\n${GREEN}11. Создание записи в календаре${NC}"
|
||
CALENDAR_RESPONSE=$(curl -s -X POST http://localhost:8004/api/v1/calendar/entries \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"entry_date": "2025-10-01",
|
||
"cycle_day": 1,
|
||
"symptoms": ["HEADACHE", "FATIGUE"],
|
||
"mood": "NORMAL",
|
||
"notes": "Тестовая запись в календаре"
|
||
}')
|
||
|
||
echo $CALENDAR_RESPONSE | jq
|
||
|
||
# 12. Получение записей календаря
|
||
echo -e "\n${GREEN}12. Получение записей календаря${NC}"
|
||
curl -s -X GET "http://localhost:8004/api/v1/calendar/entries?start_date=2025-09-01&end_date=2025-10-31" \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
|
||
# 13. Регистрация устройства для уведомлений
|
||
echo -e "\n${GREEN}13. Регистрация устройства для уведомлений${NC}"
|
||
DEVICE_RESPONSE=$(curl -s -X POST http://localhost:8005/api/v1/notifications/devices \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"device_token": "fcm-test-token-123",
|
||
"device_type": "ANDROID",
|
||
"app_version": "1.0.0"
|
||
}')
|
||
|
||
echo $DEVICE_RESPONSE | jq
|
||
|
||
# 14. Настройка предпочтений уведомлений
|
||
echo -e "\n${GREEN}14. Настройка предпочтений уведомлений${NC}"
|
||
curl -s -X POST http://localhost:8005/api/v1/notifications/preferences \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d '{
|
||
"emergency_alerts": true,
|
||
"nearby_incidents": true,
|
||
"calendar_reminders": true,
|
||
"system_notifications": true
|
||
}' | jq
|
||
|
||
# 15. Получение данных пользователя через Gateway
|
||
echo -e "\n${GREEN}15. Получение данных пользователя через Gateway${NC}"
|
||
curl -s -X GET http://localhost:8000/api/v1/users/dashboard \
|
||
-H "Authorization: Bearer $TOKEN" | jq
|
||
|
||
echo -e "\n${YELLOW}=======================================${NC}"
|
||
echo -e "${GREEN}✅ Тестирование API завершено успешно${NC}"
|
||
echo -e "${YELLOW}=======================================${NC}"
|
||
```
|
||
|
||
## Использование Bash скрипта для полного тестирования API
|
||
|
||
Для запуска скрипта выполните следующие команды:
|
||
|
||
```bash
|
||
chmod +x full_api_test.sh
|
||
./full_api_test.sh
|
||
``` |