Probando tu api Rest con el cliente de Intellij IDEA

0
4652

Índice de contenidos

  1. Introducción
  2. Entorno
  3. El primer test
  4. Entornos
  5. Almacenar datos entre tests
  6. Conclusiones
  7. Referencias

 

1. Introducción

Cuando desarrollamos nuestro api rest o tu aplicación necesita integrarse con otro de terceros, muchas veces nos preguntamos, ¿qué devuelve esto realmente? ¿Estoy haciendo las llamadas correctas? ¿Quién no ha hecho un curl o ha utilizado otras herramientas fuera de tu IDE? En este tutorial vamos a conocer cómo realizar estos tests con Intellij.

 

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Intellij Idea Ultimate 2019.3

 

3. El primer test

En nuestro proyecto, en cualquier directorio, creamos un fichero con extensión .http ,

Y el contenido, por ejemplo:

GET https://adictosaltrabajo.com
Accept: */*
Cache-Control: no-cache

Para ejecutar, sólo tendremos que darle al play como cualquier test en Intellij

Y mostrará la respuesta en la consola:

 

4. Entornos

Vale, está claro que sólo es un test de ejemplo. Pero cuando estamos desarrollando, a veces queremos probar en diferentes entornos. Por ejemplo en tu local y en el servidor de integración. Para ello, podemos crear un fichero definiendo los entornos y las variables:

Debe tener el nombre rest-client.env.json para que detecte los entornos.

{
  "local": {
    "host": "localhost:8080"
  },
  "pro": {
    "host": "adictosaltrabajo.com"
  }
}

Y se referencia la variable en el test:

GET https://{{host}}
Accept: */*
Cache-Control: no-cache
###

Al ejecutar, nos permitirá elegir el entorno.

Eligiendo pro, muestra en la consola la llamada con el valor de pro.

 

5. Almacenar datos entre tests

En muchas ocasiones, para consultar nuestro api necesitamos un token válido que adjuntar o cualquier otro dato que enviar a otras llamadas.

En el fichero de entorno, incluimos una variable, por ejemplo token.

{
  "local": {
    "host": "localhost:8080",
    "token": ""
  },
  "pro": {
    "host": "adictosaltrabajo.com",
    "token": ""
  }
}

Y se puede crear otro fichero http-client.private.env.json que almacene los datos sensibles, como por ejemplo el password del login. Este fichero se añadiría al .ignore del proyecto.

{
  "local": {
    "password": "localPass"
  },
  "pro": {
    "password": "proPass"
  }
}

El body de la petición se incluye debajo de la llamada, y el siguiente bloque permite definir una función que en este caso recupera el token de la respuesta y lo asigna a la variable token.

POST http://{{host}}/api/auth/login
Accept: */*
Cache-Control: no-cache
Content-Type: Application/Json

{"username": "stoledano@adictosaltrabajo.com", "password": {{passwrod}} }

> {%
    client.global.set("token", response.body.token);
%}

###
GET http://{{host}}/v1/documents?page=30
Accept: */*
Cache-Control: no-cache
Content-Type: Application/Json
Authorization: Bearer {{token}}

> {%
    client.test("Request executed successfully", function() {
        client.assert(response.status === 200, "Response status is not 200");
    });
%}

De tal manera que si ejecutamos el segundo test «v1/documents» la variable token tiene el valor recuperado en la anterior petición. Al incluir la función de comprobación status se ve que no recibimos un 401 y que el token se está incluyendo correctamente.

Se puede reutilizar en otros test de este mismo fichero o en otros, pues lo almacena de manera global. Cuando el token caduque, basta con realizar sólo la llamada del token.

 

6. Conclusiones

Creo que la puesta en marcha de estos test es muy rápida y permite centralizar nuestro desarrollo en una sola herramienta e incluso la facilidad de almacenarlo con el proyecto, con las ventajas que ello supone.

 

7. Referencias

https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad