Restful API Functional testing

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:

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

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *