Skip to content
This repository has been archived by the owner on Jun 1, 2022. It is now read-only.

t1/jax-rs-test-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JAX-RS Test Extension badge

Important
This project has been archived!!! WunderBar might be a better fit for your use-case.

Very simple (and fast) JUnit-5 extension to test JAX-RS infrastructure classes. Uses RestEasy + Undertow internally, but you shouldn’t notice that too often; just stick to JAX-RS + JSON-B.

There are two use-cases:

1. Boundaries

These are your classes that provide a REST service using JAX-RS server API; i.e.:

@Path("/") public class MyBoundary {
    @GET public String get() { return "foo"; }
}

Could be tested like this:

public class MyBoundaryTest {

    @RegisterExtension static JaxRsClientTest jaxRs = new JaxRsClientTest(new MyBoundary());

    @Test public void shouldGet() {
        Response response = jaxRs.GET("/");

        assertThat(response.getStatusInfo()).isEqualTo(OK);
        assertThat(response.readEntity(String.class)).isEqualTo("foo");
    }
}

2. Gateways

These are your classes that consume a REST service using the JAX-RS client API, and you don’t want to integrate with the real external service; i.e.:

public class MyGateway {
    Client client;
    URI baseUri;

    public String getFoo() {
        Response response = client.target(baseUri).request(TEXT_PLAIN_TYPE).get();
        assert 200 == response.getStatus();
        return response.readEntity(String.class);
    }
}

Could be tested like this:

public class MyGatewayTest {
    @Path("/") public static class MockService {
        @GET public String get() { return "foo"; }
    }

    @RegisterExtension static JaxRsTestExtension jaxRs = new JaxRsTestExtension(new MockService());

    @Test void shouldGet() {
        MyGateway gateway = new MyGateway();
        gateway.client = jaxRs.client();
        gateway.baseUri = jaxRs.baseUri();

        String foo = gateway.getFoo();

        assertThat(foo).isEqualTo("foo");
    }
}

Limitations

  1. There is no dependency injection, etc. You’ll have to pass in fully built JAX-RS service instances.

  2. This is not for integration tests! E.g. it uses it’s own Application class. These test qualify as a unit tests: they only test your Boundary or Gateway in isolation.

About

JUnit-5 extension to help testing JAX-RS infrastructure classes

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages