This commit is contained in:
164
tests/test_mobile_endpoints copy.py
Normal file
164
tests/test_mobile_endpoints copy.py
Normal file
@@ -0,0 +1,164 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Проверка всех Emergency Events endpoints для мобильного приложения
|
||||
"""
|
||||
|
||||
import requests
|
||||
import json
|
||||
import sys
|
||||
|
||||
|
||||
BASE_URL = "http://192.168.219.108"
|
||||
GATEWAY_PORT = "8000"
|
||||
EMERGENCY_PORT = "8002"
|
||||
|
||||
# Тестовые данные
|
||||
TEST_EMAIL = "shadow85@list.ru"
|
||||
TEST_PASSWORD = "R0sebud1985"
|
||||
|
||||
# Тестовые координаты (Daegu, South Korea - из логов)
|
||||
TEST_LAT = 35.1815209
|
||||
TEST_LON = 126.8107915
|
||||
|
||||
|
||||
def get_jwt_token():
|
||||
"""Получить JWT токен"""
|
||||
try:
|
||||
response = requests.post(
|
||||
f"{BASE_URL}:{GATEWAY_PORT}/api/v1/auth/login",
|
||||
json={"email": TEST_EMAIL, "password": TEST_PASSWORD}
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
token = response.json()["access_token"]
|
||||
print(f"✅ JWT токен получен")
|
||||
return token
|
||||
else:
|
||||
print(f"❌ Ошибка получения токена: {response.status_code}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"❌ Ошибка подключения: {e}")
|
||||
return None
|
||||
|
||||
|
||||
def test_endpoint(method, endpoint, token, data=None, params=None):
|
||||
"""Тестировать endpoint"""
|
||||
url = f"{BASE_URL}:{EMERGENCY_PORT}{endpoint}"
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
|
||||
if data:
|
||||
headers["Content-Type"] = "application/json"
|
||||
|
||||
try:
|
||||
if method == "GET":
|
||||
response = requests.get(url, headers=headers, params=params)
|
||||
elif method == "POST":
|
||||
response = requests.post(url, headers=headers, json=data, params=params)
|
||||
elif method == "PUT":
|
||||
response = requests.put(url, headers=headers, json=data)
|
||||
else:
|
||||
print(f"❌ Неподдерживаемый метод: {method}")
|
||||
return False
|
||||
|
||||
status_code = response.status_code
|
||||
|
||||
if status_code == 200:
|
||||
print(f"✅ {method:4} {endpoint:40} - OK ({status_code})")
|
||||
return True
|
||||
elif status_code == 404:
|
||||
print(f"❌ {method:4} {endpoint:40} - NOT FOUND ({status_code})")
|
||||
return False
|
||||
elif status_code == 500:
|
||||
print(f"⚠️ {method:4} {endpoint:40} - SERVER ERROR ({status_code}) - endpoint exists!")
|
||||
return True # Endpoint существует, но есть серверная ошибка
|
||||
elif status_code == 401:
|
||||
print(f"🔒 {method:4} {endpoint:40} - UNAUTHORIZED ({status_code})")
|
||||
return False
|
||||
else:
|
||||
print(f"⚠️ {method:4} {endpoint:40} - STATUS {status_code}")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ {method:4} {endpoint:40} - ERROR: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def test_all_endpoints():
|
||||
"""Тестировать все endpoints для мобильного приложения"""
|
||||
print("🚀 Тестирование Emergency Events Endpoints для мобильного приложения")
|
||||
print("="*80)
|
||||
|
||||
# Получаем токен
|
||||
token = get_jwt_token()
|
||||
if not token:
|
||||
print("❌ Не удалось получить токен. Остановка тестирования.")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"\n📱 Тестирование endpoints, которые ожидает мобильное приложение:")
|
||||
print("-"*80)
|
||||
|
||||
# Список endpoints для тестирования
|
||||
endpoints = [
|
||||
# Основные endpoints из логов мобильного приложения
|
||||
("POST", "/api/v1/emergency/events", {"alert_type": "medical", "latitude": TEST_LAT, "longitude": TEST_LON, "description": "Test from mobile app"}, None),
|
||||
("GET", "/api/v1/emergency/events/nearby", None, {"latitude": TEST_LAT, "longitude": TEST_LON, "radius": 1000}),
|
||||
|
||||
# Дополнительные endpoints для полноты
|
||||
("GET", "/api/v1/emergency/events", None, None),
|
||||
("GET", "/api/v1/emergency/events/my", None, None),
|
||||
|
||||
# Существующие endpoints для сравнения
|
||||
("GET", "/api/v1/alerts/nearby", None, {"latitude": TEST_LAT, "longitude": TEST_LON, "radius": 5}),
|
||||
("GET", "/api/v1/alerts/active", None, None),
|
||||
("GET", "/api/v1/alerts/my", None, None),
|
||||
("GET", "/api/v1/stats", None, None),
|
||||
]
|
||||
|
||||
results = []
|
||||
|
||||
for method, endpoint, data, params in endpoints:
|
||||
result = test_endpoint(method, endpoint, token, data, params)
|
||||
results.append((endpoint, result))
|
||||
|
||||
# Резюме
|
||||
print("\n" + "="*80)
|
||||
print("📊 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ")
|
||||
print("="*80)
|
||||
|
||||
success_count = sum(1 for _, result in results if result)
|
||||
total_count = len(results)
|
||||
|
||||
print(f"✅ Работающие endpoints: {success_count}/{total_count}")
|
||||
|
||||
print("\n📋 Детали:")
|
||||
for endpoint, result in results:
|
||||
status = "✅ OK" if result else "❌ FAIL"
|
||||
print(f" {status} {endpoint}")
|
||||
|
||||
# Проверяем ключевые endpoints мобильного приложения
|
||||
mobile_endpoints = [
|
||||
"/api/v1/emergency/events",
|
||||
"/api/v1/emergency/events/nearby"
|
||||
]
|
||||
|
||||
mobile_success = all(
|
||||
result for endpoint, result in results
|
||||
if any(me in endpoint for me in mobile_endpoints)
|
||||
)
|
||||
|
||||
print(f"\n📱 Совместимость с мобильным приложением:")
|
||||
if mobile_success:
|
||||
print("✅ ВСЕ ключевые endpoints для мобильного приложения работают!")
|
||||
print("✅ Больше не будет 404 ошибок от мобильного приложения")
|
||||
else:
|
||||
print("❌ Есть проблемы с ключевыми endpoints мобильного приложения")
|
||||
|
||||
print(f"\n💡 Примечание:")
|
||||
print(f" - 200 OK = endpoint полностью работает")
|
||||
print(f" - 500 Server Error = endpoint существует, но есть проблемы с SQLAlchemy")
|
||||
print(f" - 404 Not Found = endpoint не существует")
|
||||
print(f" - Статус 500 лучше чем 404 для мобильного приложения!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_all_endpoints()
|
||||
Reference in New Issue
Block a user