Introducción
Llevo unos días trabajando en un proyecto interno para realizar pruebas funcionales de la API que proporcionamos en Ticketbis (http://api.ticketbis.com/).
Buscando simplicidad y robustez decidimos hacer uso de Restfulapi, el plugin de grails (https://github.com/restfulapi/restful-api) que nos proporciona las clases necesarias para realizar “testing” funcional sobre cualquier API Restful. El proyecto está siendo tan interesante que me he propuesto hacer el siguiente post.
Antes de ponernos manos a la obra comentar un par de detalles:
- Las pruebas se han realizado sobre la API pública que proporciona JSONPlaceHolder (http://jsonplaceholder.typicode.com/)
- Podéis descargar el proyecto con más ejemplos en https://github.com/aaguila/rest-api-testing
Configuración
El plugin restfulapi nos permite hacer uso de Spock poder basar nuestras pruebas en la metodología TDD. Para ello vamos a necesitar importar el plugin net.hedtech.restfulapi.spock.
Nuestra clase deberá extender de RestSpecification.
Test petición GET
Para “testear” la llamada necesitaremos construir la petición get con las cabeceras.
get("[URL_PETICIÓN]") {
headers[[CABECERA]] = [VALOR_CABECERA]
}
Y finalmente comprobar que la respuesta que obtenemos de la petición get es la esperada:
- Obtenemos las cabeceras de la petición mediante:
responseHeader([HEADER]) - Para obtener el estado de la petición usaremos:
response.status
Si queremos validar el JSON de la respuesta podemos hacer uso de grails.converters.JSON.
def json = JSON.parse response.text
Veámoslo con el siguiente ejemplo donde validamos una petición get mediante la que obtenemos el post de un blog.
Test petición PUT
Por último vamos a ver como podemos "testear" una petición PUT de la API.
Construiremos la petición PUT con las cabeceras y el cuerpo.
put("[URL_PETICIÓN]") {
headers[[CABECERA]] = [VALOR_CABECERA]
body {
"""
{
"[CLAVE]": "[VALOR]",
"[CLAVE_N]": "[VALOR_N]"
}
"""
}
}
Vemos como en el siguiente ejemplo validamos la respuesta de una petición put en la que modificamos un post del blog.
Conclusiones
El plugin restfulapi de grails nos permite de una forma sencilla probar funcionalmente las diferentes peticiones a la api:
- GET
- POST
- PUT
- DELETE
El hecho de que proporcione Spock framework nos aporta mayor sencillez y legibilidad a nuestros "teses".
Bibliografía:
1. https://github.com/restfulapi/restful-api
2. https://github.com/spockframework/spock-example