#!/usr/bin/env python import json import requests from datetime import date # Используем сохраненный токен авторизации with open('auth_token.txt', 'r') as f: TOKEN = f.read().strip() # Базовый URL для тестирования BASE_URL = "http://localhost:8004" HEADERS = { "Content-Type": "application/json", "Authorization": f"Bearer {TOKEN}" } # Функция для тестирования мобильного эндпоинта def test_mobile_endpoint(): url = f"{BASE_URL}/api/v1/calendar/entries/mobile" # Данные для мобильного запроса data = { "date": date.today().isoformat(), "type": "MENSTRUATION", "flow_intensity": 3, "symptoms": ["CRAMPS", "HEADACHE"], "mood": "NORMAL", "notes": "Тест мобильного API" } print("\n1. Тестирование создания записи через мобильный API...") print(f"POST {url}") print(f"Данные: {json.dumps(data, ensure_ascii=False)}") try: response = requests.post(url, json=data, headers=HEADERS) if response.status_code == 201: print(f"✅ Успешно! Статус: {response.status_code}") print(f"Ответ: {json.dumps(response.json(), ensure_ascii=False, indent=2)}") # Теперь проверим, что мы можем получить запись entry_id = response.json().get("id") return entry_id else: print(f"❌ Ошибка! Статус: {response.status_code}") print(f"Ответ: {response.text}") return None except Exception as e: print(f"❌ Исключение: {str(e)}") return None # Функция для проверки получения всех записей def test_get_entries(entry_id=None): url = f"{BASE_URL}/api/v1/calendar/entries" print("\n2. Проверка получения записей календаря...") print(f"GET {url}") try: response = requests.get(url, headers=HEADERS) if response.status_code == 200: print(f"✅ Успешно! Статус: {response.status_code}") entries = response.json() print(f"Получено записей: {len(entries)}") # Если у нас есть ID записи, которую мы создали ранее, проверим ее наличие if entry_id: found = False for entry in entries: if entry.get("id") == entry_id: found = True print(f"✅ Созданная запись найдена в списке (ID: {entry_id})") break if not found: print(f"❌ Созданная запись не найдена в списке (ID: {entry_id})") else: print(f"❌ Ошибка! Статус: {response.status_code}") print(f"Ответ: {response.text}") except Exception as e: print(f"❌ Исключение: {str(e)}") # Тестирование отладочного эндпоинта (без аутентификации) def test_debug_endpoint(): url = f"{BASE_URL}/debug/mobile-entry" # Данные для мобильного запроса data = { "date": date.today().isoformat(), "type": "MENSTRUATION", "flow_intensity": 3, "symptoms": ["CRAMPS", "HEADACHE"], "mood": "NORMAL", "notes": "Тест отладочного API" } print("\n3. Тестирование отладочного эндпоинта...") print(f"POST {url}") print(f"Данные: {json.dumps(data, ensure_ascii=False)}") try: response = requests.post(url, json=data) if response.status_code == 200: print(f"✅ Успешно! Статус: {response.status_code}") print(f"Ответ: {json.dumps(response.json(), ensure_ascii=False, indent=2)}") else: print(f"❌ Ошибка! Статус: {response.status_code}") print(f"Ответ: {response.text}") except Exception as e: print(f"❌ Исключение: {str(e)}") if __name__ == "__main__": print("=== Тестирование мобильного API календарного сервиса ===") entry_id = test_mobile_endpoint() test_get_entries(entry_id) test_debug_endpoint() print("\nТестирование завершено!")