Skip to content

InesR21/tenpo-api

 
 

Repository files navigation

Build Status codecov

img_2.png

Desafio Tenpo

Tabla de Contenidos

Tecnologias usadas

Requerimientos:

  1. 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.
  2. 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.

  3. Debes agregar un Postman Collection o Swagger para que probemos tu API.

  4. 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.

Comentarios

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'

Setup

Instrucciones

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.

API Url

URL Local: http://localhost:8009/

Servicios

Swagger

http://localhost:8009/swagger-ui/

Signup

Este endpoint se utiliza para dar de alta usuarios y es de tipo POST (ver swagger para mas información).

Login

Endpoint para login de usuario, recibe un nombre y un password, chequea que sean validos y setea un jwt por cookie .

Logout

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.

Sum

Este recurso recibe dos parametros enteros y devuelve la suma, previamente chequeando que reciba por cookie un jwt valido.

History

Endpoint que muestra el historial de todas las api calls de la api, paginadas. Recibe la pagina y el tamaño de las mismas.

Test

Unitarios

Para la ejecucion de los test unitarios utilice jUnit.

Cobertura

Para la cobertura de código se utilizó la herramienta Codecov, muestra un 93% de coverage.

About

Desafio Tenpo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.6%
  • Dockerfile 0.4%