protected Plan getServiceDefinitionPlan(ServiceDefinition serviceDefinition, String planId) { Optional<Plan> optionalPlan = Optional.empty(); if (serviceDefinition != null) { optionalPlan = serviceDefinition.getPlans().stream().filter(plan -> plan.getId().equals(planId)).findFirst(); } return optionalPlan.orElse(null); }
protected Mono<Plan> getServiceDefinitionPlan(ServiceDefinition serviceDefinition, String planId) { return Mono.defer(() -> { if (serviceDefinition != null) { return Mono.just(serviceDefinition.getPlans()) .flatMap(plans -> Flux.fromIterable(plans) .filter(plan -> plan.getId().equals(planId)) .singleOrEmpty()); } return Mono.empty(); }); }
assertThat(catalog.getServiceDefinitions().get(0).getDescription()).isEqualTo("Description for Service One"); assertThat(catalog.getServiceDefinitions().get(0).getPlans()).hasSize(1); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(0).getId()).isEqualTo("plan-one-id"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(0).getName()).isEqualTo("Plan One"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(0).getDescription()).isEqualTo("Description for Plan One");
protected String buildDeleteUrl(String platformInstanceId, boolean asyncAccepted) { return buildBaseUrl(platformInstanceId) .queryParam("service_id", serviceDefinition.getId()) .queryParam("plan_id", serviceDefinition.getPlans().get(0).getId()) .queryParam("accepts_incomplete", asyncAccepted) .toUriString(); }
@Test public void planWithDefaultsIsSerializedToJson() { Plan plan = Plan.builder() .id("plan-id-one") .name("plan-one") .description("Plan One") .build(); assertThat(plan.getId()).isEqualTo("plan-id-one"); assertThat(plan.getName()).isEqualTo("plan-one"); assertThat(plan.getDescription()).isEqualTo("Plan One"); assertThat(plan.isFree()).isEqualTo(true); assertThat(plan.isBindable()).isNull(); assertThat(plan.getMetadata()).isNull(); assertThat(plan.getSchemas()).isNull(); DocumentContext json = JsonUtils.toJsonPath(plan); assertThat(json).hasPath("$.id").isEqualTo("plan-id-one"); assertThat(json).hasPath("$.name").isEqualTo("plan-one"); assertThat(json).hasPath("$.description").isEqualTo("Plan One"); assertThat(json).hasPath("$.free").isEqualTo(true); assertThat(json).hasNoPath("$.bindable"); assertThat(json).hasNoPath("$.metadata"); assertThat(json).hasNoPath("$.schemas"); }
assertThat(catalog.getServiceDefinitions().get(0).getDashboardClient().getSecret()).isEqualTo("dashboard-secret"); assertThat(catalog.getServiceDefinitions().get(0).getDashboardClient().getRedirectUri()).isEqualTo("dashboard-redirect-uri"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(0).getId()).isEqualTo("plan-one-id"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(0).getName()).isEqualTo("Plan One"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(0).getDescription()).isEqualTo("Description for Plan One"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).getId()).isEqualTo("plan-two-id"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).getName()).isEqualTo("Plan Two"); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).getDescription()).isEqualTo("Description for Plan Two"); assertThat(catalog.getServiceDefinitions().get(1).getName()).isEqualTo("Service Two"); assertThat(catalog.getServiceDefinitions().get(1).getDescription()).isEqualTo("Description for Service Two"); assertThat(catalog.getServiceDefinitions().get(1).getPlans().get(0).getId()).isEqualTo("plan-one-id"); assertThat(catalog.getServiceDefinitions().get(1).getPlans().get(0).getName()).isEqualTo("Plan One"); assertThat(catalog.getServiceDefinitions().get(1).getPlans().get(0).getDescription()).isEqualTo("Description for Plan One");
@Test public void createServiceInstanceFiltersPlanSucceeds() { setupCatalogService(); setupServiceInstanceService(CreateServiceInstanceResponse .builder() .build()); client.put().uri(buildCreateUpdateUrl()) .contentType(MediaType.APPLICATION_JSON) .syncBody(createRequestBody) .accept(MediaType.APPLICATION_JSON) .exchange() .expectStatus().isCreated(); CreateServiceInstanceRequest actualRequest = verifyCreateServiceInstance(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo("plan-one-id"); assertHeaderValuesNotSet(actualRequest); }
@Test public void deleteBindingFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceBindingService(DeleteServiceInstanceBindingResponse.builder() .build()); client.delete().uri(buildDeleteUrl(PLATFORM_INSTANCE_ID, false)) .header(API_INFO_LOCATION_HEADER, API_INFO_LOCATION) .header(ORIGINATING_IDENTITY_HEADER, buildOriginatingIdentityHeader()) .exchange() .expectStatus().isOk() .expectBody() .json("{}"); verify(serviceInstanceBindingService).deleteServiceInstanceBinding(any(DeleteServiceInstanceBindingRequest.class)); DeleteServiceInstanceBindingRequest actualRequest = verifyDeleteBinding(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesSet(actualRequest); }
@Test public void deleteServiceInstanceFiltersPlansSucceeds() { setupCatalogService(); setupServiceInstanceService(DeleteServiceInstanceResponse .builder() .build()); client.delete().uri(buildDeleteUrl()) .accept(MediaType.APPLICATION_JSON) .exchange() .expectStatus().isOk() .expectBody() .json("{}"); DeleteServiceInstanceRequest actualRequest = verifyDeleteServiceInstance(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo("plan-three-id"); assertHeaderValuesNotSet(actualRequest); }
@Test public void createBindingToRouteFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceBindingService(CreateServiceInstanceRouteBindingResponse .builder() .bindingExisted(false) .build()); client.put().uri(buildCreateUrl()) .contentType(MediaType.APPLICATION_JSON) .syncBody(createRequestBody) .accept(MediaType.APPLICATION_JSON) .exchange() .expectStatus().isCreated(); CreateServiceInstanceBindingRequest actualRequest = verifyCreateBinding(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesNotSet(actualRequest); }
@Test public void updateServiceInstanceFiltersPlansSucceeds() { setupCatalogService(); setupServiceInstanceService(UpdateServiceInstanceResponse.builder() .build()); client.patch().uri(buildCreateUpdateUrl()) .contentType(MediaType.APPLICATION_JSON) .syncBody(updateRequestBodyWithPlan) .accept(MediaType.APPLICATION_JSON) .exchange() .expectStatus().isOk() .expectBody() .json("{}"); UpdateServiceInstanceRequest actualRequest = verifyUpdateServiceInstance(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo("plan-three-id"); assertHeaderValuesNotSet(actualRequest); }
.build(); assertThat(plan.getId()).isEqualTo("plan-id-one"); assertThat(plan.getName()).isEqualTo("plan-one"); assertThat(plan.getDescription()).isEqualTo("Plan One");
@Test public void deleteBindingFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceBindingService(DeleteServiceInstanceBindingResponse .builder() .build()); MvcResult mvcResult = mockMvc .perform(delete(buildDeleteUrl(PLATFORM_INSTANCE_ID, false)) .header(API_INFO_LOCATION_HEADER, API_INFO_LOCATION) .header(ORIGINATING_IDENTITY_HEADER, buildOriginatingIdentityHeader()) .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()) .andExpect(status().isOk()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andExpect(content().string("{}")); verify(serviceInstanceBindingService).deleteServiceInstanceBinding(any(DeleteServiceInstanceBindingRequest.class)); DeleteServiceInstanceBindingRequest actualRequest = verifyDeleteBinding(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesSet(actualRequest); }
@Test public void createServiceInstanceFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceService(CreateServiceInstanceResponse .builder() .build()); 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().isCreated()); CreateServiceInstanceRequest actualRequest = verifyCreateServiceInstance(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesNotSet(actualRequest); }
@Test public void deleteServiceInstanceFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceService(DeleteServiceInstanceResponse .builder() .build()); MvcResult mvcResult = mockMvc .perform(delete(buildDeleteUrl()) .accept(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andExpect(content().string("{}")); DeleteServiceInstanceRequest actualRequest = verifyDeleteServiceInstance(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesNotSet(actualRequest); }
@Test public void updateServiceInstanceFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceService(UpdateServiceInstanceResponse .builder() .build()); MvcResult mvcResult = mockMvc .perform(patch(buildCreateUpdateUrl()) .content(updateRequestBodyWithPlan) .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andExpect(content().string("{}")); UpdateServiceInstanceRequest actualRequest = verifyUpdateServiceInstance(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesNotSet(actualRequest); }
@Test public void createBindingToAppFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceBindingService(CreateServiceInstanceAppBindingResponse .builder() .bindingExisted(false) .build()); MvcResult mvcResult = mockMvc .perform(put(buildCreateUrl(PLATFORM_INSTANCE_ID, false)) .content(createRequestBody) .header(API_INFO_LOCATION_HEADER, API_INFO_LOCATION) .header(ORIGINATING_IDENTITY_HEADER, buildOriginatingIdentityHeader()) .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()) .andReturn(); mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isCreated()); CreateServiceInstanceBindingRequest actualRequest = verifyCreateBinding(); assertThat(actualRequest.isAsyncAccepted()).isEqualTo(false); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesSet(actualRequest); }
@Test public void createBindingToAppFiltersPlansSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceBindingService(CreateServiceInstanceAppBindingResponse .builder() .bindingExisted(false) .build()); client.put().uri(buildCreateUrl(PLATFORM_INSTANCE_ID, false)) .contentType(MediaType.APPLICATION_JSON) .syncBody(createRequestBody) .header(API_INFO_LOCATION_HEADER, API_INFO_LOCATION) .header(ORIGINATING_IDENTITY_HEADER, buildOriginatingIdentityHeader()) .accept(MediaType.APPLICATION_JSON) .exchange() .expectStatus().isCreated(); CreateServiceInstanceBindingRequest actualRequest = verifyCreateBinding(); assertThat(actualRequest.getPlan().getId()).isEqualTo(actualRequest.getPlanId()); assertHeaderValuesSet(actualRequest); }
)) .andExpect(jsonPath("$.services[*].plans[*]", hasSize(3))) .andExpect(jsonPath("$.services[*].plans[*].id", containsInAnyOrder(plans.get(0).getId(), plans.get(1).getId(), plans.get(2).getId()))) .andExpect(jsonPath("$.services[*].plans[*].name", containsInAnyOrder(plans.get(0).getName(), plans.get(1).getName(), plans.get(2).getName()))) .andExpect(jsonPath("$.services[*].plans[*].description", containsInAnyOrder(plans.get(0).getDescription(), plans.get(1).getDescription(), plans.get(2).getDescription())))
.jsonPath("$.services[0].plans").isNotEmpty() .jsonPath("$.services[0].plans").isArray() .jsonPath("$.services[0].plans[0].id").isEqualTo(plans.get(0).getId()) .jsonPath("$.services[0].plans[0].name").isEqualTo(plans.get(0).getName()) .jsonPath("$.services[0].plans[0].description").isEqualTo(plans.get(0).getDescription()) .jsonPath("$.services[0].plans[0].free").isEqualTo(plans.get(0).isFree()) .jsonPath("$.services[0].plans[1].id").isEqualTo(plans.get(1).getId()) .jsonPath("$.services[0].plans[1].name").isEqualTo(plans.get(1).getName()) .jsonPath("$.services[0].plans[1].description").isEqualTo(plans.get(1).getDescription()) .jsonPath("$.services[0].plans[1].schemas.service_instance.update.parameters").isEqualTo(updateServiceInstanceSchema) .jsonPath("$.services[0].plans[1].schemas.service_binding.create.parameters").isEqualTo(createServiceBindingSchema) .jsonPath("$.services[0].plans[2].id").isEqualTo(plans.get(2).getId()) .jsonPath("$.services[0].plans[2].name").isEqualTo(plans.get(2).getName()) .jsonPath("$.services[0].plans[2].description").isEqualTo(plans.get(2).getDescription())