Files
service-finder/backend/app/tests_internal/diagnostics/check_api.py

53 lines
2.2 KiB
Python
Executable File

# /app/tests_internal/diagnostics/check_api.py
import requests
import json
# THOUGHT PROCESS:
# 1. Az API konténeren belül futva a localhost:8000 a célpont.
# 2. Csak olyan végpontokat tesztelünk, amik szerepelnek a v1/api.py-ben.
# 3. A 401/405 kódokat elfogadjuk 'OK'-nak, mert azt jelentik, hogy a szerver
# látja az útvonalat, csak hitelesítést vagy más HTTP metódust vár.
# 4. A 404 azt jelenti, hogy a router nincs jól regisztrálva.
# 5. A 500 azt jelenti, hogy a kód elszállt (pl. AttributeError a main.py-ban).
base_url = 'http://localhost:8000'
# A valós, api.py-ben definiált útvonalak:
tests = [
('Health Check', '/health', 'GET'),
('Auth Login (Entry)', '/api/v1/auth/login', 'POST'), # Létezik
('Catalog Makes', '/api/v1/catalog/makes', 'GET'), # Létezik
('Service Hunt', '/api/v1/services/hunt', 'POST'), # Létezik
('Admin Health', '/api/v1/admin/health-monitor', 'GET'), # Létezik
('My Organizations', '/api/v1/organizations/my', 'GET') # Létezik
]
print('\n--- 🧪 API VÉGPONT DIAGNOSZTIKA ---')
print(f"{'Végpont neve':20} | {'Útvonal':25} | {'Állapot'}")
print("-" * 65)
for name, endpoint, method in tests:
try:
url = f"{base_url}{endpoint}"
# A POST hívásokhoz üres adatot küldünk, hogy ne 422-t kapjunk a hiányzó body miatt
resp = requests.request(method, url, timeout=5, json={})
# Logika:
# 200: Tökéletes
# 401: Él, de login kell (JÓ)
# 405: Él, de pl. GET helyett POST kell (JÓ - az útvonal létezik)
# 422: Él, de hiányoznak a küldött adatok (JÓ - a validáció működik)
if resp.status_code in [200, 401, 405, 422]:
status_msg = f"✅ OK ({resp.status_code})"
elif resp.status_code == 404:
status_msg = f"❌ HIÁNYZIK (404)"
else:
status_msg = f"🔥 SZERVER HIBA ({resp.status_code})"
print(f"{name:20} | {endpoint:25} | {status_msg}")
except Exception as e:
print(f"{name:20} | {endpoint:25} | 🔌 ELÉRHETETLEN")
print("\n💡 Megjegyzés: Ha a Health Check továbbra is 500, az a main.py-ban lévő elírás miatt van.")