Giter Club home page Giter Club logo

wordcheck's Introduction

wordcheck

Aplicação backend que faz validação de senha
Leandro Silva Yamaniha

Resumo

Será exposto um endpoint que validará a senha de acordo com as seguintes definições:

  • Nove ou mais caracteres
  • Ao menos 1 dígito
  • Ao menos 1 letra minúscula
  • Ao menos 1 letra maiúscula
  • Ao menos 1 caractere especial
  • Considere como especial os seguintes caracteres: !@#$%^&*()-+
  • Não possuir caracteres repetidos dentro do conjunto Nota: Espaços em branco não devem ser considerados como caracteres válidos.

Para validar a senha foi usado a seguinte lógica:

Diagrama

A senha a ser validada será informada no body da requisição do endpoint, verbo POST, http://localhost:8080/validate/password, ,cujo o payload será:

{
  "password": "senha"
}

Quando a senha for vâlida será retornado o httpStatus 200, com o seguinte body:

{ "valid": true }

Quando a senha for inválida será retornado , httpStatus 400 e o seguinte response body:

{ "valid": false }

Se for gerado o body invâlido será retornado httpStatus 400, com o atributo errors. Exemplo:

curl -X POST \
  http://localhost:8080/validate/password \
  -H 'accept: */*' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'postman-token: 2a95c68a-221f-aa2f-b0ed-1cd93f326f55'

Response Body com HttpStatus 400 :

{
    "errors": {
        "message": "Malformed request body"
    }
}

Se for informado senha null. Exemplo:

curl -X POST \
  http://localhost:8080/validate/password \
  -H 'accept: */*' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'postman-token: f2e6ef07-2398-f213-4610-7cb297cbd075' \
  -d '{
	"password":null
}'

O response body serâ:

{
    "errors": {
        "password": "não deve ser nulo"
    }
}

Requisitos

Java 11

Maven

Spring Tools 4 for Eclipse

IntelliJ

Eclipse - Java Code Coverage

Instalação OS X & Linux:

Java 11 - SDKMAN:

Instalação SDKMAN

sdk i java 11.0.2-open

Maven

Instalação Maven

Execução e Compilação

Compilação e geração do artefato jar

Acessar a pasta raiz do projeto:

sdk use java 11.0.2-open
mvn clean package

Execução

java -jar target/wordcheck-0.0.1-SNAPSHOT.jar

Testes do enpoint

Podem ser realizados os testes de 2 formas:

  • Como o projeto implementa o uso de openapi, é gerado um front para testes no endpoint via swagger ui, que é acessado por : http://localhost:8080/swagger-ui.html
  • Ou via curl, postman ou qualquer cliente que faça consumo de api REST, como por exemplo o postman.
curl -X POST "http://localhost:8080/validate/password" -H  "accept: */*" -H  "Content-Type: application/json" -d "{\"password\":\"AbTp9!fok\"}"

Outras informações

Foi incluido no projeto :

  • check style
  • jacoo para medir cobertura, além da trava de cobertura minima de 90%, além do relatório de coverage
  • apache pmd para analise de código
  • foi utilizado sonarqube, através da imagem docker, acessado via : docker-compose up -d. Neste caso é necessário ter o docker instalado.

wordcheck's People

Contributors

leandro-yamaniha avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.