# Instructions de Test - Lions User Manager

## ✅ Configuration Terminée

Tous les composants sont maintenant configurés et opérationnels !

## 🚀 Architecture Actuelle

```
┌─────────────────────────────────────────────┐
│          Navigateur Web                     │
└────────────┬────────────────────────────────┘
             │
             │ 1. http://localhost:8080
             │    Redirection OIDC →
             │
             ▼
┌─────────────────────────────────────────────┐
│  KEYCLOAK (Port 8180) ✅                    │
│  - Realm: lions-user-manager                │
│  - Client: lions-user-manager-client        │
│  - Secret: client-secret-lions-2025         │
└────────────┬────────────────────────────────┘
             │
             │ 2. Authentification
             │    testuser / test123
             │
             ▼
┌─────────────────────────────────────────────┐
│  FRONTEND (Port 8080) ✅                    │
│  - OIDC activé                              │
│  - Reçoit token JWT                         │
└────────────┬────────────────────────────────┘
             │
             │ 3. Appels API avec token JWT
             │
             ▼
┌─────────────────────────────────────────────┐
│  BACKEND (Port 8081) ✅                     │
│  - Vérifie le token JWT                     │
│  - Appelle Keycloak Admin API               │
└─────────────────────────────────────────────┘
```

## 📋 Étapes de Test

### 1. Vérifier que tous les services tournent

```bash
# Backend (port 8081)
curl http://localhost:8081/q/health

# Keycloak (port 8180)
curl http://localhost:8180/realms/lions-user-manager

# Frontend (port 8080) - devrait rediriger
curl -I http://localhost:8080
```

### 2. Tester l'authentification complète

1. **Ouvrir le navigateur** : http://localhost:8080

2. **Redirection automatique** vers Keycloak :
   - URL sera : `http://localhost:8180/realms/lions-user-manager/protocol/openid-connect/auth?...`

3. **Se connecter** avec les credentials :
   - **Username** : `testuser`
   - **Password** : `test123`

4. **Redirection** vers le frontend authentifié

5. **Accéder aux pages protégées** :
   - http://localhost:8080/pages/user-manager/users/list.xhtml

### 3. Tester les API Backend directement

#### Avec token (authentifié)

```bash
# 1. Obtenir un token
TOKEN=$(curl -s -X POST "http://localhost:8180/realms/lions-user-manager/protocol/openid-connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=lions-user-manager-client" \
  -d "client_secret=client-secret-lions-2025" \
  -d "username=testuser" \
  -d "password=test123" \
  -d "grant_type=password" | grep -o '"access_token":"[^"]*' | cut -d'"' -f4)

# 2. Appeler l'API avec le token
curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8081/api/users?realm=lions-user-manager"
```

## 🔑 Credentials

### Keycloak Admin
- **URL** : http://localhost:8180/admin
- **Username** : `admin`
- **Password** : `admin`
- **Realm** : `master`

### Test User (Application)
- **URL** : http://localhost:8080
- **Username** : `testuser`
- **Password** : `test123`
- **Realm** : `lions-user-manager`

### Client Configuration
- **Client ID** : `lions-user-manager-client`
- **Client Secret** : `client-secret-lions-2025`
- **Realm** : `lions-user-manager`

## 📊 Endpoints de Test

### Frontend
- **Accueil** : http://localhost:8080
- **Users List** : http://localhost:8080/pages/user-manager/users/list.xhtml
- **Roles List** : http://localhost:8080/pages/user-manager/roles/list.xhtml

### Backend API
- **Swagger UI** : http://localhost:8081/q/swagger-ui
- **Dev UI** : http://localhost:8081/q/dev
- **Health** : http://localhost:8081/q/health
- **Keycloak Health** : http://localhost:8081/api/health/keycloak
- **Users API** : http://localhost:8081/api/users?realm=lions-user-manager
- **Roles API** : http://localhost:8081/api/roles/realm?realm=lions-user-manager

### Keycloak
- **Admin Console** : http://localhost:8180/admin
- **Realm Info** : http://localhost:8180/realms/lions-user-manager
- **Well-known** : http://localhost:8180/realms/lions-user-manager/.well-known/openid-configuration

## ⚠️ Troubleshooting

### Frontend retourne "Forbidden"
- **Cause** : Pas authentifié
- **Solution** : Allez sur http://localhost:8080, laissez-vous rediriger vers Keycloak et authentifiez-vous

### Erreur "Client not found"
- **Cause** : Configuration Keycloak incorrecte
- **Solution** : Vérifier que le client `lions-user-manager-client` existe dans le realm `lions-user-manager`

### Backend retourne 403
- **Cause** : Token invalide ou manquant
- **Solution** : S'assurer que le frontend envoie bien le token JWT dans l'en-tête `Authorization`

### "Invalid redirect_uri"
- **Cause** : Les redirect URIs ne sont pas configurées correctement
- **Solution** : Dans Keycloak Admin, vérifier que `http://localhost:8080/*` est bien dans les Valid Redirect URIs

## 🧪 Scénarios de Test

### Scénario 1 : Authentification et Liste des Utilisateurs
1. Ouvrir http://localhost:8080
2. Se connecter avec testuser/test123
3. Naviguer vers la liste des utilisateurs
4. Vérifier que les utilisateurs s'affichent

### Scénario 2 : Créer un Utilisateur
1. S'authentifier (voir Scénario 1)
2. Cliquer sur "Nouveau Utilisateur"
3. Remplir le formulaire
4. Sauvegarder
5. Vérifier que l'utilisateur apparaît dans la liste

### Scénario 3 : Gestion des Rôles
1. S'authentifier
2. Aller sur la page des rôles
3. Assigner des rôles à un utilisateur
4. Vérifier que les rôles sont bien assignés

### Scénario 4 : API Backend Directe
```bash
# Obtenir token
TOKEN=$(curl -s -X POST "http://localhost:8180/realms/lions-user-manager/protocol/openid-connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=lions-user-manager-client" \
  -d "client_secret=client-secret-lions-2025" \
  -d "username=testuser" \
  -d "password=test123" \
  -d "grant_type=password" | grep -o '"access_token":"[^"]*' | cut -d'"' -f4)

# Lister utilisateurs
curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8081/api/users?realm=lions-user-manager"

# Lister rôles
curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8081/api/roles/realm?realm=lions-user-manager"
```

## ✅ Checklist de Validation

- [ ] Backend démarre sur port 8081
- [ ] Keycloak accessible sur port 8180
- [ ] Frontend démarre sur port 8080
- [ ] Redirection OIDC fonctionne (frontend → Keycloak)
- [ ] Authentification réussie avec testuser/test123
- [ ] Pages protégées accessibles après authentification
- [ ] API Backend retourne des données
- [ ] Token JWT est correctement transmis
- [ ] Swagger UI accessible et fonctionnel

## 🎯 Prochaines Étapes (Post-Test)

1. ✅ Validation de l'authentification complète
2. ⏳ Tests fonctionnels de toutes les pages
3. ⏳ Tests CRUD complets (Create, Read, Update, Delete)
4. ⏳ Tests de gestion des rôles
5. ⏳ Tests d'audit
6. ⏳ Tests de synchronisation

## 📝 Notes

- Le frontend utilise maintenant OIDC avec Keycloak local
- Le backend vérifie les tokens JWT via OIDC
- Tous les appels API nécessitent un token valide
- Le test user `testuser` a les rôles : `admin`, `user_manager`

---

**Date de configuration** : 2025-12-05
**Environnement** : Développement (DEV)
