# /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.")