Restfuse

De Dos Ideas.
Saltar a: navegación, buscar

Restfuse es una extensión de JUnit que permite realizar pruebas sobre servicios REST (pueden leer sobre crear servicios REST con Spring).

Configuración

Usando Maven, basta con agregar en el POM:

<dependency>
    <groupId>com.restfuse</groupId>
    <artifactId>com.eclipsesource.restfuse</artifactId>
    <version>1.0.0</version>
    <scope>test</scope>
</dependency>

Test de servicio REST sin seguridad

Supongamos un servicio REST sin seguridad, que se invoca en:

http://localhost:8084/miapp/services/persona/id/{id}

Este servicio devuelve una Persona en formato JSON con id {id}. Vamos a crear un test que busque la persona 123:

@RunWith(HttpJUnitRunner.class) public class RestFuseTest {

   @Rule
   public Destination destination = new Destination("http://localhost:8084/miapp");
   @Context
   private Response response; //se inyecta para cada request realizado
   @HttpTest(method = Method.GET, path = "/services/persona/id/123")
   public void buscarPersona_idExistente_devuelveLaPersona() {
       String respuesta = response.getBody(String.class);
       System.out.println(respuesta); //imprime la persona en JSON
       assertOk(response); //comprueba que la respuesta haya sido HTTP status 200.
   }

}

Test de servicio REST con seguridad

Supongamos el mismo servicio anterior, pero esta vez necesita pasar por una autenticación (por ejemplo, el servicio está segurizado usando Spring Security).

Supongamos entonces el usuario "zim" con la contraseña "irken". Para realizar el test, le informamos a Restfuse los datos para autenticarse previo a realizar el test.

@RunWith(HttpJUnitRunner.class) public class RestFuseTest {

   @Rule
   public Destination destination = new Destination("http://localhost:8084/miapp");
   @Context
   private Response response; //se inyecta para cada request realizado
   @HttpTest(method = Method.GET, path = "/services/persona/id/123", authentications = {
       @Authentication(user = "zim", password = "irken", type = AuthenticationType.BASIC)
   })
   public void buscarPersona_idExistente_devuelveLaPersona() {
       String respuesta = response.getBody(String.class);
       System.out.println(respuesta); //imprime la persona en JSON
       assertOk(response); //comprueba que la respuesta haya sido HTTP status 200.
   }

}

Ver también