#!/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)