-
Debes desarrollar una API REST en Spring Boot con las siguientes funcionalidades:
- Sign up usuarios.
- Login usuarios.
- Sumar dos números. Este endpoint debe retornar el resultado de la suma y puede ser consumido solo por usuarios logueados.
- Historial de todos los llamados a todos los endpoint. Responder en Json, con data paginada.
- Logout usuarios.
- El historial y la información de los usuarios se debe almacenar en una database PostgreSQL.
- Incluir errores http. Mensajes y descripciones para la serie 4XX.
-
Esta API debe ser desplegada en un docker container. Este docker puede estar en un dockerhub público. La base de datos también debe correr en un contenedor docker. Recomendación usar docker compose.
-
Debes agregar un Postman Collection o Swagger para que probemos tu API.
-
Tu código debe estar disponible en un repositorio público, junto con las instrucciones de cómo desplegar el servicio y cómo utilizarlo.
Probablemente la solución para el login/signup/logout no sea la mejor, se decidió ir por el camino de utilizar cookies/sessions, pero la mejor forma es manejar un token como jwt y usar cookies por front.
Lo ideal para las pruebas es hacerlas a traves de swagger
para setear las cookies de forma correcta. Si se desea hacer por postman por ejemplo o cURL tener en cuenta de enviar la cookies por header.
El valor de la cookie esta compuesto por un token jwt el cual tiene un expiracion de 30min.
Ejemplo:
curl --location --request GET 'http://localhost:8009/V1/arithmetical/sum/1/2' \
--header 'Cookie: jwt-token=eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzkwMDI5NDM5NzQsInN1YiI6ImhvbG9hMiJ9.lj8sgMzKCVwqPctl77e39Sw9iGqabbnPTUvFhLRK9ow;
Path=/; Max-Age=6000; Expires=Thu, 09 Dec 2021 02:45:44 GMT; Secure; HttpOnly; JSESSIONID=3C463504F67A1FE39F736F35686F3292'
En primer lugar hay q tener instalado docker-compose
. Se instala de la siguiente manera:
Para mac
brew install docker-compose
Para linux
apt install docker-compose
Clonar este repositorio: https://github.com/macetosella/tenpo-api
Luego ejecutar el siguiente comando, desde la raiz del projecto
docker-compose up
Comprobar que los containers esten levantados
docker ps
Deberían haber dos, la api y la base de datos.
URL Local: http://localhost:8009/
http://localhost:8009/swagger-ui/
Este endpoint se utiliza para dar de alta usuarios y es de tipo POST (ver swagger para mas información).
Endpoint para login de usuario, recibe un nombre y un password, chequea que sean validos y setea un jwt por cookie .
Este endpoint se usa para el deslogeo de un usuario, lo que hace es matar la cookie, para probarlo es necesario hacerlo desde un navegador.
Este recurso recibe dos parametros enteros y devuelve la suma, previamente chequeando que reciba por cookie un jwt valido.
Endpoint que muestra el historial de todas las api calls de la api, paginadas. Recibe la pagina y el tamaño de las mismas.
Para la ejecucion de los test unitarios utilice jUnit.
Para la cobertura de código se utilizó la herramienta Codecov, muestra un 93% de coverage.