package org.jooby.issues; import static org.junit.Assert.assertTrue; import org.jooby.test.ServerFeature; import org.jooby.whoops.Whoops; import org.junit.Test; public class Issue371 extends ServerFeature { { use(new Whoops()); get("/whoops/direct-ex", req -> { req.session().set("foo", "bar"); throw new IllegalStateException("Something broken!"); }); get("/whoops/session-atrr", req -> { req.session().set("foo", "bar"); throw new IllegalStateException("Something broken!"); }); get("/whoops/wrap-ex", req -> { try { return doSomething(); } catch (Exception ex) { throw new IllegalStateException("Wrap wrap", ex); } }); get("/whoops/json", req -> { throw new IllegalStateException("def handler"); }); } private Object doSomething() { throw new IllegalArgumentException("Xxx"); } @Test public void shouldHandleDirectEx() throws Exception { request() .get("/whoops/direct-ex") .expect(s -> { assertTrue( s.contains( "<span id=\"plain-exception\">java.lang.IllegalStateException: Something broken!")); }); } @Test public void shouldDumpSessionAttr() throws Exception { request() .get("/whoops/direct-ex") .expect(s -> { assertTrue(s.contains("foo")); assertTrue(s.contains("bar")); }); } @Test public void shouldHandleWrapEx() throws Exception { request() .get("/whoops/wrap-ex") .expect(s -> { assertTrue( s.contains( "<span id=\"plain-exception\">java.lang.IllegalStateException: Wrap wrap")); assertTrue(s.contains("java.lang.IllegalArgumentException: Xxx")); }); } @Test public void shouldIgnoreNonHtmlRequest() throws Exception { request() .get("/whoops/json") .header("Accept", "application/json") .expect(s -> assertTrue(s.contains("message=def handler"))); } }