> 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
> 
>

Reply via email to