#!/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)