import io.reactivex.Maybe; import org.junit.Test; import javax.ws.rs.*; import javax.ws.rs.core.Application; import static org.junit.Assert.assertEquals; public class MaybeResourceTest extends RxJerseyTest { @Override protected Application configure() { return config().register(MaybeResource.class); } @Test public void shouldReturnContent() { final String message = target("maybe").path("echo") .queryParam("message", "hello") .request() .get(String.class); assertEquals("hello", message); } @Test(expected = BadRequestException.class) public void shouldThrowOnErrorObservable() { target("maybe").path("error") .request() .get(String.class); } @Test public void shouldReturnNoContentOnEmptyObservable() { final int status = target("maybe").path("empty") .request() .get() .getStatus(); assertEquals(204, status); } @Test(expected = InternalServerErrorException.class) public void shouldThrowOnNullObservable() { target("maybe").path("npe") .request() .get(String.class); } @Path("/maybe") public static class MaybeResource { @GET @Path("echo") public Maybe<String> echo(@QueryParam("message") String message) { return Maybe.just(message); } @GET @Path("error") public Maybe<String> error() { return Maybe.error(new BadRequestException()); } @GET @Path("npe") public Maybe<String> npe() { return null; } @GET @Path("empty") public Maybe<String> empty() { return Maybe.empty(); } } }