calendar events
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-09-26 15:57:50 +09:00
parent 64171196b6
commit 76d0d86211
16 changed files with 1657 additions and 22 deletions

171
test_mobile_endpoints.py Normal file
View File

@@ -0,0 +1,171 @@
#!/usr/bin/env python
import json
import requests
import sys
import traceback
from datetime import date
# API Gateway endpoint
BASE_URL = "http://localhost:8004"
# Токен для аутентификации - замените на действующий токен
AUTH_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyOSIsImVtYWlsIjoidGVzdDJAZXhhbXBsZS5jb20iLCJleHAiOjE3NTg4NjY5ODJ9._AXkBLeMI4zxC9shFUS3744miuyO8CDnJD1X1AqbLsw"
def test_health():
"""Проверка доступности сервиса"""
try:
response = requests.get(f"{BASE_URL}/health")
print(f"Статус сервиса: {response.status_code}")
print(f"Ответ: {response.text}")
return response.status_code == 200
except Exception as e:
print(f"Ошибка при проверке сервиса: {e}")
return False
def test_authenticated_endpoint():
"""Тестирование аутентифицированного эндпоинта для мобильного приложения"""
print("\n=== Тестирование аутентифицированного эндпоинта ===")
# Данные в формате мобильного приложения
mobile_data = {
"date": date.today().isoformat(),
"type": "MENSTRUATION",
"flow_intensity": 3,
"symptoms": ["CRAMPS", "HEADACHE"],
"mood": "NORMAL",
"notes": "Запись из мобильного приложения через аутентифицированный эндпоинт"
}
print(f"Отправляемые данные: {json.dumps(mobile_data, indent=2)}")
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {AUTH_TOKEN}"
}
try:
response = requests.post(
f"{BASE_URL}/api/v1/calendar/entries/mobile",
headers=headers,
json=mobile_data,
timeout=10
)
print(f"Статус ответа: {response.status_code}")
if response.status_code >= 200 and response.status_code < 300:
print(f"Тело успешного ответа: {json.dumps(response.json(), indent=2)}")
return True
else:
print("Ошибка при создании записи через аутентифицированный эндпоинт")
try:
print(f"Тело ответа с ошибкой: {json.dumps(response.json(), indent=2)}")
except:
print(f"Тело ответа не является JSON: {response.text}")
return False
except Exception as e:
print(f"Ошибка при выполнении запроса: {e}")
traceback.print_exc()
return False
def test_debug_endpoint():
"""Тестирование отладочного эндпоинта для мобильного приложения (без аутентификации)"""
print("\n=== Тестирование отладочного эндпоинта (без аутентификации) ===")
# Данные в формате мобильного приложения
mobile_data = {
"date": date.today().isoformat(),
"type": "MENSTRUATION",
"flow_intensity": 4,
"symptoms": ["BACKACHE", "BLOATING"],
"mood": "HAPPY",
"notes": "Запись из мобильного приложения через отладочный эндпоинт"
}
print(f"Отправляемые данные: {json.dumps(mobile_data, indent=2)}")
headers = {
"Content-Type": "application/json"
}
try:
response = requests.post(
f"{BASE_URL}/debug/mobile-entry",
headers=headers,
json=mobile_data,
timeout=10
)
print(f"Статус ответа: {response.status_code}")
if response.status_code >= 200 and response.status_code < 300:
print(f"Тело успешного ответа: {json.dumps(response.json(), indent=2)}")
return True
else:
print("Ошибка при создании записи через отладочный эндпоинт")
try:
print(f"Тело ответа с ошибкой: {json.dumps(response.json(), indent=2)}")
except:
print(f"Тело ответа не является JSON: {response.text}")
return False
except Exception as e:
print(f"Ошибка при выполнении запроса: {e}")
traceback.print_exc()
return False
def verify_entries_created():
"""Проверка, что записи были созданы в БД"""
print("\n=== Проверка созданных записей ===")
try:
response = requests.get(f"{BASE_URL}/debug/entries")
print(f"Статус ответа: {response.status_code}")
if response.status_code == 200:
entries = response.json()
print(f"Количество записей в БД: {len(entries)}")
print("Последние 2 записи:")
for entry in entries[-2:]:
print(json.dumps(entry, indent=2))
return True
else:
print(f"Ошибка при получении записей: {response.status_code}")
return False
except Exception as e:
print(f"Ошибка при проверке записей: {e}")
traceback.print_exc()
return False
def main():
print("=== Тестирование мобильных эндпоинтов календарного сервиса ===")
if not test_health():
print("Сервис недоступен. Завершение тестирования.")
return 1
debug_result = test_debug_endpoint()
auth_result = test_authenticated_endpoint()
if debug_result and auth_result:
print("\nВсе тесты успешно пройдены!")
verify_entries_created()
return 0
else:
print("\nНекоторые тесты не пройдены.")
if debug_result:
print("✓ Отладочный эндпоинт работает")
else:
print("✗ Отладочный эндпоинт не работает")
if auth_result:
print("✓ Аутентифицированный эндпоинт работает")
else:
print("✗ Аутентифицированный эндпоинт не работает")
verify_entries_created()
return 1
if __name__ == "__main__":
sys.exit(main())