All checks were successful
continuous-integration/drone/push Build is passing
103 lines
4.4 KiB
Python
Executable File
103 lines
4.4 KiB
Python
Executable File
#!/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) |