Skip to content

Latest commit

 

History

History
137 lines (88 loc) · 8.4 KB

README.md

File metadata and controls

137 lines (88 loc) · 8.4 KB

visitors GitHub Repo stars GitHub pull requests GitHub closed issues

Teste Automatizado de Autenticação de Usuário

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.

👩‍🔧 Linguagens e Ferramentas

JavaScript Jest Express.js MongoDB JWT Visual Studio Code Git GitHub

🚩 Contribua com o projeto

  • Realize o Fork
  • Faça as modificações necessárias
  • Realize a Pull Request (PR)

💻 Rodando o Projeto

# 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.

🗃️ Fucionalidades do Projeto

  • 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.

🔀 Testes realizados

End-to-End (e2e) Tests

  • 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.

Integração

  • 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.

Unitários

  • 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.

✅ Resultado dos Testes

Testes-Automatizados-Projeto

👩‍💻 👨‍💻 Desenvolvedores


Bruno Lopes

Christiane Barbosa

João Marcos

Marília Pinheiro Alves

Patrick Farias