Teste programador Backend PHP Júnior (Laravel)
As tarefas de CRUD são rotinas muito comuns no dia a dia de desenvolvedores web, o objetivo principal do desafio é fazer um CRUD de Usuários. Somente a rota API é importante, não se preocupe com o frontend. Todos testes de funcionamento do sistema serão realizados através do Postman. Testes uniários com PHPUnit são um plus. Espera-se que o candidato tenha bons conhecimentos em PHP e saiba o mínimo do framework Laravel. Para persistencia dos dados deve ser utilizado algum banco de dados relacional como por exemplo PostgreSQL ou MariaDB.
- Faça um fork do projeto.
- Envie um e-mail para (contato at ensolucoes dot com) assim que o PR for submetido informando que o desafio foi finalizado.
Construir uma API backend em Laravel que implementem um CRUD e os seguintes endpoints:
Endpoint | Method |
---|---|
/ping | POST |
/auth | POST |
/user | POST |
/user | PUT |
/user | DELETE |
/user/{:id} | GET |
O Ping é público, usado para saber se o server está online.
Este endpoint irá possuir um header com Authorization e irá enviar via JSON login e senha em um método [POST]. Ele irá retornar um JSON quando der erro e um JSON quando for sucesso.
HTTP/2 200
{
"status":"success",
"message":"Usuário criado e JWT encontrado",
"tokenjwt":"eyJhbGciOi-RkOM8Hjc5DYNJuqyEy3gvy_IMjcu2w-hl2yHilvPNP_UK0ocUxaKdsD5oS5fV-TYlfH_k",
"expires":"2019-07-05",
"tokenmsg":"use o token para acessar os endpoints!",
"User":{
"id":345,
"nome":"Programador Backend PHP Júnior",
"cpf":"12345678909",
"email":"[email protected]",
"createdAt":"2019-07-03 07:09:08",
"updatedAt":"2019-07-03 07:09:08"
}
}
HTTP/2 500
{
"status":"error",
"message":"Usuário não pode ser autenticado!"
}
Este endpoint deverá ser responsável por todo CRUD, ele deverá trazer informações do Usuário como:
id nome cpf email created_at updated_at
no formato JSON.
- Organização do código e simplicidade na lógica de programação
- Utilização de boas práticas (PSRs)
- Deixar sempre a regra de negócio o mais desacoplada possível.
- Criar as migrations e seeds para validação (obrigatório)
- JWT (não obrigatório porém será considerado diferencial)
- Criar os mocks de teste (não obrigatório porém será considerado diferencial)