Skip to main content
Glama
test_complete.py8.83 kB
#!/usr/bin/env python3 """ Script de test complet pour l'interface web du dashboard MCP Teste toutes les fonctionnalités avancées """ import requests import time import subprocess import sys import os import json def start_server_in_background(): """Lance le serveur en arrière-plan""" try: print('🚀 Démarrage du serveur en arrière-plan...') proc = subprocess.Popen([ sys.executable, 'bridge_server.py' ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=os.getcwd()) # Attendre que le serveur démarre time.sleep(8) return proc except Exception as e: print(f'❌ Erreur démarrage serveur: {e}') return None def test_complete_interface(): """Test complet de l'interface web""" base_url = "http://localhost:8080" print('🚀 TEST COMPLET - Interface Web Dashboard MCP') print('=' * 60) # Démarrer le serveur server_proc = start_server_in_background() if not server_proc: print('❌ Impossible de démarrer le serveur') return False try: # Test 1: Health Check print('\n🩺 SECTION 1: SANTÉ DU SERVEUR') print('-' * 40) response = requests.get(f'{base_url}/health', timeout=5) print(f' ✅ Health Check: {response.status_code}') if response.status_code == 200: health_data = response.json() print(f' 📊 Statut: {health_data.get("status")}') print(f' ⏱️ Uptime: {health_data.get("uptime", 0)} secondes') # Test 2: Pages Web print('\n🌐 SECTION 2: PAGES WEB') print('-' * 40) pages = { '/': 'Page d\'accueil', '/login': 'Page de connexion', '/dashboard': 'Dashboard principal', '/permissions': 'Gestion des permissions', '/config': 'Configuration', '/tools': 'Outils MCP', '/logs': 'Logs système', '/admin': 'Administration' } for path, name in pages.items(): response = requests.get(f'{base_url}{path}', timeout=5) if response.status_code == 200: print(f' ✅ {name}: {response.status_code} ({len(response.text)} chars)') else: print(f' ❌ {name}: {response.status_code}') # Test 3: Fichiers statiques print('\n📁 SECTION 3: FICHIERS STATIQUES') print('-' * 40) static_files = { '/static/css/main.css': 'Feuille de style CSS', '/static/js/dashboard.js': 'JavaScript principal' } for path, name in static_files.items(): response = requests.get(f'{base_url}{path}', timeout=5) if response.status_code == 200: size_kb = len(response.text) / 1024 print(f' ✅ {name}: {response.status_code} ({size_kb:.1f}KB)') else: print(f' ❌ {name}: {response.status_code}') # Test 4: API Endpoints print('\n🔗 SECTION 4: API ENDPOINTS') print('-' * 40) api_endpoints = { '/api/metrics': 'Métriques du dashboard', '/api/config': 'Configuration système', '/api/tools': 'Outils MCP', '/api/logs': 'Logs système', '/api/tools/statistics': 'Statistiques des outils' } for path, name in api_endpoints.items(): try: response = requests.get(f'{base_url}{path}', timeout=5) if response.status_code == 200: data = response.json() print(f' ✅ {name}: {response.status_code} (JSON valide)') # Afficher quelques détails spécifiques if path == '/api/metrics': print(f' 📊 Connexions actives: {data.get("active_connections", 0)}') print(f' 🔧 Outils MCP: {data.get("total_tools", 0)}') elif path == '/api/tools': tools = data.get('tools', []) print(f' 🔧 Nombre d\'outils: {len(tools)}') elif path == '/api/logs': logs = data.get('logs', []) pagination = data.get('pagination', {}) print(f' 📝 Logs retournés: {len(logs)}') print(f' 📄 Total logs: {pagination.get("total", 0)}') else: print(f' ❌ {name}: {response.status_code}') except json.JSONDecodeError: print(f' ⚠️ {name}: Réponse non-JSON') except Exception as e: print(f' ❌ {name}: Erreur - {e}') # Test 5: Templates HTML print('\n📄 SECTION 5: TEMPLATES HTML') print('-' * 40) templates = { 'dashboard-overview': 'Vue d\'ensemble du dashboard', 'permissions': 'Gestion des permissions', 'config': 'Configuration système', 'tools': 'Outils MCP', 'logs': 'Logs système', 'admin': 'Administration' } for template, name in templates.items(): response = requests.get(f'{base_url}/api/templates/{template}', timeout=5) if response.status_code == 200: size_kb = len(response.text) / 1024 print(f' ✅ {name}: {response.status_code} ({size_kb:.1f}KB)') else: print(f' ❌ {name}: {response.status_code}') # Test 6: Tests de fonctionnalités avancées print('\n🧪 SECTION 6: TESTS AVANCÉS') print('-' * 40) # Test pagination des logs response = requests.get(f'{base_url}/api/logs?page=1&limit=10', timeout=5) if response.status_code == 200: data = response.json() print(f' ✅ Pagination logs: {len(data.get("logs", []))} logs sur page 1') # Test filtrage des logs response = requests.get(f'{base_url}/api/logs?level=ERROR&limit=5', timeout=5) if response.status_code == 200: data = response.json() print(f' ✅ Filtrage logs (ERROR): {len(data.get("logs", []))} logs') # Test export logs CSV response = requests.get(f'{base_url}/api/logs/export?format=csv', timeout=5) if response.status_code == 200: print(f' ✅ Export CSV: {len(response.text)} caractères') # Test configuration Home Assistant test_config = { "type": "homeassistant", "url": "http://localhost:8123", "token": "test_token" } response = requests.post(f'{base_url}/api/config/test', json=test_config, timeout=5) if response.status_code == 200: result = response.json() print(f' ✅ Test config HA: {result.get("status")}') # Test des outils MCP response = requests.get(f'{base_url}/api/tools/statistics', timeout=5) if response.status_code == 200: stats = response.json() print(f' ✅ Stats outils: {stats.get("total_tools", 0)} outils, {stats.get("success_rate", 0)}% succès') print('\n🎉 TOUS LES TESTS TERMINÉS AVEC SUCCÈS!') return True except requests.exceptions.ConnectionError: print('\n❌ Erreur: Le serveur n\'est pas accessible') return False except Exception as e: print(f'\n❌ Erreur inattendue: {e}') return False finally: # Arrêter le serveur if server_proc: print('\n🛑 Arrêt du serveur...') server_proc.terminate() try: server_proc.wait(timeout=5) except subprocess.TimeoutExpired: server_proc.kill() def main(): """Point d'entrée principal""" print('🔬 SCRIPT DE TEST COMPLET - Dashboard MCP') print('📋 Test de toutes les fonctionnalités de l\'interface web') print('=' * 70) success = test_complete_interface() if success: print('\n' + '='*70) print('✅ RÉSULTAT: TOUS LES TESTS SONT PASSÉS!') print('🎯 L\'interface web est entièrement fonctionnelle') print('🌐 Prêt pour utilisation en production') print('='*70) return 0 else: print('\n' + '='*70) print('❌ RÉSULTAT: CERTAINS TESTS ONT ÉCHOUÉ') print('🔧 Vérifiez les erreurs ci-dessus') print('='*70) return 1 if __name__ == "__main__": exit_code = main() sys.exit(exit_code)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jonathan97480/McpHomeAssistant'

If you have feedback or need assistance with the MCP directory API, please join our Discord server