|
27 | 27 | import org.springframework.http.HttpStatus; |
28 | 28 | import org.springframework.http.MediaType; |
29 | 29 | import org.springframework.http.ResponseEntity; |
| 30 | +import org.springframework.http.HttpHeaders; |
| 31 | +import org.springframework.http.HttpMethod; |
30 | 32 | import org.springframework.test.web.servlet.MockMvc; |
31 | 33 | import org.springframework.test.web.servlet.MvcResult; |
32 | 34 | import org.springframework.test.web.servlet.RequestBuilder; |
33 | 35 | import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; |
34 | 36 | import org.springframework.test.web.servlet.setup.MockMvcBuilders; |
| 37 | +import org.springframework.web.context.request.WebRequest; |
| 38 | +import org.springframework.web.servlet.resource.NoResourceFoundException; |
35 | 39 |
|
36 | 40 | import java.nio.file.Path; |
37 | 41 | import java.util.UUID; |
@@ -247,6 +251,32 @@ void testHandleInvalidPurposeExceptionResponseBodyDoesInterception() throws Exce |
247 | 251 | .isEqualTo("Given Purpose (header) is too large. Max length is 25, yours was " + purpose.length()); |
248 | 252 | } |
249 | 253 |
|
| 254 | + @Test |
| 255 | + void testHandleNoResourceFoundExceptionReturnsPlain404() throws Exception { |
| 256 | + NoResourceFoundException ex; |
| 257 | + try { |
| 258 | + ex = NoResourceFoundException.class |
| 259 | + .getConstructor(HttpMethod.class, String.class) |
| 260 | + .newInstance(HttpMethod.GET, "/test"); |
| 261 | + } catch (NoSuchMethodException ignore) { |
| 262 | + ex = NoResourceFoundException.class |
| 263 | + .getConstructor(HttpMethod.class, String.class, String.class) |
| 264 | + .newInstance(HttpMethod.GET, "/test", "/test"); |
| 265 | + } |
| 266 | + |
| 267 | + ResponseEntity<Object> response = objectUnderTest.handleNoResourceFoundException( |
| 268 | + ex, |
| 269 | + new HttpHeaders(), |
| 270 | + HttpStatus.NOT_FOUND, |
| 271 | + Mockito.mock(WebRequest.class) |
| 272 | + ); |
| 273 | + |
| 274 | + Truth.assertThat(response.getStatusCodeValue()).isEqualTo(404); |
| 275 | + Truth.assertThat(response.getHeaders().getContentType()) |
| 276 | + .isEquivalentAccordingToCompareTo(MediaType.TEXT_PLAIN); |
| 277 | + Truth.assertThat(response.getBody()).isEqualTo("Not found"); |
| 278 | + } |
| 279 | + |
250 | 280 | @Override |
251 | 281 | public Class<?> getLoggerType() { |
252 | 282 | return GlobalExceptionHandler.class; |
|
0 commit comments