# 🧪 Environnement de test Web Sentinel

Environnement de test complet et isolé pour Web Sentinel permettant de tester toutes les fonctionnalités sans polluer l'application principale.

## 📁 Structure

```
docs/legacy/sysop_panel_prototype/
├── README.md                 # Ce fichier
├── test_config.json         # Configuration principale des tests
├── accounts.json            # Comptes de test configurés
├── test_accounts.py         # Gestionnaire de comptes de test (482 lignes)
├── generate_test_license.py # Générateur de licences de test (280 lignes)
├── test_scenarios.py        # Scénarios de test automatisés (370 lignes)
├── config_manager.py        # Gestionnaire de configuration (310 lignes)
├── database_setup.py        # Setup base de données de test (420 lignes)
├── metrics_simulator.py     # Simulateur métriques temps réel (520 lignes)
├── config_generator.py      # Générateur configs complètes (680 lignes)
├── test_orchestrator.py     # Orchestrateur tests complet (750 lignes)
├── config/                  # Configurations isolées
├── licenses/               # Licences de test générées
├── logs/                   # Logs des tests
├── metrics/                # Métriques et snapshots
├── reports/                # Rapports de tests
├── nginx/                  # Configuration Nginx test
└── docker-compose.yml      # Environnement Docker isolé
```

## 🎯 Objectifs

1. **Isolation complète** : Tests sans impact sur l'application principale
2. **Gestion de comptes** : Manipulation des comptes test sans hardcoding
3. **Génération de licences** : Création de licences valides pour tous les scénarios
4. **Automatisation** : Scénarios de test complets et répétables
5. **Configuration centralisée** : Tous les paramètres dans des fichiers dédiés
6. **Base de données de test** : Environnement MySQL isolé avec données de test
7. **Métriques temps réel** : Simulation de monitoring et dashboards
8. **Orchestration complète** : Tests unitaires, intégration, performance
9. **Environnement Docker** : Infrastructure complète avec sites de test

## 🚀 Démarrage rapide

### Configuration initiale

```bash
cd docs/legacy/sysop_panel_prototype/

# Générer toutes les configurations
python config_generator.py --all

# Setup base de données de test
python database_setup.py --setup

# Voir les comptes de test disponibles
python test_accounts.py --list
```

### Environnement Docker

```bash
# Démarrer l'environnement complet
docker-compose up -d

# Vérifier les services
docker-compose ps

# Sites de test disponibles :
# - http://localhost:8082 (secure.test.local)
# - http://localhost:8082 (vulnerable.test.local) 
# - http://localhost:8082 (mixed.test.local)
```

### 🎛️ Panneau d'administration intégré (nouvelle version)

```bash
cd docs/legacy/sysop_panel_prototype/
python admin_panel.py
```

Fonctionnalités principales :

- **Licence embarquée** : affichage du tier courant, import direct d'un nouveau fichier `.lic`, tests de permissions.
- **Utilisateurs réels** : consultation/édition des comptes stockés dans `~/.web-sentinel/auth.db` (création rapide, changement de tier, mise à jour de l'expiration).
- **Statistiques** : synthèse par tier, détecte les licences arrivant à expiration et exploite `history.json` pour donner une vision des scans réalisés.

> L'environnement de test historique (`test_accounts.py`, `metrics_simulator.py`, etc.) reste disponible pour les scénarios avancés.

### Base de données de test

```bash
# Setup complet environnement BDD
python database_setup.py --setup

# Voir statistiques utilisateur
python database_setup.py --stats bruno@taaazzz-prog.fr

# Logger une action de test
python database_setup.py --log test_type bruno@taaazzz-prog.fr action "détails"

# Nettoyer données de test
python database_setup.py --cleanup
```

### Génération de licences

```bash
# Générer une licence PRO pour bruno
python generate_test_license.py --user bruno@taaazzz-prog.fr --tier PRO

# Générer licence avec expiration spécifique
python generate_test_license.py --user bruno@taaazzz-prog.fr --tier ENTERPRISE --expires "2024-06-30"

# Valider une licence existante
python generate_test_license.py --validate licenses/bruno_taaazzz-prog_fr_PRO.lic

# Créer toutes les licences d'un scénario
python generate_test_license.py --scenario premium_upgrade
```

### Métriques et monitoring

```bash
# Démarrer simulation temps réel
python metrics_simulator.py --start

# Simulation limitée (30 minutes)
python metrics_simulator.py --start --duration 30

# Obtenir données dashboard actuelles
python metrics_simulator.py --dashboard

# Créer snapshot métrique
python metrics_simulator.py --snapshot
```

### Tests orchestrés

```bash
# Lancer tous les tests
python test_orchestrator.py --all

# Tests unitaires seulement
python test_orchestrator.py --suite unit

# Tests d'intégration
python test_orchestrator.py --suite integration

# Tests de licence complets
python test_orchestrator.py --suite license

# Lister suites disponibles
python test_orchestrator.py --list
```

### Scénarios de test

```bash
# Lancer tous les scénarios
python test_scenarios.py --run-all

# Scénario spécifique d'expiration
python test_scenarios.py --scenario license_expiry

# Test de montée en gamme
python test_scenarios.py --scenario premium_upgrade

# Test des fonctionnalités Enterprise
python test_scenarios.py --scenario enterprise_features
```

## 🔧 Configuration

### Fichiers de configuration

- `test_config.json` : Configuration principale avec tous les tiers
- `accounts.json` : Comptes de test pré-configurés
- `web_sentinel_config.json` : Configuration complète application
- `license_tiers.json` : Définition détaillée des tiers
- `scan_modules.json` : Configuration modules de scan
- `payloads.json` : Payloads de test pour injection
- `docker-compose.yml` : Infrastructure Docker complète

### Comptes de test préconfigurés

1. **bruno@taaazzz-prog.fr** (PRO)
   - Compte principal de développement
   - 25 domaines utilisés / 100 autorisés
   - Statut actif, licence valide jusqu'en 2025

2. **test@example.com** (FREE)
   - Compte de test basique
   - Limitations FREE activées

3. **enterprise@corp.com** (ENTERPRISE)
   - Test des fonctionnalités avancées
   - Toutes les fonctionnalités activées

4. **admin@gov.org** (GOVERNMENT)
   - Test du tier gouvernemental
   - Compliance spécialisée

### Infrastructure Docker

Services inclus :
- **MySQL 8.0** : Base de données test (port 3307)
- **Redis 7** : Cache test (port 6380)
- **OWASP ZAP** : Tests sécurité (port 8081)
- **Nginx** : Sites de test (port 8082)

Sites de test configurés :
- **secure.test.local** : Site avec bonnes pratiques sécurité
- **vulnerable.test.local** : Site volontairement vulnérable
- **mixed.test.local** : Site avec sécurité partielle

## 📊 Outils de test

### 1. Gestionnaire de comptes (`test_accounts.py`)

Fonctionnalités principales :
- Affichage des informations de compte
- Modification des tiers et limitations
- Gestion des dates d'expiration
- Suivi de l'utilisation des domaines
- Interface CLI complète

### 2. Générateur de licences (`generate_test_license.py`)

Fonctionnalités principales :
- Génération de licences valides pour tous les tiers
- Intégration avec `CryptoManager` et `LicenseGenerator`
- Validation des licences générées
- Support des scénarios prédéfinis
- Sauvegarde automatique

### 3. Setup base de données (`database_setup.py`)

Fonctionnalités principales :
- Création automatique base de données test
- Tables : users, subscriptions, usage_stats, licenses, test_logs
- Insertion données de test
- Gestion logs d'actions
- Statistiques utilisateurs
- Nettoyage données test

### 4. Simulateur métriques (`metrics_simulator.py`)

Fonctionnalités principales :
- Simulation scans temps réel
- Métriques système (CPU, mémoire, utilisateurs actifs)
- Génération findings aléatoires
- Snapshots périodiques
- Données dashboard
- Simulation heures de pointe

### 5. Générateur configuration (`config_generator.py`)

Fonctionnalités principales :
- Configuration complète Web Sentinel
- Définition détaillée des 6 tiers
- Configuration modules de scan
- Payloads de test sécurisé
- Docker-compose complet
- Sites de test Nginx

### 6. Orchestrateur tests (`test_orchestrator.py`)

Fonctionnalités principales :
- Tests unitaires automatisés
- Tests d'intégration
- Tests de licence complets
- Validation sécurité
- Rapports détaillés
- Gestion dépendances entre suites

### 7. Scénarios de test (`test_scenarios.py`)

Scénarios disponibles :
- `license_expiry` : Test d'expiration de licence
- `premium_upgrade` : Montée de FREE vers PRO
- `enterprise_features` : Test fonctionnalités avancées
- `government_airgap` : Test déploiement isolé
- `finance_compliance` : Test conformité financière
- `medical_hipaa` : Test conformité médicale

### 8. Gestionnaire de configuration (`config_manager.py`)

Fonctionnalités principales :
- Initialisation de l'environnement
- Validation des configurations
- Sauvegarde et restauration
- Migration entre versions

## 🔍 Intégration avec Web Sentinel

### Import des modules existants

```python
# Import du système de licence
from web_sentinel.license.crypto_manager import CryptoManager
from web_sentinel.license.license_generator import LicenseGenerator

# Utilisation directe sans modification
crypto = CryptoManager()
generator = LicenseGenerator()
```

### Pas de pollution du code principal

- Aucune modification des fichiers sources
- Configuration isolée dans `docs/legacy/sysop_panel_prototype/`
- Tests utilisant les APIs publiques
- Réversibilité complète

## 📈 Métriques et logging

### Logging automatique

Tous les outils loggent automatiquement :
- Actions sur les comptes
- Génération de licences
- Exécution des scénarios
- Erreurs et exceptions
- Métriques système
- Actions base de données

### Fichiers de log

- `logs/accounts_YYYYMMDD.log` : Actions sur comptes
- `logs/licenses_YYYYMMDD.log` : Génération licences
- `logs/scenarios_YYYYMMDD.log` : Exécution scénarios
- `logs/web_sentinel_test.log` : Logs application
- `metrics/metrics_snapshot_*.json` : Snapshots métriques

### Base de données de logs

Table `test_logs` pour traçabilité complète :
- Type de test
- Email utilisateur
- Action effectuée
- Détails et résultats
- Timestamp automatique

## 🎭 Cas d'usage

### Développement

```bash
# Préparer environnement pour nouvelle fonctionnalité
docker-compose up -d
python database_setup.py --setup
python test_accounts.py --show bruno@taaazzz-prog.fr
python generate_test_license.py --user bruno@taaazzz-prog.fr --tier PRO

# Tester la fonctionnalité
# ... développement ...

# Valider avec tests complets
python test_orchestrator.py --all
```

### Tests de régression

```bash
# Lancer tous les scénarios après modification
python test_scenarios.py --run-all --log-file regression_test.log

# Tests orchestrés complets
python test_orchestrator.py --all

# Vérifier les licences générées
python generate_test_license.py --validate-all
```

### Tests de performance

```bash
# Démarrer simulation métriques
python metrics_simulator.py --start --duration 60

# Pendant ce temps, lancer tests de charge
python test_orchestrator.py --suite performance

# Analyser les métriques générées
python metrics_simulator.py --dashboard
```

### Monitoring temps réel

```bash
# Terminal 1 : Simulation métriques
python metrics_simulator.py --start

# Terminal 2 : Tests continus
while true; do
    python test_orchestrator.py --suite unit
    sleep 60
done

# Terminal 3 : Monitoring base de données
python database_setup.py --stats bruno@taaazzz-prog.fr
```

## 🔒 Sécurité

### Isolation des données

- Base de données séparée (port 3307)
- Redis séparé (port 6380)
- Clés de chiffrement de test dédiées
- Pas d'accès aux données de production
- Sites de test isolés dans Docker

### Validation

- Toutes les licences générées sont validées
- Vérification de l'intégrité cryptographique
- Tests de manipulation des données
- Tests d'injection sécurisés avec payloads bénins

### Sites de test sécurisés

- Site vulnérable contrôlé (tests seulement)
- Payloads d'injection non exploitables
- Environnement Docker isolé
- Aucun accès réseau externe

## 🚀 Roadmap

### Phase 1 (Actuelle) ✅
- ✅ Environnement de test complet
- ✅ Gestion des comptes de test
- ✅ Génération de licences
- ✅ Scénarios automatisés
- ✅ Base de données de test
- ✅ Métriques temps réel
- ✅ Orchestrateur tests
- ✅ Infrastructure Docker

### Phase 2 (Prochaine) 🔄
- 🔄 Interface web de gestion des tests
- 🔄 Intégration avec CI/CD
- 🔄 Tests de performance automatisés
- 🔄 Rapports de couverture
- 🔄 Dashboard métriques web
- 🔄 API REST pour tests

### Phase 3 (Future) 📋
- 📋 Tests de sécurité avancés
- 📋 Simulation de charge réaliste
- 📋 Monitoring temps réel
- 📋 Tests de récupération
- 📋 Intégration Kubernetes
- 📋 Tests multi-régions

## 📞 Support

Pour toute question ou problème avec l'environnement de test :

1. Vérifier les logs dans `logs/`
2. Valider la configuration avec `config_manager.py --validate`
3. Vérifier Docker avec `docker-compose ps`
4. Consulter métriques avec `metrics_simulator.py --dashboard`
5. Réinitialiser si nécessaire avec `config_manager.py --reset`

### Debug rapide

```bash
# Vérifier état général
python test_orchestrator.py --suite unit

# Vérifier base de données
python database_setup.py --stats bruno@taaazzz-prog.fr

# Vérifier Docker
docker-compose logs mysql_test

# Vérifier métriques
python metrics_simulator.py --snapshot
```

## 🎯 Conclusion

Cet environnement de test fournit une infrastructure complète et professionnelle pour valider toutes les fonctionnalités de Web Sentinel sans risque pour l'application principale. Il inclut :

- **Infrastructure Docker** complète avec base de données, cache, et sites de test
- **Base de données de test** avec données réalistes et logging complet  
- **Métriques temps réel** pour monitoring et dashboards
- **Orchestrateur de tests** avec suites unitaires, intégration, et performance
- **Générateur de configuration** pour environnements personnalisés
- **Simulation de charge** pour tests de performance
- **Sites de test** variés (sécurisé, vulnérable, mixte)

Il permet un développement et des tests efficaces du système de licence RSA-4096 avec une séparation claire entre environnement de test et production.

## ⚙️ Configuration

Modifiez `config/test_config.json` pour ajuster les paramètres de test.
