Um projeto criado para um desafio técnico. É uma API que permite verificar a força da senha baseado em configurações enviadas em uma requisição.
Primeiramente clone o repositório na máquina local. Têm duas maneiras de rodar o projeto. Uma com docker(recomendado) e outra sem.
Desse modo é necessário ter instalado o docker e o docker compose.
Você pode criar o ambiente virtual e instalar as depêndencias para parar os erros de import, mas não é necessário.
Ambiente Virtual:
python -m venv venv
Instalando dependências:
pip install -r requirements.txt
Utilize o comando docker compose up
docker compose up
Com isso o projeto já está funcionando em um container docker sem precisar de mais configurações
Caso queria excluir os containers execute:
docker compose down
Crie o ambiente virtual com o comando
python -m venv venv
Se você estiver no windows é necessário que rode o comando que permite a criação do venv antes
Set-ExecutionPolicy AllSigned
Ative o ambiente virtual.
windows:
.\venv\Scripts\activate
linux:
source venv/bin/activate
Agora instale as dependências
pip install -r requirements.txt
Por último rode a api com
python manage.py runserver
obs: Irá rodar na porta 8080
Faça uma requisição POST para o endpoint /api/verify
Se rodar localmente a url será http://localhost:8080/api/verify
Essa requisição precisa possuir a senha e as regras que vão ser utilizadas para validar ela
Ex:
POST /api/verify
Host: http://localhost:8080
Authorization: None
Content-type: application/json
{
"password": "TesteSenhaForte!123&",
"rules": [
{"rule": "minSize","value": 8},
{"rule": "minSpecialChars","value": 2},
{"rule": "noRepeated","value": 0},
{"rule": "minDigit","value": 4}
]
}
{
"verify": false,
"noMatch": ["minDigit"]
}
Se uma regra falhar, a chave verify da resposta vem falsa e o nome da regra vai para a chave noMatch (Pode ter várias regras dentro)
- minSize: tem pelo menos x caracteres.
- minUppercase: tem pelo menos x caracteres maiúsculos
- minLowercase: tem pelo menos x caracteres minúsculos
- minDigit: tem pelo menos x dígitos (0-9)
- minSpecialChars: tem pelo menos x caracteres especiais ( Os caracteres especiais são os caracteres da seguinte string: "!@#$%^&*()-+/{}[]" )
- noRepeated: não tenha nenhum caractere repetido em sequência ( ou seja, "aab" viola esta condição, mas "aba" não)
Para rodar os testes use o comando:
python manage.py test