# 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
