Files
chat/tests/test_mobile_endpoint.py
Andrew K. Choi 537e7b363f
All checks were successful
continuous-integration/drone/push Build is passing
main commit
2025-10-16 16:30:25 +09:00

103 lines
4.4 KiB
Python
Executable File
Raw 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.

#!/usr/bin/env python
import json
import requests
import sys
from datetime import date
# API Gateway endpoint
BASE_URL = "http://localhost:8004"
# Имя пользователя и пароль для аутентификации
# (предполагается, что у вас есть настроенный доступ)
AUTH_DATA = {
"username": "test_user",
"password": "test_password"
}
# Получение токена аутентификации
def get_token():
# Обычно мы бы получили токен из сервиса аутентификации,
# но для теста будем использовать фиктивный токен
# или можем запросить его из user_service
return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InRlc3RfdXNlciIsImVtYWlsIjoidGVzdEBleGFtcGxlLmNvbSIsImV4cCI6MTY5ODI0OTc2Mn0.HS5-cPVZwv55h0CZO0q_Z_1vNY9w8B6YsPJytj4UI0A"
# Проверка работоспособности сервиса
def check_health():
try:
response = requests.get(f"{BASE_URL}/health")
if response.status_code == 200:
print(f"Сервис календаря работает. Ответ: {response.json()}")
return True
else:
print(f"Сервис календаря доступен, но возвращает ошибку: {response.status_code}")
return False
except requests.exceptions.ConnectionError:
print(f"Ошибка подключения к {BASE_URL}. Убедитесь, что сервис запущен.")
return False
# Тестовые данные для мобильного приложения
def test_create_calendar_entry_mobile():
try:
token = get_token()
print(f"Токен получен: {token[:15]}...")
# Данные в формате мобильного приложения
mobile_data = {
"date": date.today().isoformat(),
"type": "MENSTRUATION",
"flow_intensity": 3, # средний (1-5)
"symptoms": ["CRAMPS", "HEADACHE"], # массив строк
"mood": "NORMAL",
"notes": "Тестовая запись из мобильного приложения"
}
print(f"Отправляемые данные: {json.dumps(mobile_data, indent=2)}")
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {token}"
}
print(f"Отправляем запрос на {BASE_URL}/debug/mobile-entry")
# Используем тестовый эндпоинт без аутентификации
print(f"Отправляем запрос на {BASE_URL}/debug/mobile-entry")
response = requests.post(
f"{BASE_URL}/debug/mobile-entry",
json=mobile_data
)
print(f"Статус ответа: {response.status_code}")
if response.status_code >= 200 and response.status_code < 300:
print(f"Тело успешного ответа: {json.dumps(response.json(), indent=2)}")
return response.json()
else:
print("Ошибка при создании записи")
try:
print(f"Тело ответа с ошибкой: {json.dumps(response.json(), indent=2)}")
except json.JSONDecodeError:
print(f"Тело ответа не является JSON: {response.text}")
return None
except requests.exceptions.RequestException as e:
print(f"Ошибка при выполнении запроса: {e}")
return None
except Exception as e:
print(f"Неожиданная ошибка: {e}")
return None
if __name__ == "__main__":
print("Тестирование создания записи календаря из мобильного приложения...")
if not check_health():
print("Сервис недоступен. Тестирование прекращено.")
sys.exit(1)
result = test_create_calendar_entry_mobile()
if result:
print("Тест успешно завершен!")
else:
print("Тест завершился с ошибкой.")
sys.exit(1)