package org.jooby;
import org.jooby.mvc.GET;
import org.jooby.mvc.Path;
import org.jooby.test.ServerFeature;
import org.junit.Test;
import com.google.inject.Binder;
import com.google.inject.multibindings.Multibinder;
import com.typesafe.config.Config;
public class ExceptionHandlingFeature extends ServerFeature {
@Path("/r")
public static class Resource {
@Path("/error")
@GET
public String error() {
return null;
}
}
{
use((final Env mode, final Config config, final Binder binder) -> {
Multibinder<Renderer> converters = Multibinder.newSetBinder(binder,
Renderer.class);
converters.addBinding().toInstance(BodyConverters.toHtml);
converters.addBinding().toInstance(BodyConverters.toJson);
});
get("/error", (req, rsp) -> rsp.send(null));
use(Resource.class);
}
private static final String CHROME_ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
@Test
public void htmlError() throws Exception {
request()
.get("/error")
.header("Accept", CHROME_ACCEPT)
.expect(500)
.header("Content-Type", "text/html;charset=UTF-8");
}
@Test
public void jsonError() throws Exception {
request()
.get("/error")
.header("Accept", "application/json")
.expect(500)
.header("Content-Type", "application/json;charset=UTF-8");
}
}