307 lines
8.7 KiB
Markdown
307 lines
8.7 KiB
Markdown
# 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
|
|
 → Devrait montrer backup-proxmox-config
|
|
 → 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 :
|
|
```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 :
|
|
```json
|
|
{
|
|
"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 :
|
|
|
|
```bash
|
|
# 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) :**
|
|
```json
|
|
{
|
|
"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) :**
|
|
```json
|
|
{
|
|
"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) :**
|
|
```json
|
|
{
|
|
"playbooks": [
|
|
{"name": "backup-proxmox-config", "hosts": "role_proxmox", ...},
|
|
// + tous les playbooks avec hosts: all
|
|
],
|
|
"filter": "role_proxmox"
|
|
}
|
|
```
|
|
|
|
**Test 4 (env_lab) :**
|
|
```json
|
|
{
|
|
"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
|
|
_____________________________________________
|
|
_____________________________________________
|
|
_____________________________________________
|