@Override public Mono<GetLastServiceOperationResponse> getLastOperation(GetLastServiceOperationRequest request) { assertThat(request).isEqualTo(expectedRequest); return Mono.just(GetLastServiceOperationResponse.builder() .operationState(OperationState.SUCCEEDED) .build()); }
@Override public String toString() { String responseValue = response == null ? "null" : "{" + "state=" + response.getState() + ", description=" + response.getDescription() + ", deleteOperation=" + response.isDeleteOperation() + "}"; return "response=" + responseValue + ", expectedStatus=" + expectedStatus; } }
/** * Construct a {@link GetLastServiceOperationResponse} from the provided values. * * @return the newly constructed {@literal GetLastServiceOperationResponse} */ public GetLastServiceOperationResponse build() { return new GetLastServiceOperationResponse(state, description, deleteOperation); } }
@Test public void responseWithAllValuesIsDeserialized() { GetLastServiceOperationResponse response = JsonUtils.readTestDataFile( "getLastOperationResponse.json", GetLastServiceOperationResponse.class); assertThat(response.getState()).isEqualTo(OperationState.SUCCEEDED); assertThat(response.getDescription()).isEqualTo("description"); }
@Test public void responseWithDefaultsIsBuilt() { GetLastServiceOperationResponse response = GetLastServiceOperationResponse.builder() .build(); assertThat(response.getState()).isNull(); assertThat(response.getDescription()).isNull(); assertThat(response.isDeleteOperation()).isEqualTo(false); DocumentContext json = JsonUtils.toJsonPath(response); assertThat(json).hasNoPath("$.state"); assertThat(json).hasNoPath("$.description"); }
@GetMapping(value = { "/{platformInstanceId}/v2/service_instances/{instanceId}/last_operation", "/v2/service_instances/{instanceId}/last_operation" }) public ResponseEntity<GetLastServiceOperationResponse> getServiceInstanceLastOperation( @PathVariable Map<String, String> pathVariables, @PathVariable(ServiceBrokerRequest.INSTANCE_ID_PATH_VARIABLE) String serviceInstanceId, @RequestParam(value = ServiceBrokerRequest.SERVICE_ID_PARAMETER, required = false) String serviceDefinitionId, @RequestParam(value = ServiceBrokerRequest.PLAN_ID_PARAMETER, required = false) String planId, @RequestParam(value = "operation", required = false) String operation, @RequestHeader(value = ServiceBrokerRequest.API_INFO_LOCATION_HEADER, required = false) String apiInfoLocation, @RequestHeader(value = ServiceBrokerRequest.ORIGINATING_IDENTITY_HEADER, required = false) String originatingIdentityString) { GetLastServiceOperationRequest request = GetLastServiceOperationRequest.builder() .serviceDefinitionId(serviceDefinitionId) .serviceInstanceId(serviceInstanceId) .planId(planId) .operation(operation) .platformInstanceId(pathVariables.get(ServiceBrokerRequest.PLATFORM_INSTANCE_ID_VARIABLE)) .apiInfoLocation(apiInfoLocation) .originatingIdentity(parseOriginatingIdentity(originatingIdentityString)) .build(); logger.debug("Getting service instance last operation: request={}", request); GetLastServiceOperationResponse response = service.getLastOperation(request); logger.debug("Getting service instance last operation succeeded: serviceInstanceId={}, response={}", serviceInstanceId, response); boolean isSuccessfulDelete = response.getState().equals(OperationState.SUCCEEDED) && response.isDeleteOperation(); return new ResponseEntity<>(response, isSuccessfulDelete ? HttpStatus.GONE : HttpStatus.OK); }
@Test public void responseWithAllValuesIsBuilt() { GetLastServiceOperationResponse response = GetLastServiceOperationResponse.builder() .operationState(OperationState.SUCCEEDED) .description("description") .deleteOperation(true) .build(); assertThat(response.getState()).isEqualTo(OperationState.SUCCEEDED); assertThat(response.getDescription()).isEqualTo("description"); assertThat(response.isDeleteOperation()).isEqualTo(true); DocumentContext json = JsonUtils.toJsonPath(response); assertThat(json).hasPath("$.state").isEqualTo(OperationState.SUCCEEDED.toString()); assertThat(json).hasPath("$.description").isEqualTo("description"); }
boolean isSuccessfulDelete = response.getState().equals(OperationState.SUCCEEDED) && response.isDeleteOperation(); return new ResponseEntity<>(response, isSuccessfulDelete ? HttpStatus.GONE : HttpStatus.OK); });
@Override public Mono<GetLastServiceOperationResponse> getLastOperation(GetLastServiceOperationRequest request) { String serviceInstanceId = request.getServiceInstanceId(); // // determine the status of the operation in progress // OperationState state = OperationState.SUCCEEDED; GetLastServiceOperationResponse response = GetLastServiceOperationResponse.builder() .operationState(state) .build(); return Mono.just(response); } }
/** * Construct a {@link GetLastServiceOperationResponse} from the provided values. * * @return the newly constructed {@literal GetLastServiceOperationResponse} */ public GetLastServiceOperationResponse build() { return new GetLastServiceOperationResponse(state, description, deleteOperation); } }
@Override public Mono<GetLastServiceOperationResponse> getLastOperation(GetLastServiceOperationRequest request) { if (request.getServiceDefinitionId() == null) { return Mono.error(new ServiceBrokerInvalidParametersException("arrrr")); } return Mono.just(GetLastServiceOperationResponse.builder().build()); } }
private void responseWithStateIsSerializedToJson(OperationState stateValue, String stateString) { GetLastServiceOperationResponse response = GetLastServiceOperationResponse.builder() .operationState(stateValue) .description("description") .build(); DocumentContext json = JsonUtils.toJsonPath(response); assertThat(json).hasPath("$.state").isEqualTo(stateString); assertThat(json).hasPath("$.description").isEqualTo("description"); }
@Test public void getLastOperationSucceeds() { prepareLastOperationEventFlows(); StepVerifier .create(serviceInstanceEventService.getLastOperation(GetLastServiceOperationRequest.builder() .serviceInstanceId("foo") .serviceDefinitionId("bar") .build())) .expectNext(GetLastServiceOperationResponse.builder().build()) .verifyComplete(); assertThat(this.results.getBeforeLastOperation()).isEqualTo("before foo"); assertThat(this.results.getAfterLastOperation()).isEqualTo("after foo"); assertThat(this.results.getErrorLastOperation()).isNullOrEmpty(); }
return Arrays.asList( new GetLastOperationResponseAndExpectedStatus( GetLastServiceOperationResponse.builder() .operationState(OperationState.IN_PROGRESS) .description("in progress") ), new GetLastOperationResponseAndExpectedStatus( GetLastServiceOperationResponse.builder() .operationState(OperationState.SUCCEEDED) .deleteOperation(false) ), new GetLastOperationResponseAndExpectedStatus( GetLastServiceOperationResponse.builder() .operationState(OperationState.SUCCEEDED) .deleteOperation(true) ), new GetLastOperationResponseAndExpectedStatus( GetLastServiceOperationResponse.builder() .operationState(OperationState.FAILED) .build(),
@Test public void lastOperationHasFailedStatus() throws Exception { setupServiceInstanceService(GetLastServiceOperationResponse.builder() .operationState(OperationState.FAILED) .description("not so good") .build()); MvcResult mvcResult = mockMvc.perform(get(buildLastOperationUrl())) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andExpect(jsonPath("$.state", is(OperationState.FAILED.toString()))) .andExpect(jsonPath("$.description", is("not so good"))); }
@Test public void lastOperationHasSucceededStatusWithDeletionComplete() throws Exception { setupServiceInstanceService(GetLastServiceOperationResponse.builder() .operationState(OperationState.SUCCEEDED) .description("all gone") .deleteOperation(true) .build()); MvcResult mvcResult = mockMvc.perform(get(buildLastOperationUrl())) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isGone()) .andExpect(jsonPath("$.state", is(OperationState.SUCCEEDED.toString()))) .andExpect(jsonPath("$.description", is("all gone"))); }
@Test public void lastOperationHasInProgressStatus() throws Exception { setupServiceInstanceService(GetLastServiceOperationResponse.builder() .operationState(OperationState.IN_PROGRESS) .description("working on it") .build()); MvcResult mvcResult = mockMvc.perform(get(buildLastOperationUrl())) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andExpect(jsonPath("$.state", is(OperationState.IN_PROGRESS.toString()))) .andExpect(jsonPath("$.description", is("working on it"))); GetLastServiceOperationRequest actualRequest = verifyLastOperation(); assertHeaderValuesNotSet(actualRequest); }
@Test public void lastOperationHasSucceededStatus() throws Exception { setupServiceInstanceService(GetLastServiceOperationResponse.builder() .operationState(OperationState.SUCCEEDED) .description("all good") .build()); MvcResult mvcResult = mockMvc.perform(get(buildLastOperationUrl(PLATFORM_INSTANCE_ID)) .header(API_INFO_LOCATION_HEADER, API_INFO_LOCATION) .header(ORIGINATING_IDENTITY_HEADER, buildOriginatingIdentityHeader())) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andExpect(jsonPath("$.state", is(OperationState.SUCCEEDED.toString()))) .andExpect(jsonPath("$.description", is("all good"))); GetLastServiceOperationRequest actualRequest = verifyLastOperation(); assertHeaderValuesSet(actualRequest); }
@Test public void lastOperationHasFailedStatus() { setupServiceInstanceService(GetLastServiceOperationResponse.builder() .operationState(OperationState.FAILED) .description("not so good") .build()); client.get().uri(buildLastOperationUrl()) .exchange() .expectStatus().isOk() .expectBody() .jsonPath("$.state").isEqualTo(OperationState.FAILED.toString()) .jsonPath("$.description").isEqualTo("not so good"); }
@Test public void lastOperationHasInProgressStatus() { setupServiceInstanceService(GetLastServiceOperationResponse.builder() .operationState(OperationState.IN_PROGRESS) .description("working on it") .build()); client.get().uri(buildLastOperationUrl()) .exchange() .expectStatus().isOk() .expectBody() .jsonPath("$.state").isEqualTo(OperationState.IN_PROGRESS.toString()) .jsonPath("$.description").isEqualTo("working on it"); GetLastServiceOperationRequest actualRequest = verifyLastOperation(); assertHeaderValuesNotSet(actualRequest); }