> On Jan. 26, 2017, 4:11 p.m., Kirk Lund wrote: > > geode-web-api/src/test/java/org/apache/geode/rest/internal/web/controllers/AbstractBaseControllerJUnitTest.java, > > line 58 > > <https://reviews.apache.org/r/55988/diff/2/?file=1617107#file1617107line58> > > > > You're missing fail("message"); in your try-block just before the > > catch-statement. > > > > I recommend using AssertJ's assertThatThrownBy instead. > > > > import static org.assertj.core.api.Assertions.assertThatThrownBy; > > > > assertThatThrownBy(() -> SecurityService.getObjectOfType("", > > String.class)) > > .isInstanceOf(GemFireSecurityException.class); > > > > assertThatThrownBy(serverConnection::getUniqueId) > > .isExactlyInstanceOf(AuthenticationRequiredException.class) > > > > .hasMessage(HandShake_NO_SECURITY_CREDENTIALS_ARE_PROVIDED.getRawText());
If I understand what you're saying, your first recommendation is something like: ``` try { throwGemFireRestException(message); fail("Failed to throw a GemFireRestException!"); } catch (GemfireRestException re) { String json = abstractBaseController.convertErrorAsJson(re); ErrorMessage errorMessage = mapper.readValue(json, ErrorMessage.class); assertEquals(message, errorMessage.message); } ``` `fail("Failed to throw a GemFireRestException!")` would be essentially unreachable as `throwGemFireRestException(message)` does not do anything except throw the exeption. The compiler wouldn't complain, but the line would be as unnecessary as a `return` statement. The try block within `throwGemFireRestException` could possibily throw something else, such as an `OutOfMemoryException`, so the catch should be changed to catch `Exception` and not specifically a `NullPointerException`. However, as `testConvertErrorAsJsonT()` throws Exception anyway, any exception bubbling up would fail the test. I will look in to AssertJ next. I'm not very familiar with it. From your example and glance I took of http://blog.codeleak.pl/2015/04/junit-testing-exceptions-with-java-8.html, it appears to be a far better way of accomplishing this. - Kevin ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/55988/#review163205 ----------------------------------------------------------- On Jan. 26, 2017, 3:30 p.m., Kevin Duling wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/55988/ > ----------------------------------------------------------- > > (Updated Jan. 26, 2017, 3:30 p.m.) > > > Review request for geode, Jinmei Liao, Jared Stewart, and Kirk Lund. > > > Bugs: GEODE-2294 > https://issues.apache.org/jira/browse/GEODE-2294 > > > Repository: geode > > > Description > ------- > > When an error is thrown in the controller, it is supposed to be wrapped in to > a JSON message to return to the client. The problem is a full stacktrace is > also being sent, exceeding the maximum number of bytes allowed in a single > http message. Messages are not flagged as multi-part. And who wants an > entire stacktrace in a response message? Instead, the message should return > the error, but the stacktrace should only be in the server's log. > > > Diffs > ----- > > geode-web-api/build.gradle f74b86fb2cb44ee2c6fe7dc498a6bd11c45f8b6c > > geode-web-api/src/main/java/org/apache/geode/rest/internal/web/controllers/AbstractBaseController.java > b9d2bf4dec5b8d091207b6a98ff30d11ba7cc822 > > geode-web-api/src/test/java/org/apache/geode/rest/internal/web/controllers/AbstractBaseControllerJUnitTest.java > PRE-CREATION > > Diff: https://reviews.apache.org/r/55988/diff/ > > > Testing > ------- > > precheckin running > This changes also fixed a REST test that previously was returning a > mysterious 500 error. Now it's returning a proper 404 error. > > > Thanks, > > Kevin Duling > >