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)
}
}
});
});