Initial commit
This commit is contained in:
217
test_whitelist_integration.py
Normal file
217
test_whitelist_integration.py
Normal file
@@ -0,0 +1,217 @@
|
||||
"""
|
||||
Test d'intégration du WhitelistManager avec l'Orchestrateur
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Ajouter le répertoire geniusia2 au path
|
||||
sys.path.insert(0, str(Path(__file__).parent / "geniusia2"))
|
||||
|
||||
from core.whitelist_manager import WhitelistManager
|
||||
from core.logger import Logger
|
||||
from core.config import ensure_directories
|
||||
|
||||
def test_whitelist_manager_integration():
|
||||
"""Test d'intégration du WhitelistManager"""
|
||||
print("Test d'intégration WhitelistManager")
|
||||
print("=" * 50)
|
||||
|
||||
# S'assurer que les répertoires existent
|
||||
ensure_directories()
|
||||
|
||||
# Test 1: Créer un WhitelistManager
|
||||
print("\n1. Création du WhitelistManager:")
|
||||
logger = Logger()
|
||||
whitelist_manager = WhitelistManager(logger=logger, require_admin_confirmation=False)
|
||||
print(f" ✓ WhitelistManager créé")
|
||||
print(f" - Chemin: {whitelist_manager.whitelist_path}")
|
||||
print(f" - Taille initiale: {len(whitelist_manager.get_whitelist())}")
|
||||
|
||||
# Test 2: Ajouter des fenêtres à la liste blanche
|
||||
print("\n2. Ajout de fenêtres à la liste blanche:")
|
||||
test_windows = [
|
||||
"Dolibarr*",
|
||||
"Firefox*",
|
||||
"Visual Studio Code",
|
||||
"*Terminal"
|
||||
]
|
||||
|
||||
for window in test_windows:
|
||||
success = whitelist_manager.add_to_whitelist(window, admin_confirmed=True)
|
||||
status = "✓" if success else "✗"
|
||||
print(f" {status} Ajouté: {window}")
|
||||
|
||||
# Test 3: Vérifier is_window_allowed
|
||||
print("\n3. Test de vérification des fenêtres:")
|
||||
test_cases = [
|
||||
("Dolibarr - Facturation", True),
|
||||
("Firefox - Mozilla Firefox", True),
|
||||
("Visual Studio Code", True),
|
||||
("GNOME Terminal", True),
|
||||
("Unknown Application", False),
|
||||
("Notepad", False)
|
||||
]
|
||||
|
||||
for window, expected in test_cases:
|
||||
allowed = whitelist_manager.is_window_allowed(window)
|
||||
status = "✓" if allowed == expected else "✗"
|
||||
result = "Autorisé" if allowed else "Bloqué"
|
||||
print(f" {status} {result}: {window}")
|
||||
|
||||
# Test 4: Statistiques
|
||||
print("\n4. Statistiques de la liste blanche:")
|
||||
stats = whitelist_manager.get_statistics()
|
||||
print(f" ✓ Total entrées: {stats['total_entries']}")
|
||||
print(f" ✓ Avec wildcards: {stats['entries_with_wildcards']}")
|
||||
print(f" ✓ Exactes: {stats['entries_exact']}")
|
||||
|
||||
# Test 5: Métadonnées d'une entrée
|
||||
print("\n5. Métadonnées d'une entrée:")
|
||||
info = whitelist_manager.get_entry_info("Dolibarr*")
|
||||
if info:
|
||||
print(f" ✓ Informations pour 'Dolibarr*':")
|
||||
print(f" - Ajouté le: {info.get('added_at')}")
|
||||
print(f" - Ajouté par: {info.get('added_by')}")
|
||||
print(f" - Confirmation admin: {info.get('admin_confirmed')}")
|
||||
|
||||
# Test 6: Suppression d'une entrée
|
||||
print("\n6. Suppression d'une entrée:")
|
||||
removed = whitelist_manager.remove_from_whitelist("Firefox*")
|
||||
print(f" ✓ Supprimé 'Firefox*': {removed}")
|
||||
print(f" - Nouvelle taille: {len(whitelist_manager.get_whitelist())}")
|
||||
|
||||
# Test 7: Vérifier que Firefox n'est plus autorisé
|
||||
print("\n7. Vérification après suppression:")
|
||||
allowed = whitelist_manager.is_window_allowed("Firefox - Mozilla")
|
||||
status = "✓" if not allowed else "✗"
|
||||
print(f" {status} Firefox maintenant bloqué: {not allowed}")
|
||||
|
||||
# Test 8: Export de la liste blanche
|
||||
print("\n8. Export de la liste blanche:")
|
||||
export_path = "whitelist_export_test.json"
|
||||
success = whitelist_manager.export_whitelist(export_path)
|
||||
print(f" ✓ Exporté: {success}")
|
||||
|
||||
# Nettoyer le fichier d'export
|
||||
import os
|
||||
if os.path.exists(export_path):
|
||||
os.remove(export_path)
|
||||
print(f" ✓ Fichier d'export nettoyé")
|
||||
|
||||
print("\n✓ Tous les tests d'intégration réussis!")
|
||||
return True
|
||||
|
||||
|
||||
def test_orchestrator_whitelist_integration():
|
||||
"""Test de l'intégration avec l'Orchestrateur"""
|
||||
print("\n\nTest d'intégration avec l'Orchestrateur")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
from core.orchestrator import Orchestrator
|
||||
from core.learning_manager import LearningManager
|
||||
from core.embeddings_manager import EmbeddingsManager
|
||||
from core.utils.vision_utils import VisionUtils
|
||||
from core.llm_manager import LLMManager
|
||||
from core.logger import Logger
|
||||
from core.config import get_config
|
||||
|
||||
# Initialiser les composants
|
||||
print("\n1. Initialisation des composants:")
|
||||
logger = Logger()
|
||||
embeddings_manager = EmbeddingsManager()
|
||||
learning_manager = LearningManager(embeddings_manager, logger, get_config())
|
||||
vision_utils = VisionUtils()
|
||||
llm_manager = LLMManager(logger=logger, fallback_to_vision=True)
|
||||
whitelist_manager = WhitelistManager(logger=logger, require_admin_confirmation=False)
|
||||
|
||||
print(" ✓ Composants initialisés")
|
||||
|
||||
# Ajouter des fenêtres à la liste blanche
|
||||
print("\n2. Configuration de la liste blanche:")
|
||||
whitelist_manager.add_to_whitelist("Dolibarr*", admin_confirmed=True)
|
||||
whitelist_manager.add_to_whitelist("Firefox*", admin_confirmed=True)
|
||||
print(f" ✓ Liste blanche configurée ({len(whitelist_manager.get_whitelist())} entrées)")
|
||||
|
||||
# Créer l'orchestrateur avec le WhitelistManager
|
||||
print("\n3. Création de l'orchestrateur:")
|
||||
orchestrator = Orchestrator(
|
||||
learning_manager=learning_manager,
|
||||
vision_utils=vision_utils,
|
||||
llm_manager=llm_manager,
|
||||
logger=logger,
|
||||
gui=None,
|
||||
whitelist_manager=whitelist_manager
|
||||
)
|
||||
print(" ✓ Orchestrateur créé avec WhitelistManager")
|
||||
|
||||
# Test de vérification via l'orchestrateur
|
||||
print("\n4. Test de vérification via l'orchestrateur:")
|
||||
test_cases = [
|
||||
("Dolibarr - Facturation", True),
|
||||
("Firefox - Mozilla", True),
|
||||
("Unknown Application", False)
|
||||
]
|
||||
|
||||
for window, expected in test_cases:
|
||||
allowed = orchestrator._check_whitelist(window)
|
||||
status = "✓" if allowed == expected else "✗"
|
||||
result = "Autorisé" if allowed else "Bloqué"
|
||||
print(f" {status} {result}: {window}")
|
||||
|
||||
# Test des méthodes de l'orchestrateur
|
||||
print("\n5. Test des méthodes de l'orchestrateur:")
|
||||
|
||||
# Ajouter via l'orchestrateur
|
||||
success = orchestrator.add_to_whitelist("Visual Studio Code", admin_confirmed=True)
|
||||
print(f" ✓ Ajout via orchestrateur: {success}")
|
||||
|
||||
# Obtenir la liste blanche
|
||||
whitelist = orchestrator.get_whitelist()
|
||||
print(f" ✓ Liste blanche obtenue: {len(whitelist)} entrées")
|
||||
|
||||
# Supprimer via l'orchestrateur
|
||||
success = orchestrator.remove_from_whitelist("Visual Studio Code")
|
||||
print(f" ✓ Suppression via orchestrateur: {success}")
|
||||
|
||||
# Vérifier le statut
|
||||
print("\n6. Statut de l'orchestrateur:")
|
||||
status = orchestrator.get_status()
|
||||
print(f" ✓ Whitelist size: {status['whitelist_size']}")
|
||||
print(f" ✓ Enforce whitelist: {status['enforce_whitelist']}")
|
||||
|
||||
print("\n✓ Tous les tests d'intégration avec l'orchestrateur réussis!")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n✗ Erreur lors du test d'intégration: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
# Test 1: WhitelistManager standalone
|
||||
success1 = test_whitelist_manager_integration()
|
||||
|
||||
# Test 2: Intégration avec l'orchestrateur
|
||||
success2 = test_orchestrator_whitelist_integration()
|
||||
|
||||
if success1 and success2:
|
||||
print("\n" + "=" * 50)
|
||||
print("✓ TOUS LES TESTS D'INTÉGRATION RÉUSSIS!")
|
||||
print("=" * 50)
|
||||
sys.exit(0)
|
||||
else:
|
||||
print("\n" + "=" * 50)
|
||||
print("✗ CERTAINS TESTS ONT ÉCHOUÉ")
|
||||
print("=" * 50)
|
||||
sys.exit(1)
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n✗ Erreur fatale: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user