@Before public void setup() throws Exception { HttpMessageConverter<Object> converter = new MappingJackson2HttpMessageConverter(); this.errorHandler = new ExtractingResponseErrorHandler( Collections.singletonList(converter)); this.errorHandler.setStatusMapping( Collections.singletonMap(HttpStatus.I_AM_A_TEAPOT, MyRestClientException.class)); this.errorHandler.setSeriesMapping(Collections .singletonMap(HttpStatus.Series.SERVER_ERROR, MyRestClientException.class)); }
@Test public void handleNoMatchOverride() throws Exception { this.errorHandler.setSeriesMapping(Collections .singletonMap(HttpStatus.Series.CLIENT_ERROR, null)); given(this.response.getRawStatusCode()).willReturn(HttpStatus.NOT_FOUND.value()); HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentType(MediaType.APPLICATION_JSON); given(this.response.getHeaders()).willReturn(responseHeaders); byte[] body = "{\"foo\":\"bar\"}".getBytes(StandardCharsets.UTF_8); responseHeaders.setContentLength(body.length); given(this.response.getBody()).willReturn(new ByteArrayInputStream(body)); this.errorHandler.handleError(this.response); }
@Test public void hasErrorOverride() throws Exception { this.errorHandler.setSeriesMapping(Collections .singletonMap(HttpStatus.Series.CLIENT_ERROR, null)); given(this.response.getRawStatusCode()).willReturn(HttpStatus.I_AM_A_TEAPOT.value()); assertTrue(this.errorHandler.hasError(this.response)); given(this.response.getRawStatusCode()).willReturn(HttpStatus.NOT_FOUND.value()); assertFalse(this.errorHandler.hasError(this.response)); given(this.response.getRawStatusCode()).willReturn(HttpStatus.OK.value()); assertFalse(this.errorHandler.hasError(this.response)); }