Files
chat/tests/test_emergency_event_details.py
Andrey K. Choi 3050e084fa
All checks were successful
continuous-integration/drone/push Build is passing
main functions commit
2025-10-19 19:50:00 +09:00

186 lines
6.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
Тест для нового эндпоинта получения детальной информации о событии
"""
import asyncio
import json
import requests
from datetime import datetime
# Конфигурация
API_BASE = "http://localhost:8002" # Emergency service
USER_SERVICE_BASE = "http://localhost:8001" # User service
def authenticate_user(username="testuser", password="testpass"):
"""Получаем JWT токен для авторизации"""
try:
auth_data = {
"username": username,
"password": password
}
response = requests.post(f"{USER_SERVICE_BASE}/auth/login", data=auth_data)
if response.status_code == 200:
token_data = response.json()
return token_data.get("access_token")
else:
print(f"Authentication failed: {response.status_code}")
print("Response:", response.text)
return None
except Exception as e:
print(f"Authentication error: {e}")
return None
def create_test_emergency():
"""Создаем тестовое событие для проверки"""
token = authenticate_user()
if not token:
return None
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
emergency_data = {
"latitude": 55.7558,
"longitude": 37.6176,
"alert_type": "general",
"message": "Test emergency for event details API",
"address": "Test Address, Moscow",
"contact_emergency_services": True,
"notify_emergency_contacts": True
}
try:
response = requests.post(
f"{API_BASE}/api/v1/emergency/alerts",
headers=headers,
json=emergency_data
)
if response.status_code == 201:
alert = response.json()
event_id = alert.get("id")
print(f"✅ Created test emergency event with ID: {event_id}")
return event_id, token
else:
print(f"❌ Failed to create emergency: {response.status_code}")
print("Response:", response.text)
return None, None
except Exception as e:
print(f"❌ Error creating emergency: {e}")
return None, None
def test_event_details(event_id, token):
"""Тестируем получение детальной информации о событии"""
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
print(f"\n🔍 Testing event details for event_id: {event_id}")
try:
# Тестируем полную детальную информацию
response = requests.get(
f"{API_BASE}/api/v1/emergency/events/{event_id}",
headers=headers
)
if response.status_code == 200:
event_details = response.json()
print("✅ Full event details retrieved successfully!")
print(f"Event ID: {event_details.get('id')}")
print(f"Alert Type: {event_details.get('alert_type')}")
print(f"Status: {event_details.get('status')}")
print(f"Message: {event_details.get('message')}")
print(f"Address: {event_details.get('address')}")
print(f"User: {event_details.get('user', {}).get('username')}")
print(f"Responses count: {len(event_details.get('responses', []))}")
print(f"Notifications sent: {event_details.get('notifications_sent', 0)}")
else:
print(f"❌ Failed to get event details: {response.status_code}")
print("Response:", response.text)
except Exception as e:
print(f"❌ Error getting event details: {e}")
try:
# Тестируем краткую информацию
response = requests.get(
f"{API_BASE}/api/v1/emergency/events/{event_id}/brief",
headers=headers
)
if response.status_code == 200:
brief_info = response.json()
print("\n✅ Brief event info retrieved successfully!")
print(f"Event ID: {brief_info.get('id')}")
print(f"Alert Type: {brief_info.get('alert_type')}")
print(f"Status: {brief_info.get('status')}")
else:
print(f"\n❌ Failed to get brief event info: {response.status_code}")
print("Response:", response.text)
except Exception as e:
print(f"\n❌ Error getting brief event info: {e}")
def respond_to_emergency(event_id, token):
"""Добавляем ответ к событию для проверки responses"""
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
response_data = {
"response_type": "help_on_way",
"message": "Test response from API test",
"eta_minutes": 10
}
try:
response = requests.post(
f"{API_BASE}/api/v1/emergency/events/{event_id}/respond",
headers=headers,
json=response_data
)
if response.status_code == 201:
print(f"✅ Added response to event {event_id}")
return True
else:
print(f"❌ Failed to add response: {response.status_code}")
return False
except Exception as e:
print(f"❌ Error adding response: {e}")
return False
def main():
print("🚨 Testing Emergency Event Details API")
print("=" * 50)
# Создаем тестовое событие
event_id, token = create_test_emergency()
if not event_id or not token:
print("❌ Failed to create test emergency. Exiting.")
return
# Добавляем ответ к событию
respond_to_emergency(event_id, token)
# Тестируем получение детальной информации
test_event_details(event_id, token)
print("\n" + "=" * 50)
print("🎯 Test completed!")
print(f"Event ID for manual testing: {event_id}")
if __name__ == "__main__":
main()