homelab_automation/TESTS_FRONTEND.md

8.7 KiB

Tests Frontend - Filtrage des Playbooks

Guide de Test Manuel

Prérequis

  1. L'API backend doit être démarrée
  2. L'interface web doit être accessible
  3. Au moins un hôte dans role_proxmox et un hôte hors de ce groupe

Test 1 : Filtrage pour Hôte Non-Proxmox

Objectif

Vérifier que backup-proxmox-config n'apparaît PAS pour un hôte hors du groupe role_proxmox

Étapes

  1. Ouvrir l'interface web
  2. Aller dans la section "Hôtes"
  3. Localiser un hôte qui n'est PAS dans role_proxmox (ex: raspi.4gb.home)
  4. Cliquer sur le bouton "Playbook" pour cet hôte
  5. Observer la liste des playbooks

Résultat Attendu

  • Message affiché : "Seuls les playbooks compatibles avec cet hôte sont affichés (X disponibles)"
  • La liste contient : bootstrap-host, health-check, vm-upgrade, vm-reboot, etc.
  • La liste NE contient PAS : backup-proxmox-config

Capture d'Écran

Test 1 - Avant → Devrait montrer backup-proxmox-config Test 1 - Après → Ne devrait PAS montrer backup-proxmox-config


Test 2 : Filtrage pour Hôte Proxmox

Objectif

Vérifier que backup-proxmox-config APPARAÎT pour un hôte du groupe role_proxmox

Étapes

  1. Ouvrir l'interface web
  2. Aller dans la section "Hôtes"
  3. Localiser un hôte dans role_proxmox (ex: ali2v.xeon.home)
  4. Cliquer sur le bouton "Playbook" pour cet hôte
  5. Observer la liste des playbooks

Résultat Attendu

  • Message affiché : "Seuls les playbooks compatibles avec cet hôte sont affichés (X disponibles)"
  • La liste contient : backup-proxmox-config
  • La liste contient aussi : bootstrap-host, health-check, etc.

Vérification Supplémentaire

  • Le nombre de playbooks disponibles devrait être SUPÉRIEUR au Test 1

Test 3 : Filtrage pour Groupe Non-Proxmox

Objectif

Vérifier que backup-proxmox-config n'apparaît PAS pour un groupe autre que role_proxmox

Étapes

  1. Ouvrir l'interface web
  2. Aller dans la section "Groupes"
  3. Sélectionner un groupe autre que role_proxmox (ex: env_lab)
  4. Cliquer sur le bouton "Playbook" pour ce groupe
  5. Observer la liste des playbooks par catégorie

Résultat Attendu

  • Message affiché : "Seuls les playbooks compatibles avec ce groupe sont affichés (X disponibles)"
  • Catégorie "BACKUP" : NE contient PAS backup-proxmox-config
  • Catégorie "MAINTENANCE" : Contient les playbooks universels
  • Catégorie "MONITORING" : Contient health-check

Test 4 : Filtrage pour Groupe Proxmox

Objectif

Vérifier que backup-proxmox-config APPARAÎT pour le groupe role_proxmox

Étapes

  1. Ouvrir l'interface web
  2. Aller dans la section "Groupes"
  3. Sélectionner le groupe role_proxmox
  4. Cliquer sur le bouton "Playbook" pour ce groupe
  5. Observer la liste des playbooks par catégorie

Résultat Attendu

  • Message affiché : "Seuls les playbooks compatibles avec ce groupe sont affichés (X disponibles)"
  • Catégorie "BACKUP" : CONTIENT backup-proxmox-config
  • Toutes les autres catégories : Contiennent les playbooks universels

Test 5 : Compteur de Playbooks

Objectif

Vérifier que le compteur affiche le bon nombre de playbooks

Étapes

  1. Pour chaque test ci-dessus, noter le nombre affiché dans le message
  2. Compter manuellement les playbooks dans la liste
  3. Comparer les deux nombres

Résultat Attendu

  • Le nombre affiché correspond au nombre de playbooks dans la liste
  • Le pluriel est correct ("1 disponible" vs "X disponibles")

Test 6 : Tentative d'Exécution Incompatible (Protection Backend)

Objectif

Vérifier que même si on contourne le frontend, le backend bloque l'exécution

Étapes

  1. Ouvrir la console développeur du navigateur (F12)
  2. Exécuter cette commande JavaScript :
fetch('/api/ansible/execute', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-API-Key': 'votre-api-key'
    },
    body: JSON.stringify({
        playbook: 'backup-proxmox-config.yml',
        target: 'raspi.4gb.home'
    })
})
.then(r => r.json())
.then(console.log)

Résultat Attendu

  • Réponse HTTP 400 (Bad Request)
  • Message d'erreur :
{
    "detail": "Le playbook 'backup-proxmox-config.yml' (hosts: role_proxmox) n'est pas compatible avec la cible 'raspi.4gb.home'. Ce playbook ne peut être exécuté que sur: role_proxmox"
}

Test 7 : Vérification API Directe

Objectif

Vérifier que l'API retourne bien les playbooks filtrés

Étapes

  1. Ouvrir un terminal
  2. Exécuter ces commandes curl :
# Test 1 : Playbooks pour raspi.4gb.home
curl -H "X-API-Key: votre-key" \
  "http://localhost:8000/api/ansible/playbooks?target=raspi.4gb.home"

# Test 2 : Playbooks pour ali2v.xeon.home
curl -H "X-API-Key: votre-key" \
  "http://localhost:8000/api/ansible/playbooks?target=ali2v.xeon.home"

# Test 3 : Playbooks pour role_proxmox
curl -H "X-API-Key: votre-key" \
  "http://localhost:8000/api/ansible/playbooks?target=role_proxmox"

# Test 4 : Playbooks pour env_lab
curl -H "X-API-Key: votre-key" \
  "http://localhost:8000/api/ansible/playbooks?target=env_lab"

Résultat Attendu

Test 1 (raspi.4gb.home) :

{
    "playbooks": [
        {"name": "bootstrap-host", "hosts": "all", ...},
        {"name": "health-check", "hosts": "all", ...},
        {"name": "vm-upgrade", "hosts": "all", ...}
        // PAS de backup-proxmox-config
    ],
    "filter": "raspi.4gb.home"
}

Test 2 (ali2v.xeon.home) :

{
    "playbooks": [
        {"name": "backup-proxmox-config", "hosts": "role_proxmox", ...},
        {"name": "bootstrap-host", "hosts": "all", ...},
        {"name": "health-check", "hosts": "all", ...}
        // backup-proxmox-config EST présent
    ],
    "filter": "ali2v.xeon.home"
}

Test 3 (role_proxmox) :

{
    "playbooks": [
        {"name": "backup-proxmox-config", "hosts": "role_proxmox", ...},
        // + tous les playbooks avec hosts: all
    ],
    "filter": "role_proxmox"
}

Test 4 (env_lab) :

{
    "playbooks": [
        // Seulement les playbooks avec hosts: all
        // PAS de backup-proxmox-config
    ],
    "filter": "env_lab"
}

Test 8 : Gestion d'Erreur

Objectif

Vérifier que l'interface gère correctement les erreurs

Étapes

  1. Arrêter temporairement l'API backend
  2. Dans l'interface, cliquer sur "Playbook" pour un hôte
  3. Observer le comportement

Résultat Attendu

  • Message d'erreur affiché : "Erreur chargement playbooks: [message]"
  • La modale ne s'ouvre pas ou affiche un message d'erreur
  • Pas de crash de l'interface

Checklist Complète

Interface Utilisateur

  • Message informatif affiché dans la modale (hôte)
  • Message informatif affiché dans la modale (groupe)
  • Compteur de playbooks correct
  • Pluriel correct ("disponible" vs "disponibles")
  • Icônes affichées correctement

Filtrage Fonctionnel

  • Hôte non-Proxmox : backup-proxmox-config absent
  • Hôte Proxmox : backup-proxmox-config présent
  • Groupe non-Proxmox : backup-proxmox-config absent
  • Groupe Proxmox : backup-proxmox-config présent
  • Groupe "all" : tous les playbooks présents

Protection Backend

  • Exécution incompatible bloquée (HTTP 400)
  • Message d'erreur explicite
  • API retourne les bons playbooks filtrés

Robustesse

  • Gestion d'erreur si API indisponible
  • Encodage URL correct pour noms spéciaux
  • Pas de crash si aucun playbook compatible

Résultats Attendus Globaux

Cible backup-proxmox-config Autres Playbooks
raspi.4gb.home Absent Présents
ali2v.xeon.home Présent Présents
role_proxmox Présent Présents
env_lab Absent Présents
all Absent Présents

Rapport de Test

Date : _____________

Testeur : _____________

Test Statut Notes
Test 1 : Hôte Non-Proxmox Pass Fail
Test 2 : Hôte Proxmox Pass Fail
Test 3 : Groupe Non-Proxmox Pass Fail
Test 4 : Groupe Proxmox Pass Fail
Test 5 : Compteur Pass Fail
Test 6 : Protection Backend Pass Fail
Test 7 : API Directe Pass Fail
Test 8 : Gestion d'Erreur Pass Fail

Conclusion

Tous les tests passent - Implémentation validée
Certains tests échouent - Corrections nécessaires

Problèmes Rencontrés