Testear y validar servicios REST en Java puede ser bastante complejo si no usamos frameworks adecuados. Rest-Assured es un Java DSL (Domain Specific Language) construido sobre la capa HTTP Builder que permite simplificar la construcción de test sobre una API REST.
Este tipo de test se suelen ejecutar un paso después del proceso de integración continua, consumiendo APIs REST después de que hayan sido desplegadas.
Cuando validamos un recurso REST, hay que fijar el foco en una serie de aspectos que nos devuelven como respuesta las llamadas a una API:
-
El código de respuesta HTTP (response code)
-
Las cabeceras HTTP de la respuesta
-
El contenido de la respuesta en JSON o XML (payload)
Cada test debe fijar el foco en un única responsabilidad e incluir una única assertion.
Existen distintas soluciones pero una de las que más me ha llamado la atención por su simplicidad y por cumplir los requisitos anteriormente expuestos es REST-assured, un framework desarrollado por Jayway.
Rest-assured ofrece una serie de características bastante útiles como sintaxis DSL, validación Xpath, usar JsonPath, registrar parsers para MIME-Types, file upload, verificar cabeceras HTTP o cookies...
Como ejemplo podemos ver el siguiente código:
Primer paso. Agrega las siguientes dependencias en tu pom.xml de Maven
Asumiendo el siguiente JSON de respuesta valido:
Podemos hacer un test con la siguiente sintaxis:
Podemos ver más ejemplos en la documentación oficial de Rest-assured.
Más información | Rest-assured, Rest-assured en Devoxx Vía | Un poco de java, hasCode