# Test Local du Système de Sécurité Ce guide te permet de tester la sécurité de l'API localement avant de déployer sur le serveur. ## Étape 1 : Générer un token de test **Windows (PowerShell) :** ```powershell -join ((48..57) + (65..90) + (97..122) | Get-Random -Count 64 | % {[char]$_}) ``` **Linux/Mac :** ```bash openssl rand -hex 32 ``` **Copie le token généré**. Exemple : `a1b2c3d4e5f6...` --- ## Étape 2 : Configurer le .env Édite ton fichier `.env` et ajoute (ou modifie) ces lignes : ```env # Token API (colle ton token généré) API_TOKEN=ton_token_genere_ici # CORS en développement (tout autoriser) ALLOWED_ORIGINS=* # Port PORT=8888 # Ta clé OpenAI (tu l'as déjà normalement) OPENAI_API_KEY=sk-... ``` --- ## Étape 3 : Démarrer le serveur ```bash npm run server ``` **Résultat attendu :** ``` Server running on http://localhost:8888 Endpoints: GET /health - Health check GET /info?url= - Get video/playlist info POST /download - Download as MP3 ... ``` --- ## Étape 4 : Tester l'authentification ### Test 1 : Endpoint public (sans token) ✅ ```bash curl http://localhost:8888/health ``` **Résultat attendu :** ```json {"status":"ok","timestamp":"2025-..."} ``` --- ### Test 2 : Endpoint protégé SANS token ❌ ```bash curl http://localhost:8888/info?url=https://youtube.com/watch?v=test ``` **Résultat attendu (ERREUR 401) :** ```json { "error": "Unauthorized", "message": "API key required. Provide X-API-Key header or Authorization: Bearer " } ``` ✅ **Si tu vois cette erreur, c'est PARFAIT !** Ça veut dire que la sécurité fonctionne. --- ### Test 3 : Endpoint protégé AVEC token ✅ **Remplace `ton_token_ici` par le token que tu as généré :** ```bash curl -H "X-API-Key: ton_token_ici" \ "http://localhost:8888/info?url=https://youtube.com/watch?v=dQw4w9WgXcQ" ``` **Résultat attendu (informations sur la vidéo) :** ```json { "success": true, "title": "Rick Astley - Never Gonna Give You Up", "type": "video", "duration": 212, ... } ``` ✅ **Si tu vois les infos de la vidéo, parfait !** --- ### Test 4 : Avec un MAUVAIS token ❌ ```bash curl -H "X-API-Key: mauvais_token_123" \ "http://localhost:8888/info?url=https://youtube.com/watch?v=test" ``` **Résultat attendu (ERREUR 403) :** ```json { "error": "Forbidden", "message": "Invalid API key" } ``` ✅ **Si tu vois cette erreur, c'est bon !** --- ## Étape 5 : Tester l'interface web ### 1. Ouvre ton navigateur Va sur : **http://localhost:8888** --- ### 2. Configure le token 1. **Clique sur le panneau "🔐 API Configuration"** 2. **Colle ton token** dans le champ "API Token" 3. **Clique sur "Save & Test"** **Résultat attendu :** - Le statut passe en vert : **"Connected ✓"** - Notification verte : **"✓ API token saved successfully!"** - Le panneau se referme automatiquement ![Configuration réussie] --- ### 3. Teste un téléchargement 1. Va dans l'onglet **"Download"** 2. Entre cette URL de test : `https://www.youtube.com/watch?v=dQw4w9WgXcQ` 3. Clique sur **"Download MP3"** **Résultat attendu :** - La barre de progression apparaît - Le téléchargement démarre - Un fichier MP3 est créé dans `./output/` --- ### 4. Teste sans token (localStorage) 1. **Ouvre la console du navigateur** (F12) 2. **Efface le localStorage** : ```javascript localStorage.clear() ``` 3. **Rafraîchis la page** (F5) 4. **Essaie de télécharger à nouveau** la même vidéo **Résultat attendu :** - Une erreur apparaît : **"⚠️ Authentication Error"** - Message : **"API token required"** ✅ **C'est parfait !** Sans token dans localStorage, l'API refuse la requête. --- ### 5. Re-configure le token 1. **Rouvre le panneau de configuration** 2. **Entre ton token à nouveau** 3. **Clique "Save & Test"** 4. **Le téléchargement devrait maintenant fonctionner** --- ## Étape 6 : Vérifier le localStorage **Dans la console du navigateur (F12) :** ```javascript localStorage.getItem('video_transcriptor_api_token') ``` **Résultat attendu :** ``` "ton_token_genere_ici" ``` ✅ **Le token est bien sauvegardé !** --- ## Récapitulatif des Tests | Test | Attendu | Statut | |------|---------|--------| | `/health` sans token | ✅ 200 OK | ☐ | | `/info` sans token | ❌ 401 Unauthorized | ☐ | | `/info` avec bon token | ✅ 200 OK + données | ☐ | | `/info` avec mauvais token | ❌ 403 Forbidden | ☐ | | Interface web - config token | ✅ "Connected ✓" | ☐ | | Interface web - download avec token | ✅ Fonctionne | ☐ | | Interface web - download sans token | ❌ Erreur auth | ☐ | | localStorage sauvegarde token | ✅ Token présent | ☐ | --- ## Dépannage ### ❌ Le serveur ne démarre pas **Erreur possible :** `API_TOKEN not configured in .env` **Solution :** Vérifie que `.env` contient bien `API_TOKEN=...` --- ### ❌ "Authentication Error" même avec token **Vérifications :** 1. **Le token dans `.env` est identique à celui dans l'interface ?** ```bash cat .env | grep API_TOKEN ``` 2. **Le serveur a bien redémarré après modification de `.env` ?** - Arrête le serveur (Ctrl+C) - Relance : `npm run server` 3. **Le token ne contient pas d'espaces ?** ```env # ❌ MAUVAIS API_TOKEN= mon_token # ✅ BON API_TOKEN=mon_token ``` --- ### ❌ "CORS error" dans la console **Problème :** La requête est bloquée par CORS **Solution :** Vérifie dans `.env` : ```env ALLOWED_ORIGINS=* ``` Redémarre le serveur. --- ### ❌ Le localStorage ne sauvegarde pas **Problème :** Le navigateur bloque le localStorage **Solutions :** 1. Désactive les extensions qui bloquent (uBlock, Privacy Badger) 2. Vérifie que tu n'es pas en mode navigation privée 3. Autorise le stockage local pour `localhost` --- ## Prochaine Étape Si tous les tests sont ✅ **OK**, tu peux déployer sur le serveur OVH ! 📄 **Suis le guide** : [`docs/DEPLOIEMENT_OVH.md`](./docs/DEPLOIEMENT_OVH.md) --- **Bonne chance ! 🚀**