@ExceptionHandler(ServiceBrokerAsyncRequiredException.class) public ResponseEntity<AsyncRequiredErrorMessage> handleException(ServiceBrokerAsyncRequiredException ex) { log.debug("Broker requires async support: ", ex); return new ResponseEntity<>( new AsyncRequiredErrorMessage(ex.getMessage()), HttpStatus.UNPROCESSABLE_ENTITY); }
@Test public void serviceBrokerAsyncRequiredException() { ServiceBrokerAsyncRequiredException exception = new ServiceBrokerAsyncRequiredException("test message"); ErrorMessage errorMessage = exceptionHandler.handleException(exception); assertThat(errorMessage.getError()).isEqualTo(ASYNC_REQUIRED_ERROR); assertThat(errorMessage.getMessage()).contains("test message"); }
@Test public void createServiceInstanceWithAsyncRequiredFails() throws Exception { setupCatalogService(); setupServiceInstanceService(new ServiceBrokerAsyncRequiredException("async required description")); MvcResult mvcResult = mockMvc.perform(put(buildCreateUpdateUrl()) .content(createRequestBody) .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isUnprocessableEntity()) .andExpect(jsonPath("$.error", is(ASYNC_REQUIRED_ERROR))) .andExpect(jsonPath("$.description", endsWith("async required description"))); }
@Test public void createServiceInstanceWithAsyncRequiredFails() { setupCatalogService(); setupServiceInstanceService(new ServiceBrokerAsyncRequiredException("async required description")); client.put().uri(buildCreateUpdateUrl()) .contentType(MediaType.APPLICATION_JSON) .syncBody(createRequestBody) .accept(MediaType.APPLICATION_JSON) .exchange() .expectStatus().is4xxClientError() .expectStatus().isEqualTo(HttpStatus.UNPROCESSABLE_ENTITY) .expectBody() .jsonPath("$.error").isEqualTo(ASYNC_REQUIRED_ERROR) .jsonPath("$.description").isNotEmpty() .consumeWith(result -> assertDescriptionContains(result, "async required description")); }