tqi_evolution_backend_2021

Projeto avaliação TQI Evolution 2022

Sugestão para o back-end de um: sistema de análise de crédito. Projeto que tive o prazer em desenvolver para avaliação do tqi_evolution_backend_2021 da TQI 🧡💛.

🧮 Framework utilizados

  • Java JDK 11
  • IDE IntelliJ
  • Documentação e consumo no Swagger, Postman e Insomnia
  • Security - JWT e Spring Security
  • Testes - Junit, MockMVC e Rest-Assured
  • Banco de Dados MySQL
  • Estrutura - spring initializr

    ✨ Desafio

    🔸 Visão geral: Sistema de Análise de Crédito para uma Empresa de Emprestimos

    🔸 Cliente
    Cadastro de clientes: nome, e-mail, CPF, RG, endereço completo, renda e senha.
    Consulta do Cadastro dos Clientes
    Demais metodos de alteração e exclusão do cadastro

    🔸 Emprestimo
    Solicitação de empréstimo: valor do empréstimo, data da primeira parcela e quantidade de parcelas.
    Acompanhamento das solicitações de empréstimo: retornar no mínimo o código do empréstimo, o valor e a quantidade de parcelas.
    Detalhes de um dos empréstimos do cliente retornar: código do empréstimo, valor, quantidade de parcelas, data da primeira parcela, e-mail do cliente e renda do cliente.

    🔸 Login
    Autenticação será realizada por e-mail e senha.
    Classe e repositorio de Usuários
    Controlador para autenticação

    👣 Solução

    Na Homepage do Swagger será apresentado quatro controladores:

    🔻 Controle de Auteenticação - realiza geração de token para autenticação na API;
    🔻 Cliente Controller - Contrala os serviços de cadastro, consulta, alteração e exclusão do Banco de dados;
    🔻 Emprestimo Controller - Realiza solicitação de emprestimo, acompanhamento, detalhe, alteração e exclusão;
    🔻 Status Aplicação - Testa se aplicação está funcionando.
    

    Demo Animation

    🔸 Security
    Utilização do JWT para geração e validação de token para autenticação.
    Spring Security para solução de segurança
    Autenticação Inmemory e via Banco de dados

    🔗No Controlador de acesso:

    🔻 Realiza o metodo post, utilizando o email e a senha do usuário;
    🔻 Cadastrado, no Banco, dois usuários para teste:
           Perfil ADMIN: email (admin@email.com) senha (654321)
           Perfil User: email (usuario@email.com) senha (123456)
    🔻 Executando o metodo post, recebe o token e cadastra no autorizador (Cadeaddo no canto superior direito);
    🔻 Pronto! Você está autorizado para utilizar os serviços que possui autenticação liberada(conforme consta na descrição de cada metodo.
    

    Demo Animation

    🔸 Controlador de cliente - Composto dos seguintes metodos:
    🔹 Método GET (sem parametro) - Consulta a base de clientes na Empresa;
    🔹 Método GET (com id do cliente) - Consulta o cadastro de um cliente na Empresa;
    🔹 Método Post (sem parametro) - Realiza o cadastro de clientes na Empresa;
    🔹 Método Put (com id do cliente) - Altera o cadastro de clientes na Empresa;
    🔹 Método Delete (com id do cliente) - Exclui um cliente do cadastro na Empresa;



    Demo Animation

    🔸 Controlador de Emprestimo - Composto dos seguintes metodos:
    🔹 Método GET (sem parametro) - Consulta os Emprestimos dos clientes;
    🔹 Método GET (com id do cliente) - Acompanhamento dos Emprestimos de um cliente;
    🔹 Método Post (sem parametro) - Realiza o cadastro de Emprestimo para o cliente;
    🔹 Método Put (com id do cliente) - Altera informações do Emprestimo do cliente: atualiza, finaliza, suspende e cancela;
    🔹 Método Delete (com id do cliente) - Exclui um emprestimo do sistema;

    Demo Animation

🔸 Testes
Utilização do JUnit, REST-Assured e mockmvc para testes unitários e integração.
Cobertura de teste das classe Controller
Cobertura de testes das classes de serviço e repository

🤝 Fontes de Estudo e contribuições

Bootcamp da DIO.
Desenvolvimento de API com a AlgaWorks.
Token com JWT e Spring Security Expertos Tech.
Spring Boot e Spring Securit com DevDojo.
Testes Unitários e integração com Julio de Lima.


Disponibilizado por Emerson.