Files
zebra-power/backend/test_api.py

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)