This commit is contained in:
103
test_mobile_endpoint.py
Executable file
103
test_mobile_endpoint.py
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/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)
|
||||
Reference in New Issue
Block a user