O projeto consiste em uma aplicação Node.js que oferece endpoints para autenticação de usuários e manipulação de informações de usuários. Utilizando o Express.js como framework web e o Mongoose para integração com o MongoDB, a aplicação permite criar novos usuários, autenticar usuários existentes e fornecer um token JWT para autenticação em requisições futuras. Além disso, são fornecidos endpoints protegidos por middleware de autenticação que exigem o uso de token JWT válido para acesso. A aplicação é modular, seguindo uma estrutura MVC, com controllers, serviços, middlewares e rotas claramente separados para facilitar a manutenção e os testes automatizados.
- Realize o Fork
- Faça as modificações necessárias
- Realize a Pull Request (PR)
# 1. Clone o projeto
git clone https://github.com/christianebs/projeto-testes-automatizados-js/
# 2. Instale as dependências
npm install
# Configure o .env para conseguir rodar o projeto
PORT=
SECRET_KEY=
MONGO_DB_URL=
Observações:
- As dependências estão definidas no arquivo package.json. Ao executar npm install, todas elas serão instaladas
- O arquivo package.json já contém a configuração necessária na seção de scripts:
- Não é necessário inicializar um novo projeto Node.js com npm init -y, pois ao clonar o repositório, você já terá um package.json configurado.
-
Cadastro de Usuário: Permite que novos usuários se cadastrem na aplicação fornecendo um nome, um e-mail válido e uma senha.
-
Autenticação de Usuário: Possibilita que usuários autentiquem-se na aplicação através do fornecimento de um e-mail válido e uma senha correspondente.
-
Geração de Token JWT: Após a autenticação bem-sucedida, a aplicação gera um token JWT que é retornado ao cliente. Esse token pode ser usado para autenticar futuras requisições e acessar endpoints protegidos.
-
Mudança de Senha: Fornecendo um token JWT válido, os usuários podem solicitar a mudança de sua senha.
-
Validação de E-mail: Antes de cadastrar um novo usuário ou autenticar um usuário existente, a aplicação valida se o e-mail fornecido está em um formato válido.
-
Proteção de Rotas: Alguns endpoints da aplicação são protegidos por um middleware de autenticação. Isso significa que o acesso a essas rotas só é permitido se o cliente fornecer um token JWT válido.
-
session.test.js - Testes do Controller de Sessão:
-
CREATE SESSION:
- Retorna status 400 quando um email válido não é passado.
- Retorna status 400 quando uma senha válida não é passada.
- Retorna status 404 quando o usuário não é encontrado.
- Retorna status 200 quando uma sessão é criada com sucesso.
-
user.test.js - Testes do Controller de Usuário:
-
CREATE USER:
- Retorna status 200 quando um novo usuário é criado com sucesso.
- Retorna status 400 quando um email válido não é passado.
- Retorna status 400 quando uma senha válida não é passada.
-
CHANGE PASSWORD:
- Retorna status 401 quando a senha é atualizada sem credenciais.
- Retorna status 200 quando a senha é atualizada com sucesso.
- integration-user-ctrl.test.js - Testes de Integração do Controller de Usuário:
- Retorna status 200 para um novo usuário criado no banco de dados.
- Retorna status 400 se o email é inválido.
- Retorna status 400 se a senha não é fornecida.
-
Controllers
-
session-ctrl.test.js - Testes do Controller de Sessão:
-
Retorna status 200 para um novo token gerado.
-
Retorna status 400 se o email é inválido.
-
Retorna status 400 se a senha não é fornecida.
-
Retorna status 404 se o usuário não é encontrado.
-
Retorna status 500 para erro interno do servidor.
-
user-ctrl.test.js - Testes do Controller de Usuário:
-
Retorna status 200 para um novo usuário criado.
-
Retorna status 400 se a senha não é fornecida.
-
Retorna status 400 se o email é inválido.
-
Retorna status 500 para erro interno do servidor.
-
Retorna status 200 se a senha é alterada com sucesso.
-
-
Services
-
session-service.test.js - Testes do Serviço de Sessão:
-
Gera um token com payload e opções corretas.
-
jwt.sign é chamado uma vez.
-
user-service.test.js - Testes do Serviço de Usuário:
-
Retorna um ID quando um novo usuário é criado.
-
Não rejeita a operação se já existir um usuário no banco de dados com o mesmo email.
-
Verifica se um usuário existe e a senha está correta.
-
Retorna falso se o usuário não existe.
-
Lança um erro se a senha está incorreta.
-
-
Utils
-
email-validator.test.js - Testes do Validador de Email:
-
Retorna falso para email vazio.
-
Retorna falso para formato de email inválido.
-
Retorna verdadeiro para formato de email válido.
-
Bruno Lopes |
Christiane Barbosa |
João Marcos |
Marília Pinheiro Alves |
Patrick Farias |
---|