0
respostas

[Projeto] Opinião so bre o código

Prezados,

Fiz os exercícios de teste da rota login, e gostaria da opinião dos senhores sobre meu código, uma vez que dado o desafio pesquisei formas complementares de lidar com o código que até então não haviam sido abordadas aqui:

import { afterEach, beforeEach, expect } from "@jest/globals";
import request from "supertest";
import app from "../../app.js";
import AuthService from "../../services/authService.js";
import UsuariosService from "../../services/usuariosService.js";

const authService = new AuthService();
const usuarioService = new UsuariosService();

const port = 3000
let server;

beforeEach(() => {
    server = app.listen(port)
});

afterEach(() => {
    server.close()
});


describe("Testando a rota login (POST)", () => {
    it("O login deve possuir e-mail e senha para se autenticar", async () => {
        const loginMock = {
            email: "wesley.arruda@teste.com.br"
        };

        await request(server)
            .post("/login")
            .send(loginMock)
            .expect(500)
            .expect('"A senha de usuario é obrigatório."')
    })
    it("O login deve validar se o usuário está cadastrado", async () => {
        const loginMock = {
            email: "teste@com.br",
            senha: "qualquersenha"
        }

        await request(server)
            .post("/login")
            .send(loginMock)
            .expect(500)
            .expect('"Usuario não cadastrado."')
    });
    it("O login deve validar e-mail e senha incorretos", async () => {
        const usuarioTeste = {
            nome: "Wesley",
            email: "wesley@teste.teste",
            senha: "wesleyteste"
        }
        let usuarioCriado;
        try {
            usuarioCriado = await authService.cadastrarUsuario(usuarioTeste)
            const loginTeste = {
                email: usuarioTeste.email,
                senha: "outrasenha"
            }
            
            await request(server)
                .post("/login")
                .send(loginTeste)
                .expect(500)
                .expect('"Usuario ou senha invalido."')

        } finally {
            if (usuarioCriado){
                await usuarioService.excluirUsuario(usuarioCriado.content.id)
            }
        }
    });
    it("Deve retornar um accessToken, caso haja sucesso.", async () => {
        const usuarioTeste = {
            nome: "Wesley",
            email: "wesley@teste.teste",
            senha: "wesleyteste"
        }
        let usuarioCriado;
        try {
            usuarioCriado = await authService.cadastrarUsuario(usuarioTeste)
            const loginTeste = {
                email: usuarioTeste.email,
                senha: "wesleyteste"
            }
            
            const resposta = await request(server)
                .post("/login")
                .send(loginTeste)
                .expect(201)
            
            expect(resposta.body).toHaveProperty("accessToken")

        } finally {
            if (usuarioCriado){
                await usuarioService.excluirUsuario(usuarioCriado.content.id)
            }
        }
    });
});