#!/usr/bin/env python3 import requests import json import sys def test_mobile_calendar_entry_creation(): token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyOSIsImVtYWlsIjoidGVzdDJAZXhhbXBsZS5jb20iLCJleHAiOjE3NTg4NjQwMzV9.Ap4ZD5EtwhLXRtm6KjuFvXMlk6XA-3HtMbaGEu9jX6M" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {token}" } # Используем правильный порт для упрощенного сервиса base_url = "http://localhost:8888" # Тестовые данные для мобильного приложения - нужно преобразовать в стандартный формат, # так как в упрощенном сервисе нет поддержки мобильного формата # Преобразуем формат с "date" -> "entry_date", "type" -> "entry_type" и т.д. mobile_data = { "entry_date": "2025-09-26", "entry_type": "period", # преобразуем MENSTRUATION в period "flow_intensity": "heavy", # преобразуем 5 в heavy "mood": "happy", # преобразуем HAPPY в happy "symptoms": "fatigue", # преобразуем массив в строку "notes": "Тестовая запись из мобильного приложения", "period_symptoms": "", "energy_level": 3, "sleep_hours": 8, "medications": "" } # Тестируем эндпоинт /api/v1/calendar/entries print("\n1. Тестирование /api/v1/calendar/entries (стандартный формат)") url_mobile = f"{base_url}/api/v1/calendar/entries" try: response = requests.post(url_mobile, headers=headers, json=mobile_data) print(f"Статус ответа: {response.status_code}") print(f"Текст ответа: {response.text}") if response.status_code == 201: print("✅ Тест успешно пройден! Запись календаря создана через /api/v1/calendar/entry") mobile_success = True else: print(f"❌ Тест не пройден. Код ответа: {response.status_code}") mobile_success = False except Exception as e: print(f"❌ Ошибка при выполнении запроса: {str(e)}") mobile_success = False # Тестируем с другими данными в стандартном формате print("\n2. Тестирование /api/v1/calendar/entries с другими данными") standard_data = { "entry_date": "2025-09-30", "entry_type": "period", "flow_intensity": "medium", "notes": "Тестовая запись в стандартном формате", "period_symptoms": "", "energy_level": 2, "sleep_hours": 7, "medications": "", "symptoms": "headache" } url_standard = f"{base_url}/api/v1/calendar/entries" try: response = requests.post(url_standard, headers=headers, json=standard_data) print(f"Статус ответа: {response.status_code}") print(f"Текст ответа: {response.text}") if response.status_code == 201: print("✅ Тест успешно пройден! Запись календаря создана через /api/v1/entries") standard_success = True else: print(f"❌ Тест не пройден. Код ответа: {response.status_code}") standard_success = False except Exception as e: print(f"❌ Ошибка при выполнении запроса: {str(e)}") standard_success = False # Проверяем список записей print("\n3. Тестирование GET /api/v1/calendar/entries") url_entry = f"{base_url}/api/v1/calendar/entries" try: response = requests.get(url_entry, headers=headers) print(f"Статус ответа: {response.status_code}") if response.status_code == 200: entries = response.json() print(f"Количество записей: {len(entries)}") for i, entry in enumerate(entries): print(f"Запись {i+1}: ID={entry['id']}, Дата={entry['entry_date']}, Тип={entry['entry_type']}") print("✅ Тест успешно пройден! Получен список записей календаря") entry_success = True else: print(f"❌ Тест не пройден. Код ответа: {response.status_code}") print(f"Текст ответа: {response.text}") entry_success = False except Exception as e: print(f"❌ Ошибка при выполнении запроса: {str(e)}") entry_success = False # Суммарный результат всех тестов if mobile_success and standard_success and entry_success: print("\n✅ Все тесты успешно пройдены!") return 0 else: print("\n❌ Некоторые тесты не пройдены.") return 1 if __name__ == "__main__": sys.exit(test_mobile_calendar_entry_creation())