All checks were successful
continuous-integration/drone/push Build is passing
103 lines
3.9 KiB
Python
Executable File
103 lines
3.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
import json
|
||
import sys
|
||
import requests
|
||
from datetime import date, datetime
|
||
import time
|
||
|
||
# Настройки для тестирования
|
||
BASE_URL = "http://localhost:8000" # URL API Gateway
|
||
TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyOSIsImVtYWlsIjoidGVzdDJAZXhhbXBsZS5jb20iLCJleHAiOjE3NTg4NjY5ODJ9._AXkBLeMI4zxC9shFUS3744miuyO8CDnJD1X1AqbLsw"
|
||
|
||
# Функция для добавления записи в календарь через мобильный эндпоинт
|
||
def create_mobile_calendar_entry():
|
||
url = f"{BASE_URL}/api/v1/calendar/entries/mobile"
|
||
|
||
# Данные для создания записи в формате мобильного приложения
|
||
today_str = date.today().isoformat()
|
||
|
||
data = {
|
||
"date": today_str,
|
||
"type": "MENSTRUATION",
|
||
"flow_intensity": 3, # medium
|
||
"symptoms": ["CRAMPS", "HEADACHE"],
|
||
"mood": "HAPPY",
|
||
"notes": "Тестовая запись из мобильного приложения"
|
||
}
|
||
|
||
headers = {
|
||
"Authorization": f"Bearer {TOKEN}",
|
||
"Content-Type": "application/json"
|
||
}
|
||
|
||
print(f"\n=== Тест мобильного эндпоинта ===")
|
||
print(f"Отправка запроса POST на {url}")
|
||
print(f"Данные: {json.dumps(data, indent=2, ensure_ascii=False)}")
|
||
|
||
response = requests.post(url, json=data, headers=headers)
|
||
|
||
print(f"Код ответа: {response.status_code}")
|
||
|
||
if response.status_code == 201:
|
||
print("✓ Запрос успешно выполнен")
|
||
print(f"Ответ: {json.dumps(response.json(), indent=2, ensure_ascii=False)}")
|
||
return True
|
||
else:
|
||
print(f"✗ Ошибка при выполнении запроса: {response.text}")
|
||
return False
|
||
|
||
# Функция для получения записей календаря
|
||
def get_calendar_entries():
|
||
url = f"{BASE_URL}/api/v1/entries"
|
||
|
||
headers = {
|
||
"Authorization": f"Bearer {TOKEN}"
|
||
}
|
||
|
||
print(f"\n=== Получение записей календаря ===")
|
||
print(f"Отправка запроса GET на {url}")
|
||
|
||
response = requests.get(url, headers=headers)
|
||
|
||
print(f"Код ответа: {response.status_code}")
|
||
|
||
if response.status_code == 200:
|
||
print("✓ Запрос успешно выполнен")
|
||
entries = response.json()
|
||
print(f"Количество записей: {len(entries)}")
|
||
return True
|
||
else:
|
||
print(f"✗ Ошибка при выполнении запроса: {response.text}")
|
||
return False
|
||
|
||
if __name__ == "__main__":
|
||
print("Тестирование API календаря для мобильного приложения")
|
||
|
||
# Проверяем, что сервисы запущены
|
||
try:
|
||
health_check = requests.get(f"{BASE_URL}/api/v1/gateway/health")
|
||
if health_check.status_code != 200:
|
||
print("API Gateway недоступен. Убедитесь, что сервисы запущены.")
|
||
sys.exit(1)
|
||
except requests.exceptions.ConnectionError:
|
||
print("Не удалось подключиться к API Gateway. Убедитесь, что сервисы запущены.")
|
||
sys.exit(1)
|
||
|
||
# Запускаем тесты
|
||
success = True
|
||
|
||
# Тест 1: Создание записи в календаре через мобильный эндпоинт
|
||
if not create_mobile_calendar_entry():
|
||
success = False
|
||
|
||
# Тест 2: Проверка получения записей
|
||
if not get_calendar_entries():
|
||
success = False
|
||
|
||
# Выводим общий результат
|
||
if success:
|
||
print("\n✅ Все тесты пройдены успешно!")
|
||
sys.exit(0)
|
||
else:
|
||
print("\n❌ Некоторые тесты не пройдены.")
|
||
sys.exit(1) |