Skip to content

christianebs/projeto-testes-automatizados-js

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published