- Ajout support custom API keys (Anthropic/OpenAI) dans localStorage - Backend utilise custom keys si fournis (pas de déduction rate limit) - Tentative fix rate limiter pour /api/llm/limit (skip globalLimiter) - Fix undefined/undefined dans compteur requêtes - Ajout error loop prevention (stop après 5 erreurs) - Reset quotidien à minuit pour compteur LLM Note: Problème 429 persiste, à débugger à la maison 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| get-token.bat | ||
| INDEX.md | ||
| quick-check.bat | ||
| QUICKSTART.md | ||
| README.md | ||
| STRUCTURE.txt | ||
| test-all.bat | ||
| test-authorized.bat | ||
| test-health.bat | ||
| test-unauthorized.bat | ||
🧪 Tests API - ConfluentTranslator
Suite de tests automatisés pour valider la sécurité et le bon fonctionnement de l'API.
📋 Scripts disponibles
1. test-health.bat
Teste l'endpoint public /api/health.
Utilisation :
test-health.bat
Vérifie :
- ✅ Endpoint accessible sans authentification
- ✅ Retourne status 200
- ✅ Retourne JSON avec
"status":"ok"
2. test-unauthorized.bat
Teste tous les endpoints protégés SANS authentification.
Utilisation :
test-unauthorized.bat
Vérifie que TOUS les endpoints retournent 401 :
- GET endpoints : stats, lexique, search, validate
- POST endpoints : translate, reload, debug, coverage, batch, conf2fr
Résultat attendu : Tous les tests passent (401 Unauthorized)
3. test-authorized.bat
Teste tous les endpoints protégés AVEC authentification.
Utilisation :
REM 1. Éditer le fichier et configurer le token
notepad test-authorized.bat
REM 2. Remplacer cette ligne :
REM set TOKEN=VOTRE_TOKEN_ICI
REM par :
REM set TOKEN=votre-vrai-token
REM 3. Lancer le test
test-authorized.bat
Vérifie :
- ✅ Validate token retourne 200 avec user info
- ✅ Stats retourne 200 avec données
- ✅ Lexique retourne 200 avec vocabulaire
- ✅ Search retourne 200 avec résultats
- ✅ Endpoints POST fonctionnent avec auth
Note : Certains endpoints nécessitant des API keys LLM sont skippés.
4. test-all.bat
Lance tous les tests dans l'ordre.
Utilisation :
test-all.bat
Exécute :
- Test endpoint public (health)
- Test sécurité sans auth (unauthorized)
- Test accès avec auth (authorized)
Résultat final : Résumé de tous les tests
🚀 Quick Start
Étape 1 : Démarrer le serveur
cd ConfluentTranslator
npm start
Étape 2 : Récupérer le token admin
Option A - Depuis les logs : Le serveur affiche le token au démarrage :
🔑 Admin token created: c32b04be-2e68-4e15-8362-xxxxx
⚠️ SAVE THIS TOKEN - It will not be shown again!
Option B - Depuis le fichier :
type data\tokens.json
Étape 3 : Configurer test-authorized.bat
notepad testsAPI\test-authorized.bat
Remplacer :
set TOKEN=VOTRE_TOKEN_ICI
par :
set TOKEN=c32b04be-2e68-4e15-8362-xxxxx
Étape 4 : Lancer tous les tests
cd testsAPI
test-all.bat
📊 Tests détaillés
Test 1: Endpoint public
| Endpoint | Méthode | Auth | Status attendu | Description |
|---|---|---|---|---|
/api/health |
GET | ❌ Non | 200 | Health check serveur |
Test 2: Endpoints protégés (sans auth)
| Endpoint | Méthode | Auth | Status attendu | Description |
|---|---|---|---|---|
/api/stats |
GET | ❌ Non | 401 | Stats lexique |
/api/lexique/ancien |
GET | ❌ Non | 401 | Lexique ancien |
/api/lexique/proto |
GET | ❌ Non | 401 | Lexique proto |
/api/search |
GET | ❌ Non | 401 | Recherche lexique |
/api/validate |
GET | ❌ Non | 401 | Validation token |
/translate |
POST | ❌ Non | 401 | Traduction FR→CF |
/api/reload |
POST | ❌ Non | 401 | Reload lexiques |
/api/debug/prompt |
POST | ❌ Non | 401 | Debug prompt |
/api/analyze/coverage |
POST | ❌ Non | 401 | Coverage analysis |
/api/translate/raw |
POST | ❌ Non | 401 | Traduction raw |
/api/translate/batch |
POST | ❌ Non | 401 | Traduction batch |
/api/translate/conf2fr |
POST | ❌ Non | 401 | Traduction CF→FR |
/api/translate/conf2fr/llm |
POST | ❌ Non | 401 | Traduction CF→FR LLM |
Total : 13 endpoints doivent retourner 401
Test 3: Endpoints protégés (avec auth)
| Endpoint | Méthode | Auth | Status attendu | Description |
|---|---|---|---|---|
/api/validate |
GET | ✅ Oui | 200 | Validation token |
/api/stats |
GET | ✅ Oui | 200 | Stats lexique |
/api/lexique/ancien |
GET | ✅ Oui | 200 | Lexique ancien |
/api/search?q=eau |
GET | ✅ Oui | 200 | Recherche "eau" |
/api/debug/prompt |
POST | ✅ Oui | 200 | Debug prompt |
/api/analyze/coverage |
POST | ✅ Oui | 200 | Coverage analysis |
/api/translate/batch |
POST | ✅ Oui | 200 | Traduction batch |
/api/translate/conf2fr |
POST | ✅ Oui | 200 | Traduction CF→FR |
Total : 8 endpoints doivent retourner 200
Endpoints skippés
Ces endpoints nécessitent des configurations supplémentaires :
| Endpoint | Raison | Comment tester |
|---|---|---|
/translate |
Requiert ANTHROPIC_API_KEY | Configurer .env |
/api/translate/raw |
Requiert API keys LLM | Configurer .env |
/api/translate/conf2fr/llm |
Requiert API keys LLM | Configurer .env |
/api/reload |
Admin only | Utiliser token admin |
✅ Critères de succès
Test complet réussi si :
Test 1 (health) :
- ✅ Status 200 retourné
- ✅ JSON contient
"status":"ok"
Test 2 (unauthorized) :
- ✅ 13/13 endpoints retournent 401
- ✅ Message "API key missing" ou similaire
Test 3 (authorized) :
- ✅ 8/8 endpoints retournent 200
- ✅ Données JSON valides retournées
🐛 Dépannage
Erreur: "curl n'est pas reconnu"
Cause : curl n'est pas installé ou pas dans le PATH
Solution :
- Windows 10+ : curl est préinstallé
- Vérifier :
curl --version - Installer si besoin : https://curl.se/windows/
Erreur: "Connexion refusée"
Cause : Le serveur n'est pas démarré
Solution :
cd ConfluentTranslator
npm start
Test unauthorized échoue (pas 401)
Cause : Un endpoint n'est pas protégé
Solution :
- Vérifier que
authenticatemiddleware est présent sur l'endpoint - Vérifier
server.js:line XXpour l'endpoint qui échoue
Test authorized échoue (401 au lieu de 200)
Cause : Token invalide ou expiré
Solution :
- Vérifier que le token est correct dans
test-authorized.bat - Vérifier que le token existe dans
data/tokens.json - Vérifier que
enabled: truedans le fichier JSON
Test authorized retourne 500
Cause : Erreur serveur (lexiques non chargés, etc.)
Solution :
- Vérifier les logs du serveur
- Vérifier que les fichiers lexique existent
- Redémarrer le serveur
📝 Logs et debugging
Activer les logs détaillés
Les logs sont automatiquement affichés dans la console du serveur.
Voir le détail d'une requête
Ajouter -v à curl pour voir les headers :
curl -v http://localhost:3000/api/stats
Tester un endpoint manuellement
REM Sans auth (doit échouer)
curl http://localhost:3000/api/stats
REM Avec auth (doit réussir)
curl -H "x-api-key: VOTRE_TOKEN" http://localhost:3000/api/stats
🔧 Personnalisation
Ajouter un nouveau test
1. Créer test-custom.bat :
@echo off
echo Test personnalise
curl -H "x-api-key: %TOKEN%" http://localhost:3000/api/custom-endpoint
pause
2. Ajouter dans test-all.bat :
echo TEST 4: CUSTOM
call test-custom.bat
Modifier le serveur de test
Par défaut : http://localhost:3000
Pour changer :
REM Dans chaque fichier .bat, remplacer :
set BASE_URL=http://localhost:3000
REM par :
set BASE_URL=http://votre-serveur:port
📚 Ressources
- Documentation sécurité : Voir
../SECURITY_TEST.md - Changelog : Voir
../CHANGELOG_SECURITY.md - Guide rapide : Voir
../README_SECURITY.md - Auth système : Voir
../auth.js
🎯 Résumé
| Script | Tests | Durée | Prérequis |
|---|---|---|---|
test-health.bat |
1 | ~2s | Serveur actif |
test-unauthorized.bat |
13 | ~10s | Serveur actif |
test-authorized.bat |
8 | ~8s | Serveur + Token |
test-all.bat |
22 | ~20s | Serveur + Token |
Total : 22 tests automatisés
✨ Contribution
Pour ajouter de nouveaux tests :
- Créer un nouveau fichier
.bat - Suivre le format des tests existants
- Ajouter dans
test-all.bat - Documenter dans ce README
Made with ❤️ for ConfluentTranslator security testing