@PutMapping(value = { "/{platformInstanceId}/v2/service_instances/{instanceId}/service_bindings/{bindingId}", "/v2/service_instances/{instanceId}/service_bindings/{bindingId}" }) public ResponseEntity<CreateServiceInstanceBindingResponse> createServiceInstanceBinding( @PathVariable Map<String, String> pathVariables, @PathVariable(ServiceBrokerRequest.INSTANCE_ID_PATH_VARIABLE) String serviceInstanceId, @PathVariable(ServiceBrokerRequest.BINDING_ID_PATH_VARIABLE) String bindingId, @RequestParam(value = AsyncServiceBrokerRequest.ASYNC_REQUEST_PARAMETER, required = false) boolean acceptsIncomplete, @RequestHeader(value = ServiceBrokerRequest.API_INFO_LOCATION_HEADER, required = false) String apiInfoLocation, @RequestHeader(value = ServiceBrokerRequest.ORIGINATING_IDENTITY_HEADER, required = false) String originatingIdentityString, @Valid @RequestBody CreateServiceInstanceBindingRequest request) { ServiceDefinition serviceDefinition = getRequiredServiceDefinition(request.getServiceDefinitionId()); Plan plan = getServiceDefinitionPlan(serviceDefinition, request.getPlanId()); request.setServiceInstanceId(serviceInstanceId); request.setBindingId(bindingId); request.setServiceDefinition(serviceDefinition); request.setPlan(plan); setCommonRequestFields(request, pathVariables.get(ServiceBrokerRequest.PLATFORM_INSTANCE_ID_VARIABLE), apiInfoLocation, originatingIdentityString, acceptsIncomplete); logger.debug("Creating a service instance binding: request={}", request); CreateServiceInstanceBindingResponse response = service.createServiceInstanceBinding(request); logger.debug("Creating a service instance binding succeeded: serviceInstanceId={}, bindingId={}, response={}", serviceInstanceId, bindingId, response); return new ResponseEntity<>(response, getCreateResponseCode(response)); }
@RequestHeader(value = ServiceBrokerRequest.ORIGINATING_IDENTITY_HEADER, required = false) String originatingIdentityString, @Valid @RequestBody CreateServiceInstanceBindingRequest request) { return getRequiredServiceDefinition(request.getServiceDefinitionId()) .flatMap(serviceDefinition -> getServiceDefinitionPlan(serviceDefinition, request.getPlanId()) .map(plan -> {
@Test public void requestIsDeserializedFromJson() { CreateServiceInstanceBindingRequest request = JsonUtils.readTestDataFile("bindRequest.json", CreateServiceInstanceBindingRequest.class); assertThat(request.getServiceDefinitionId()).isEqualTo("test-service-id"); assertThat(request.getPlanId()).isEqualTo("test-plan-id"); assertThat(request.getAppGuid()).isEqualTo("test-app-guid"); Context context = request.getContext(); assertThat(context.getPlatform()).isEqualTo("sample-platform"); assertThat(context).isInstanceOf(Context.class); assertThat(context.getProperty("field1")).isEqualTo("data"); assertThat(context.getProperty("field2")).isEqualTo(2); assertThat(request.getBindResource().getProperty("field1")).isEqualTo("data"); assertThat(request.getBindResource().getProperty("field2")).isEqualTo(2); assertThat(request.getParameters().get("parameter1")).isEqualTo(1); assertThat(request.getParameters().get("parameter2")).isEqualTo("foo"); assertThat(request.getParameters().get("parameter3")).isEqualTo(true); }
@Override public Mono<CreateServiceInstanceBindingResponse> createServiceInstanceBinding(CreateServiceInstanceBindingRequest request) { if (request.getServiceDefinitionId() == null) { return Mono.error(new ServiceInstanceBindingExistsException("foo", "arrrr")); } return Mono.just(CreateServiceInstanceAppBindingResponse.builder().build()); }
@Test public void requestWithDefaultsIsBuilt() { CreateServiceInstanceBindingRequest request = CreateServiceInstanceBindingRequest.builder().build(); assertThat(request.getServiceDefinitionId()).isNull(); assertThat(request.getServiceDefinition()).isNull(); assertThat(request.getPlanId()).isNull(); assertThat(request.getServiceInstanceId()).isNull(); assertThat(request.getBindResource()).isNull(); assertThat(request.getContext()).isNull(); assertThat(request.getBindingId()).isNull(); assertThat(request.getParameters()).hasSize(0); assertThat(request.isAsyncAccepted()).isEqualTo(false); assertThat(request.getApiInfoLocation()).isNull(); assertThat(request.getPlatformInstanceId()).isNull(); assertThat(request.getOriginatingIdentity()).isNull(); }
.build(); assertThat(request.getServiceDefinitionId()).isEqualTo("service-definition-id"); assertThat(request.getServiceDefinition()).isNull(); assertThat(request.getPlanId()).isEqualTo("plan-id");