# /opt/docker/dev/service_finder/backend/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.")