Skip to main content
Glama
test_permissions_simple.py‱6.95 kB
#!/usr/bin/env python3 """ 🔐 Test simple du systĂšme de permissions Test basique des fonctionnalitĂ©s de permissions sans serveur externe """ import asyncio import sys import os # Ajouter le chemin pour importer nos modules sys.path.append(os.path.dirname(os.path.abspath(__file__))) from permissions_manager import PermissionsManager, PermissionType from database import setup_database, db_manager from auth_manager import auth_manager, UserCreate async def test_permissions_system(): """Test des fonctionnalitĂ©s de base du systĂšme de permissions""" print("đŸ§Ș Test du systĂšme de permissions MCP\n") try: # 1. Initialiser la base de donnĂ©es print("📂 Initialisation de la base de donnĂ©es...") await setup_database() print("✅ Base de donnĂ©es initialisĂ©e") # 2. CrĂ©er un utilisateur de test print("\nđŸ‘€ CrĂ©ation d'un utilisateur de test...") user_data = UserCreate( username="testuser", email="test@example.com", full_name="Test User", password="TestPass123!" ) user = await auth_manager.create_user(user_data) if user: user_id = user.id print(f"✅ Utilisateur créé: {user.username} (ID: {user_id})") else: print("❌ Échec crĂ©ation utilisateur") return False # 3. Initialiser le gestionnaire de permissions print("\n🔐 Initialisation du gestionnaire de permissions...") permissions_manager = PermissionsManager() print("✅ Gestionnaire de permissions initialisĂ©") # 4. Test permissions par dĂ©faut (aucune permission) print("\n🔍 Test: Permission par dĂ©faut (refusĂ©e)...") has_read = await permissions_manager.check_permission( user_id=user_id, tool_name="homeassistant.get_state", permission_type=PermissionType.READ ) if not has_read: print("✅ Permission correctement refusĂ©e par dĂ©faut") else: print("❌ Permission accordĂ©e Ă  tort") return False # 5. DĂ©finir une permission par dĂ©faut print("\n🔧 Test: DĂ©finition d'une permission par dĂ©faut...") success = await permissions_manager.set_default_permission( tool_name="homeassistant.get_state", can_read=True, can_write=False, can_execute=False ) if success: print("✅ Permission par dĂ©faut dĂ©finie") else: print("❌ Échec dĂ©finition permission par dĂ©faut") return False # 6. VĂ©rifier hĂ©ritage des permissions par dĂ©faut print("\n📋 Test: HĂ©ritage des permissions par dĂ©faut...") has_read = await permissions_manager.has_permission( user_id=user_id, tool_name="homeassistant.get_state", permission_type=PermissionType.READ ) if has_read: print("✅ HĂ©ritage des permissions par dĂ©faut fonctionnel") else: print("❌ HĂ©ritage des permissions par dĂ©faut dĂ©faillant") return False # 7. DĂ©finir une permission spĂ©cifique utilisateur print("\nđŸ‘€ Test: Permission spĂ©cifique utilisateur...") success = await permissions_manager.set_user_permission( user_id=user_id, tool_name="homeassistant.call_service", can_read=False, can_write=True, can_execute=True ) if success: print("✅ Permission utilisateur dĂ©finie") else: print("❌ Échec dĂ©finition permission utilisateur") return False # 8. VĂ©rifier permission utilisateur WRITE print("\n✍ Test: Validation permission WRITE...") has_write = await permissions_manager.has_permission( user_id=user_id, tool_name="homeassistant.call_service", permission_type=PermissionType.WRITE ) if has_write: print("✅ Permission WRITE accordĂ©e") else: print("❌ Permission WRITE refusĂ©e") return False # 9. VĂ©rifier permission utilisateur READ refusĂ©e print("\nđŸ‘ïž Test: Validation permission READ refusĂ©e...") has_read = await permissions_manager.has_permission( user_id=user_id, tool_name="homeassistant.call_service", permission_type=PermissionType.READ ) if not has_read: print("✅ Permission READ correctement refusĂ©e") else: print("❌ Permission READ accordĂ©e Ă  tort") return False # 10. Test cache des permissions print("\nđŸ’Ÿ Test: SystĂšme de cache...") import time start_time = time.time() # PremiĂšre requĂȘte (pas en cache) await permissions_manager.has_permission( user_id=user_id, tool_name="homeassistant.get_state", permission_type=PermissionType.READ ) first_time = time.time() - start_time start_time = time.time() # DeuxiĂšme requĂȘte (en cache) await permissions_manager.has_permission( user_id=user_id, tool_name="homeassistant.get_state", permission_type=PermissionType.READ ) second_time = time.time() - start_time if second_time < first_time: print("✅ SystĂšme de cache fonctionnel") else: print("⚠ Cache possiblement non actif (peut ĂȘtre normal)") # 11. Test rĂ©sumĂ© des permissions print("\n📊 Test: RĂ©sumĂ© des permissions...") user_permissions = await permissions_manager.get_user_permissions(user_id) if len(user_permissions) > 0: print(f"✅ RĂ©sumĂ© obtenu: {len(user_permissions)} permissions") for perm in user_permissions: print(f" 🔧 {perm.tool_name}: R={perm.can_read}, W={perm.can_write}, E={perm.can_execute}") else: print("❌ Aucune permission trouvĂ©e") return False print("\n🎉 Tous les tests de permissions ont rĂ©ussi!") return True except Exception as e: print(f"\nđŸ’„ Erreur lors des tests: {e}") import traceback traceback.print_exc() return False async def main(): """Fonction principale""" success = await test_permissions_system() if success: print("\n✅ SystĂšme de permissions validĂ©!") return 0 else: print("\n❌ Échec des tests de permissions") return 1 if __name__ == "__main__": result = asyncio.run(main()) sys.exit(result)

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