Esta app desarrollada en Spring expone una API con dos endpoint /api/v1/auth/register que recibe un usuario para registrar y que devuelve entre otros datos el token JWT implementado con Spring Security para ser usado en el endpoint /api/v1/auth/login que con solo enviarle el token devuelve los datos del usuario y un nuevo token de logueo.
- Java 1.8
- Gradle Para manejar las dependencias.
- Spring Boot
- H2
Json para importar a Postman para el testeo de la API: Localhost
- La aplicación utiliza el puerto 8083 si desea cambiarlo puede hacerlo desde el archivo application.yml en la carpeta src/main/resources.
- Se utiliza un archivo .env para guardar la variable de entorno SECRET_KEY que es la que se utiliza para firmar el token JWT. Se debe crear dicho archivo en src/main/resources y agregar la variable de entorno de la siguiente manera:
SECRET_KEY= "clave secreta"
La clave puede ser generada en la siguiente web
- Para correr la aplicación se debe ejecutar el siguiente comando en la carpeta raíz del proyecto (una vez bajadas todas las dependencias y tener configurado el jdk a java 1.8):
gradle bootRun
El reporte de Jacoco puede ser encontrado dentro de la carpeta build/reports/jacoco/test/html/index.html Para correr los test de Jacoco se debe ejecutar el siguiente comando en la carpeta raíz del proyecto posteriormente al build con gradle:
gradle build
gradle test jacocoTestReport
- /api/v1/auth/register
- /api/v1/auth/login
├───.main
│ ├───java
│ │ └───com
│ │ └───globallogic
│ │ └───challenge
│ │ ├───config
│ │ ├───controller
│ │ ├───dto
│ │ ├───exception
│ │ ├───model
│ │ ├───repository
│ │ └───service
│ └───resources
- En el paquete config se encuentra la configuración de Spring Security.
- En el paquete controller se encuentran los controladores de la API.
- En el paquete dto se encuentran los objetos de transferencia de datos.
- En el paquete exception se encuentran las excepciones personalizadas.
- En el paquete model se encuentran los modelos de la base de datos.
- En el paquete repository se encuentran los repositorios de la base de datos.
- En el paquete service se encuentran los servicios de la API.
- En el paquete resources se encuentra el archivo application.yml con la configuración de la aplicación.