1.Description
En tant qu'utilisateur, je veux pouvoir consulter et agrémenter la newsletter, afin de participer activement au contenu que propose l'application
Une fois un utilisateur correctement authentifié auprès du site, ce dernier aura la possibilité d'observer les posts des autres utilisateurs, de lui-même en ajouter et de supprimer le sien.
Tout se fait avec cette fonctionnalités de Newsletter commune pour tous les utilisateurs.
Cette dernière est renseigné dans la DB et des endpoints spécifiques permettent de l'enrichir ou de visualiser son contenu.
Les US listés dans le point 5 sont celles nécessaires pour profiter de cette fonctionnalité et celles qui l'enrichissent.
2.Schéma et captures
Une fois connecté, l'utilisateur pourra choisir la fonctionnalité souhaitée entre la prise de rendez-vous, accéder à la newsletter et accéder à son compte.
![Image](https://private-user-images.githubusercontent.com/71373002/317722928-e8be3abb-bfbd-4458-8b08-4f2e3ca4219f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxODYwNDksIm5iZiI6MTcxOTE4NTc0OSwicGF0aCI6Ii83MTM3MzAwMi8zMTc3MjI5MjgtZThiZTNhYmItYmZiZC00NDU4LThiMDgtNGYyZTNjYTQyMTlmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDIzMzU0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNjNGZiMmUzMmEwYjkxZDQ4YjI3NTc1MWZmMWJhMzE4YmExYWQ1NDUwYWUwN2I0ODI1MmVmYzg0ZDIxMzk4NmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.vjsZk7Ta8xAohdQPFoDv8-yFiK1gRy4TllS7i-yE6AA)
Après avoir sélectionner la Newsletter, l'utilisateur arrivera sur cette écran lui permettant de consulter toutes les publications.
Normalement, seul l'admin devait être capable de publier quelque chose et les utilisateurs ne pouvait que la visualiser.
Mais pour rendre la communauté plus active, l'idée a été de permettre aux utilisateurs possédant un compte d'enrichir cette newsletter, en postant et supprimant des publications.
![Image](https://private-user-images.githubusercontent.com/71373002/317722948-372f0a99-b181-4d97-af0b-64089af8e166.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxODYwNDksIm5iZiI6MTcxOTE4NTc0OSwicGF0aCI6Ii83MTM3MzAwMi8zMTc3MjI5NDgtMzcyZjBhOTktYjE4MS00ZDk3LWFmMGItNjQwODlhZjhlMTY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDIzMzU0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFjMDYyNzU4NTc0NWNjNWM2YzAyYWUxN2YwNmEzNzk2YWY3YzZlNTFmYzMzMDQ5MjVkYjljNWNjYWE3ZDQ1Y2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.XRSUre5EYRgOoL0M9ZTnhQPoqcyt9cMJfKBsuAv9WSg)
Pour ne pas qu'il y ait de mauvaises dérives, les publications devront être soumises par formulaire et l'admin pourra les valider ou refuser. Ce qui les ajoutera aux publications visibles ou non.
Actuellement la DB contient la table User qui permet d'enregistrer et d'authentifier un utilisateur, ainsi qu'une table posts qui contient l'intégralité du contenu de la newsletter.
![Image](https://private-user-images.githubusercontent.com/71373002/317302472-1aa07aca-5a59-486a-9cb5-7d8b1c07d622.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxODYwNDksIm5iZiI6MTcxOTE4NTc0OSwicGF0aCI6Ii83MTM3MzAwMi8zMTczMDI0NzItMWFhMDdhY2EtNWE1OS00ODZhLTljYjUtN2Q4YjFjMDdkNjIyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDIzMzU0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQzMTY2YzM4M2YzNGE0ZTQwMDI1YzIyNzY1ZDQ5YzNhNzJmYzRmZTgxM2MyMzlhNWFjNWQ0MmRmMTYzYzAxZGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.BaWgGOxpsjVVuD7h1y9nbZ0rls5FadGHTXB5BtMy7cw)
On peut retrouver le cookie de connexion en appuyant sur "F12" et en allant dans "Application" puis "storage" => "local storage"
![Image](https://private-user-images.githubusercontent.com/71373002/317310473-3ea49742-3a13-49f1-b064-ca0f5420c272.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxODYwNDksIm5iZiI6MTcxOTE4NTc0OSwicGF0aCI6Ii83MTM3MzAwMi8zMTczMTA0NzMtM2VhNDk3NDItM2ExMy00OWYxLWIwNjQtY2EwZjU0MjBjMjcyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDIzMzU0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZiN2Y5YTM4YjZiOThlN2U0OGVmMDljZWIwNjYzOWMwODczODQ2OTBhNGJjMjA0YmJlYzkwNDcyODhiYzIxOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ohs4s7YWx8v5fcxbW4ubfvoKdLvFFIiC7wcScv5k_q0)
Sur Postman, les requêtes POST se font en "RAW" et de type "JSON" avec la bonne route
![Image](https://private-user-images.githubusercontent.com/71373002/317311592-1d4812f9-fd90-49bb-97da-4df2b2149756.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxODYwNDksIm5iZiI6MTcxOTE4NTc0OSwicGF0aCI6Ii83MTM3MzAwMi8zMTczMTE1OTItMWQ0ODEyZjktZmQ5MC00OWJiLTk3ZGEtNGRmMmIyMTQ5NzU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDIzMzU0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ0ZDgxODBlNTBmOGFjZjhkNDRhOWFlNWZiZWU0YzkxYzI1NDgxOGJlMWJhZTRlNWU0NWY2Yjc1M2NlMDE5OGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Oh6elhBWMraRY_SNWjMSQQKwsr7XQTvfxnlnMgATnjY)
Pour supprimer un poste spécifique changer le type de requête par "DELETE" et ajouter l'id du post à supprimer pour atteindre le bon endpoint
![Image](https://private-user-images.githubusercontent.com/71373002/317312036-4d55f056-da72-4cf3-ba87-4aed60b02d33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxODYwNDksIm5iZiI6MTcxOTE4NTc0OSwicGF0aCI6Ii83MTM3MzAwMi8zMTczMTIwMzYtNGQ1NWYwNTYtZGE3Mi00Y2YzLWJhODctNGFlZDYwYjAyZDMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDIzMzU0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIzN2YzYjIyOWZhNWQ0NDM2ZDI4MmFmNzA2ZGQ5ODI5NTU5YTFjYjhmODc2ODc3ZGNiOTNhY2Y3NDViMDY2NTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.a4OOLa6DePJXZ4y66yHI6PAbBAbipVw8y37TpZD2aC8)
Pour visualiser le contenu de la newsletter, faites une requête GET. Cela déclenchera la méthode "fetchAll()" et sélectionnera tout le contenu de la table posts.
3.Critères de validation
4.Informations techniques
Il faut envoyer des données valides sinon la requête Postman tournera dans le vide. Des règles ont été définis à savoir un "title" de minimum 5 caractères et un "body" de minimum 10 caractères. Aucun de ces champs, y compris id, ne peuvent être null
Pour tester le bon fonctionnement de cette US, Postman a été utilisé. Il est important de préciser que pour avoir un test concluent, il faut renseigner dans la section header un nouvelle ligne
Authorization Bearer <token de connexion>
Sans quoi, une erreur "jwt must be provided" sera retourné.
Actuellement un utilisateur correctement connecté peut supprimer du contenu ne lui appartenant pas. Cela sera corrigé ultérieurement.
Tests
Ce commit vous amène aux trois fichiers de tests permettant de vérifier les bons déroulement des méthodes et leurs cas d'erreurs. Ont été testé, les controllers auth.js ainsi que posts.js et le middleware auth.js.
Les tests ont été opérés avec Jest pour un total de 18 tests.
Chaque fichier de test se trouve dans la même directory que le fichier dont il teste les méthodes.
Ils ont tous la même convention de nommage à savoir l'extension "test.js" exemple, "auth.test.js".
Pour lancer les codes, la commande "npx jest" suffit. Cette commande va rechercher dans le répertoire tous les fichiers comportant l'extension que Jest reconnaît comme fichier de test.
55a323f
5.US associés
US pré requises
Création d'un formulaire permettant l'inscription
Ajout d'un utilisateur fraîchement enregistré dans la DB
Connexion avec un compte utilisateur existant
Attribuer un cookie de session à chaque nouvelle connexion
US liées par les fonctionnalités
Permettre l'accès à des pages spécifiques en fonction du cookie de session possédé (non implémentée)
Garder en mémoire les cookies de connexion (non implémentée)