authentification-avancé-MERN-Stack

1-DOCKER

Premiere etape 1 : L'instalation de Docker sur Windows.

Deusieme étape 2 :** L'instalation de Wsl 2 par Microsoft Store.

Troisieme étape 3 :** L'instalation de Ubuntu par Microsoft Store.

<-- Les étapes pour back-end -->

1Créer un Dockerfile.

Dockerfile est un fichier qui liste les instructions à exécuter pour build une image. Il est lu de haut en bas au cours du processus de build.

    FROM node:16
    WORKDIR /app
    COPY package.json .
    RUN npm install
    COPY . ./
    EXPOSE 9000
    CMD ["npm", "start"]

2** Créer un network, et lui donner le nom de livraison-marhaba-back-end-net.

docker network create livraison-marhaba-back-end-net

3Étape : Executez un container basé sur l'image mongo, nommez-le livraison-marhaba-back-end-db et faites-le utiliser avec le network livraison-marhaba-back-end-net.

docker container run -d --name livraison-marhaba-back-end-db -v livraison-marhaba-back-end-db:/data/db --network livraison-marhaba-back-end-net mongo

4Étape : Entrer dans le dossier du serveur où se trouver Dockerfile et creer cette image et nommez-la livraison-marhaba-back-end-docker:test et faire un build.

docker build -t livraison-marhaba-back-end-docker:test .

5Étape : Exécutez un container basé sur cette image que vous venez de créer, nommez-le livraison-marhaba-back-end et faites-le utiliser avec le network livraison-marhaba-back-end-net.

docker container run -d --name livraison-marhaba-back-end -v ${pwd}:/app -v /app/node_modules --network livraison-marhaba-back-end-net -p 9000:9000 livraison-marhaba-back-end-docker:test

<-- Les étapes pour front-end -->

1 :* Créer un Dockerfile.

    FROM node:16
    WORKDIR /views
    COPY package.json .
    RUN npm install
    COPY . ./
    EXPOSE 3000
    CMD ["npm", "start"]

2 :* Créer un network, et lui donner le nom de livraison-marhaba-front-end-net.

docker network create livraison-marhaba-front-end-net

3 :* Entrer dans le dossier du serveur où se trouver Dockerfile et creer cette image et nommez-la livraison-marhaba-front-end-docker:test et faire un build.

docker build -t livraison-marhaba-front-end-docker:test .

4 :* Exécutez un container basé sur cette image que vous venez de créer, nommez-le livraison-marhabafront-end- et faites-le utiliser avec le network livraison-marhabafront-end--net.

docker container run -d --name livraison-marhaba-front-end- -v ${pwd}:/app -v /app/node_modules --network livraison-marhaba-front-end-net -p 3000:3000 livraison-marhaba-front-end-docker:test

|------------------------ Testing ------------------------|

Étape 1 : Installer la bibliothèque jest et supertest

npm i --save-dev jest supertest

Étape 2 : Créer un tests.test.js

1- Exiger supertest et index.js

    const request = require('supertest');
    const app = require('./index');

2- Créer la fonction describe(name, fn)

describe("POST /api/auth/login", () => {
let body = {
    email: "",
    password: ""
}

describe("Check your email to active your account", () => {
    test("Check your email to active your account", async () => {
        body = {
            email: "fauxEmail",
            password: "fauxPwd"
        }
        const response = await request(app).post("/api/auth/login").send(body)
        expect(response.text).toBe('Check your email to active your account')
    })
})

describe("Email or password is incorect", () => {
    test("Email or password is incorect", async () => {
        body = {
            email: "wlahlali343@gmail.com",
            password: "123456"
        }
        const response = await request(app).post("/api/auth/login").send(body)
        expect(response.text).toBe('Email or password is incorect')
    })
})

describe("Fill the all fields to login", () => {
    test("Fill the all fields to login", async () => {
        body = {
            email: "",
            password: ""
        }
        const response = await request(app).post("/api/auth/login").send(body)
        expect(response.text).toBe('Fill the all fields to login')
    })
})

})

3- A l'iterier de la fonction describe, crée trois test.

Étape 3 : Enfin, exécutez le test.

npm test