74 lines
1.9 KiB
Markdown
74 lines
1.9 KiB
Markdown
|
|
# Setup Test User Role for E2E Tests
|
||
|
|
|
||
|
|
## Problème
|
||
|
|
|
||
|
|
Les tests E2E d'upload échouent avec l'erreur `403 Forbidden: Content creation denied - insufficient role`.
|
||
|
|
|
||
|
|
**Cause :** L'utilisateur de test (`user@example.com`) a le rôle par défaut `user`, mais le backend exige un des rôles suivants pour créer du contenu :
|
||
|
|
- `artist`
|
||
|
|
- `creator`
|
||
|
|
- `premium`
|
||
|
|
- `producer`
|
||
|
|
- `label`
|
||
|
|
- `admin`
|
||
|
|
|
||
|
|
## Solution
|
||
|
|
|
||
|
|
Promouvoir l'utilisateur de test au rôle `artist` avant d'exécuter les tests.
|
||
|
|
|
||
|
|
### Option 1 : Script Automatique (Recommandé)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd apps/web/e2e
|
||
|
|
./setup-test-user-role.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
Le script détecte automatiquement si vous utilisez :
|
||
|
|
- `psql` directement
|
||
|
|
- Docker avec un conteneur PostgreSQL
|
||
|
|
|
||
|
|
### Option 2 : SQL Manuel
|
||
|
|
|
||
|
|
Si le script ne fonctionne pas, exécutez manuellement le SQL :
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Avec psql
|
||
|
|
psql "postgres://veza:password@localhost:5432/veza" -f setup-test-user-role.sql
|
||
|
|
|
||
|
|
# Avec Docker
|
||
|
|
docker exec -i <postgres-container> psql -U veza -d veza < setup-test-user-role.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
### Option 3 : Via Interface Graphique (DBeaver, pgAdmin, etc.)
|
||
|
|
|
||
|
|
Ouvrez `setup-test-user-role.sql` et exécutez-le dans votre client SQL.
|
||
|
|
|
||
|
|
## Vérification
|
||
|
|
|
||
|
|
Après avoir exécuté le script, vérifiez que l'utilisateur a bien le rôle :
|
||
|
|
|
||
|
|
```sql
|
||
|
|
SELECT
|
||
|
|
u.email,
|
||
|
|
r.name as role_name
|
||
|
|
FROM users u
|
||
|
|
LEFT JOIN user_roles ur ON u.id = ur.user_id
|
||
|
|
LEFT JOIN roles r ON ur.role_id = r.id
|
||
|
|
WHERE u.email = 'user@example.com';
|
||
|
|
```
|
||
|
|
|
||
|
|
Vous devriez voir `artist` dans la colonne `role_name`.
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
- Ce script est **idempotent** : vous pouvez l'exécuter plusieurs fois sans problème
|
||
|
|
- Il utilise `ON CONFLICT DO NOTHING` pour éviter les erreurs si le rôle existe déjà
|
||
|
|
- Le script crée le rôle `artist` s'il n'existe pas dans la table `roles`
|
||
|
|
|
||
|
|
## Tests Affectés
|
||
|
|
|
||
|
|
Une fois le rôle configuré, ces tests devraient passer :
|
||
|
|
- ✅ `track_lifecycle.spec.ts` - Complete Track Lifecycle
|
||
|
|
- ✅ `tracks_upload_chunked.spec.ts` - Chunked Upload Flow
|
||
|
|
- ✅ `upload_flow.spec.ts` - Upload Flow Happy Path
|