/backend-challenge-itau

Desafio de teste itau

Primary LanguageJava

PROJETO BACKEND-CHALLENGE-ITAU

DESAFIO TESTE ITAU-UNIBANCO

Este código tem como objetivo responder ao desafio enviado pelo Itaú-Unibanco.


1º) Criação de API que valida senha

  • Linguagem JAVA
  • Framework Spring
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.1.RELEASE)

2º) Criação de Teste Unitário

3º) Criação de Teste Integrado

Requisitos

JAVA JDK_1.8

Baixar o projeto Spring Boot + JPA + WEB + H2 - [GitHub](https://github.com/paullohdiniz/backend-challenge-itau.git)	

Roda o mvn clean install

Subi a aplicação através do comando mvn spring-boot:run

Solução

   ### Arquitetura Hexagonal
   
   - Criação de RestController utilizando springframework para expor a API
   	--- EndPoiter - GET http://localhost:8080/validasenha/{senha} 
	--- Ex: http://localhost:8080/validasenha/AbTp9!fok
   
   - Chamada a partir do REST para serviço ValidaSenhaService, que foi instaciado utilizando a injeção de dependência do spring;
   
   - Serviço como domínio do negócio, realiza as regras de negócio;
   	--- Utilização da biblioteca REGEX para regras de validação da string. Ia utilizar o @Value com propriedade, mas não achei tão necessário.
	--- Criação de método para validar repetição (utilizado HashSet para melhor custo computacional O(n)).
   
   - Criação do Repository, RepositoryImpl e RepositoryCustom para apoiar a dinâmica do Teste Integrado;
   	--- O pattern utilizado na relação das 3 classes conforme sugerido pelo framework.
	
   - Criação de Teste Unitário para teste das regras de negócio;
   
   - Criação de uma simulação de Teste Integrado, mocando o acesso ao banco que não se fez necessário para este exemplo.

Conclusão

Os testes inferidos pelo Teste Unitário foram realizados com sucesso, bem como uma sequência de teste direto na API utilizando as chamadas do próprio browser.