package app.errors.com.aol.micro.server; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import java.util.concurrent.ExecutionException; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.aol.micro.server.MicroserverApp; import com.aol.micro.server.auto.discovery.RestResource; import com.aol.micro.server.config.Microserver; import com.aol.micro.server.errors.InvalidStateException; import com.aol.micro.server.health.HealthStatus; import com.aol.micro.server.testing.RestAgent; @Microserver @Path("/single") public class SingleClassTest implements RestResource { RestAgent rest = new RestAgent(); MicroserverApp server; @Before public void startServer() { server = new MicroserverApp( SingleClassTest.class, () -> "simple-app"); server.start(); } @After public void stopServer() { server.stop(); } @Test public void runAppAndBasicTest() throws InterruptedException, ExecutionException { rest.get("http://localhost:8080/simple-app/single/error"); assertThat(rest.get("http://localhost:8080/simple-app/system-errors/status"), is(HealthStatus.State.Errors.name())); assertThat(rest.getJson("http://localhost:8080/simple-app/system-errors/errors"), containsString("formatted-date")); rest.get("http://localhost:8080/simple-app/single/fatal"); System.out.println(rest.getJson("http://localhost:8080/simple-app/system-errors/errors")); assertThat(rest.get("http://localhost:8080/simple-app/system-errors/status"), is(HealthStatus.State.Fatal.name())); } @GET @Produces("text/plain") @Path("/error") public String error() { try { throw new InvalidStateException( Errors.QUERY_FAILURE.format("*eek*")); } catch (Exception e) { e.printStackTrace(); } return "error"; } @GET @Produces("text/plain") @Path("/fatal") public String fatal() { try { throw new InvalidStateException( Errors.SYSTEM_FAILURE.format("*eek*")); } catch (Exception e) { e.printStackTrace(); } return "unrecoverable fatal error"; } }