TP Node.js BDD - 02
Contexte
Ce TP est un bonus : il demande plus d'autonomie.
À vous de gérer les informations à retourner ainsi que la logique métier.
Essayez d'intégrer les fonctionnalités demandées de manière autonome en vous aidant de ressources sur Internet.
Si vous utilisez de l'IA (ChatGPT par exemple), vous devez :
- Comprendre le code généré
- L'adapter à votre projet
- Être capable de l'expliquer
Fonctionnalités / Améliorations
Pour aller plus loin, vous pouvez ajouter :
- Des logs à chaque retour métier
- Des tests unitaires et/ou fonctionnels pour :
- Faire du test de non-régression
- Préparer la couverture de code
- Un système d'authentification JWT
Logs
Comme dans la démo, utilisez le package winston pour gérer les logs.
Tests unitaires
Comme dans la démo, utilisez le package jest pour mettre en place les tests.
Pour les tests, il est recommandé de créer une version Mock du DAO qui ne dépend pas d'une base de données.
Exemple :
DAOArticleMock(données stockées en mémoire JavaScript)
Cette implémentation peut servir de DAO "fallback" par défaut si aucun fichier .env ou configuration spécifique n'est défini (notamment dans le cadre des tests).
Cela permet :
- De tester la logique métier sans dépendance externe
- D'éviter les connexions à une base réelle
- De faciliter les tests de non-régression
JWT
Mettre en place :
-
Une route de connexion: Retourne un token JWT si le couple email / mot de passe est valide
-
Un middleware d'authentification: Vérifie que le token envoyé dans le header
Authorizationest valide -
Ce middleware devra pouvoir être injecté dans certaines routes protégées comme :
- Créer un article
- Modifier un article
- Supprimer un article