Skip to content

Superviser et assurer le développement des applications

Notifications You must be signed in to change notification settings

winvdaking/CESI_Superviser_dev_app

 
 

Repository files navigation

Breizhsport - Application Microservices

Description

Ce projet utilise une architecture microservices pour gérer différentes fonctionnalités liées à Breizhsport. L'application est composée de trois services distincts :

  1. auth_service : Gestion des utilisateurs (inscription, authentification, validation de jeton).
  2. product_service : Gestion des produits et du panier.
  3. frontend_service : Interface utilisateur pour afficher les produits.

L'ensemble du projet est conteneurisé avec Docker, ce qui facilite le déploiement et les tests en local.

Prérequis

  • Docker et Docker Compose doivent être installés sur votre machine.
  • Python 3.10 ou plus récent.

Structure du Projet

CESI_Superviser_dev_app/
├── auth_service/
│   ├── Dockerfile
│   ├── main.py
│   ├── requirements.txt
│   └── test_auth_service.py
├── product_service/
│   ├── Dockerfile
│   ├── main.py
│   ├── requirements.txt
│   └── test_product_service.py
├── frontend_service/
│   ├── Dockerfile
│   ├── main.py
│   ├── templates/
│   │   └── index.html
│   ├── requirements.txt
│   └── test/test_app.py
└── docker-compose.yml

Installation

  1. Clonez le dépôt :

    git clone https://github.com/votre-utilisateur/CESI_Superviser_dev_app.git
    cd CESI_Superviser_dev_app
  2. Construisez les images Docker et démarrez les conteneurs :

    docker compose up --build

    Cette commande démarre les services auth_service, product_service, frontend_service ainsi que MongoDB.

Accéder à l'application

L'interface utilisateur est accessible à l'adresse suivante :

http://localhost:8000

Tests

Vous pouvez exécuter des tests pour chaque service individuellement en utilisant les commandes suivantes :

Exécuter les tests pour auth_service

docker compose run --rm auth_service pytest
docker compose run --rm auth_service pytest /app/test.py

Exécuter les tests pour product_service

docker compose run --rm product_service pytest
docker compose run --rm product_service/app/test/test_main.py

Exécuter les tests pour frontend_service

docker compose run --rm frontend_service pytest

Explication des tests

  • auth_service : Vérifie l'inscription et l'authentification des utilisateurs.
  • product_service : Vérifie la gestion des produits et du panier.
  • frontend_service : Vérifie que la page d'accueil affiche correctement les produits.

Nettoyer les conteneurs

Pour arrêter tous les services et nettoyer les conteneurs, utilisez la commande suivante :

docker compose down
docker compose down --volumes --rmi all

Visualisation des bases de données dans VS Code

Pour visualiser les bases de données authdb et productdb avec l'extension MongoDB de VS Code, suivez les étapes ci-dessous :

  1. Ouvrez l'extension MongoDB dans VS Code.
  2. Cliquez sur le bouton + pour ajouter une nouvelle connexion.
  3. Sélectionnez "Open Form" pour entrer l'URL de connexion manuellement.
  4. Utilisez les URL suivantes pour chaque base de données :
    • authdb : mongodb://localhost:27017/authdb
    • productdb : mongodb://localhost:27018/productdb
  5. Cliquez sur "Connect" pour vous connecter à chaque base de données.

Dépannage

Si vous rencontrez des problèmes avec Docker, essayez de reconstruire les conteneurs :

docker compose up --build --force-recreate
docker exec -it mongo-auth bash
mongosh
use authdb;
db.users.find();
db.users.find().pretty();
docker exec -it mongo-product bash
mongosh
use productdb;
db.products.find();
db.products.find().pretty();

request postman

Health check [GET]

http://localhost:8001/health
    

Exemple de retour : { "auth_service": true }

Product detail [GET]

http://localhost:8002/products/{id}
    

{id} = "id": "675f0aeb846059bec45617dc" de products

return Example : { "product": { "description": "Comfortable running sneakers for everyday use.", "id": "675f0aeb846059bec45617dc", "image": "/products/675f0aeb846059bec45617dc/image", "name": "Running Sneakers", "price": 79.99, "storage_quantity": 120 } }

Product image [GET]

http://localhost:8002/products/{id}/image
    

{id} = "id": "675c5d38e4de3534ea4800dc" de products

Retrun display image

All products[GET]

http://localhost:8002/products

Return Example : { "products": [ { "description": "Comfortable running sneakers for everyday use.", "id": "675f0aeb846059bec45617dc", "image": "/products/675f0aeb846059bec45617dc/image", "name": "Running Sneakers", "price": 79.99, "storage_quantity": 120 }, { "description": "Comfortable Jogging for everyday use.", "id": "675f0aeb846059bec45617dd", "image": "/products/675f0aeb846059bec45617dd/image", "name": "Jogging", "price": 79.99, "storage_quantity": 120 } ] }

Sign up [POST]

http://localhost:8001/auth/signup
    

body: { "username": "user", "email": "user@example.com", "password": "password" } return : { "message": "User created successfully" }

Login [POST]

http://localhost:8001/auth/login
        

body: { "username": "user", "password": "password" } return example : { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjc1YzVkNjY1NzgzYWEwODZhYTA5MTg5In0.eCXmxQ5S2cv0h2Of1l6x5MBWZwxwZ41MaHAxsGonJZI" }

Validate token [GET]

http://localhost:8001/auth/validate

Headers: Key: Authorization = token

Add product to cart [POST]

http://localhost:8002/cart
        

Body: { "product_id": "{id}", "quantity": 1 } example: { "id_product": "675f0aeb846059bec45617dc", "quantity": 1 } {id} = id product

return : { "message": "Product added to cart" }

Headers: Key: Authorization = token

Get cart [GET]

http://localhost:8002/cart
        

Headers:

Key: Authorization = token

return Example :

{ "cart": [ { "product": { "description": "Comfortable running sneakers for everyday use.", "id": "675f0aeb846059bec45617dc", "image": "/products/675f0aeb846059bec45617dc/image", "name": "Running Sneakers", "price": 79.99 }, "quantity": 2, "total_price": 159.98 } ] }

About

Superviser et assurer le développement des applications

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 41.2%
  • CSS 26.7%
  • JavaScript 17.3%
  • Python 13.3%
  • Dockerfile 0.8%
  • Batchfile 0.3%
  • Other 0.4%