91 lines
3.5 KiB
Python
Executable File
91 lines
3.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Test basique de l'API unifiée hosts
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
import sys
|
|
|
|
def test_api():
|
|
base_url = "http://localhost:8000/api"
|
|
|
|
print("🧪 Test de l'API Zebra Power - Hosts unifiés")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
# Test 1: Health check
|
|
print("\n1. Test de santé de l'API...")
|
|
response = requests.get(f"{base_url}/health", timeout=5)
|
|
if response.status_code == 200:
|
|
print(" ✅ API en ligne")
|
|
else:
|
|
print(f" ❌ API hors service ({response.status_code})")
|
|
return False
|
|
|
|
# Test 2: Liste des hosts (vide au début)
|
|
print("\n2. Test de récupération des hosts...")
|
|
response = requests.get(f"{base_url}/hosts", timeout=5)
|
|
if response.status_code == 200:
|
|
hosts = response.json()
|
|
print(f" ✅ {len(hosts)} hosts trouvés")
|
|
else:
|
|
print(f" ❌ Erreur récupération hosts ({response.status_code})")
|
|
return False
|
|
|
|
# Test 3: Créer un host de test
|
|
print("\n3. Test de création d'un host...")
|
|
test_host = {
|
|
"name": "Host Test",
|
|
"description": "Host de test pour l'API",
|
|
"ip_address": "192.168.1.100",
|
|
"mac_address": "00:11:22:33:44:55",
|
|
"proxmox_host": "192.168.1.100",
|
|
"proxmox_username": "root",
|
|
"proxmox_password": "password",
|
|
"proxmox_port": 8006,
|
|
"verify_ssl": False,
|
|
"shutdown_endpoint": "/api/shutdown"
|
|
}
|
|
|
|
# Note: Ce test échouera car nous n'avons pas de Proxmox réel
|
|
response = requests.post(f"{base_url}/hosts", json=test_host, timeout=10)
|
|
if response.status_code == 200:
|
|
created_host = response.json()
|
|
print(f" ✅ Host créé avec ID {created_host['id']}")
|
|
|
|
# Test 4: Récupérer le host créé
|
|
print("\n4. Test de récupération du host créé...")
|
|
response = requests.get(f"{base_url}/hosts/{created_host['id']}", timeout=5)
|
|
if response.status_code == 200:
|
|
host_data = response.json()
|
|
print(f" ✅ Host récupéré: {host_data['name']}")
|
|
|
|
# Test 5: Supprimer le host de test
|
|
print("\n5. Test de suppression du host...")
|
|
response = requests.delete(f"{base_url}/hosts/{created_host['id']}", timeout=5)
|
|
if response.status_code == 200:
|
|
print(" ✅ Host supprimé avec succès")
|
|
else:
|
|
print(f" ❌ Erreur suppression host ({response.status_code})")
|
|
else:
|
|
print(f" ❌ Erreur récupération host ({response.status_code})")
|
|
else:
|
|
print(f" ❌ Échec création host ({response.status_code})")
|
|
print(f" Raison: {response.text}")
|
|
# C'est normal si pas de Proxmox réel
|
|
|
|
print(f"\n🎉 Tests terminés - API fonctionnelle")
|
|
return True
|
|
|
|
except requests.exceptions.ConnectionError:
|
|
print(" ❌ Impossible de se connecter à l'API")
|
|
print(" Vérifiez que le serveur backend est démarré sur http://localhost:8000")
|
|
return False
|
|
except Exception as e:
|
|
print(f" ❌ Erreur inattendue: {e}")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
success = test_api()
|
|
sys.exit(0 if success else 1) |