@Before public void setUp() { controller = new ServiceInstanceController(catalogService, serviceInstanceService); when(catalogService.getServiceDefinition(anyString())) .thenReturn(Mono.just(ServiceDefinition.builder().build())); }
private void initializeMap() { for (ServiceDefinition def: catalog.getServiceDefinitions()) { serviceDefs.put(def.getId(), def); } }
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); }
@Test public void serviceDefinitionWithDefaultsIsSerializedToJson() { ServiceDefinition serviceDefinition = ServiceDefinition.builder() .id("service-definition-id-one") .name("service-definition-one") .build(); assertThat(serviceDefinition.getId()).isEqualTo("service-definition-id-one"); assertThat(serviceDefinition.getName()).isEqualTo("service-definition-one"); assertThat(serviceDefinition.getDescription()).isEqualTo("Service Definition One"); assertThat(serviceDefinition.getPlans()).hasSize(1); assertThat(serviceDefinition.isBindable()).isEqualTo(false); assertThat(serviceDefinition.isPlanUpdateable()).isNull(); assertThat(serviceDefinition.isInstancesRetrievable()).isNull(); assertThat(serviceDefinition.isBindingsRetrievable()).isNull(); assertThat(serviceDefinition.getTags()).isNull(); assertThat(serviceDefinition.getRequires()).isNull(); assertThat(serviceDefinition.getMetadata()).isNull(); assertThat(serviceDefinition.getDashboardClient()).isNull();
Catalog catalog = context.getBean(Catalog.class); assertThat(catalog.getServiceDefinitions()).hasSize(1); assertThat(catalog.getServiceDefinitions().get(0).getId()).isEqualTo("service-one-id"); assertThat(catalog.getServiceDefinitions().get(0).getName()).isEqualTo("Service One"); 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"); assertThat(context) .getBean(CatalogService.class)
@Test public void catalogWithServicesIsSerializedToJson() { List<ServiceDefinition> serviceDefinitions = Collections.singletonList(ServiceDefinition.builder() .id("service-definition-id-two") .name("service-definition-two") ServiceDefinition.builder() .id("service-definition-id-one") .name("service-definition-one") assertThat(actualDefinitions.get(0).getId()).isEqualTo("service-definition-id-one"); assertThat(actualDefinitions.get(0).getName()).isEqualTo("service-definition-one"); assertThat(actualDefinitions.get(0).getDescription()).isEqualTo("Service Definition One"); assertThat(actualDefinitions.get(1).getId()).isEqualTo("service-definition-id-two"); assertThat(actualDefinitions.get(1).getName()).isEqualTo("service-definition-two"); assertThat(actualDefinitions.get(1).getDescription()).isEqualTo("Service Definition Two");
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(); }
/** * Construct a {@link ServiceDefinition} from the provided values. * * @return the newly constructed {@literal ServiceDefinition} */ public ServiceDefinition build() { return new ServiceDefinition(id, name, description, bindable, planUpdateable, instancesRetrievable, bindingsRetrievable, plans, tags, metadata, requires, dashboardClient); } }
assertThat(catalog.getServiceDefinitions().get(0).getId()).isEqualTo("service-one-id"); assertThat(catalog.getServiceDefinitions().get(0).getName()).isEqualTo("Service One"); assertThat(catalog.getServiceDefinitions().get(0).getDescription()).isEqualTo("Description for Service One"); assertThat(catalog.getServiceDefinitions().get(0).isBindable()).isTrue(); assertThat(catalog.getServiceDefinitions().get(0).isBindingsRetrievable()).isTrue(); assertThat(catalog.getServiceDefinitions().get(0).isInstancesRetrievable()).isTrue(); assertThat(catalog.getServiceDefinitions().get(0).isPlanUpdateable()).isTrue(); assertThat(catalog.getServiceDefinitions().get(0).getMetadata()).containsOnly(entry("key1", "value1"), entry("key2", "value2")); assertThat(catalog.getServiceDefinitions().get(0).getRequires()).containsOnly("syslog_drain", "route_forwarding"); assertThat(catalog.getServiceDefinitions().get(0).getTags()).containsOnly("tag1", "tag2"); assertThat(catalog.getServiceDefinitions().get(0).getDashboardClient().getId()).isEqualTo("dashboard-id"); 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(0).getPlans().get(1).getMetadata()).containsOnly(entry("key1", "value1"), entry("key2", "value2")); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).isBindable()).isTrue(); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).isFree()).isTrue(); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).getSchemas().getServiceInstanceSchema().getCreateMethodSchema().getParameters()) .containsOnly(entry("$schema", "http://example.com/service/create/schema"), entry("type", "object")); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).getSchemas().getServiceInstanceSchema().getUpdateMethodSchema().getParameters()) .containsOnly(entry("$schema", "http://example.com/service/update/schema"), entry("type", "object")); assertThat(catalog.getServiceDefinitions().get(0).getPlans().get(1).getSchemas().getServiceBindingSchema().getCreateMethodSchema().getParameters()) .containsOnly(entry("$schema", "http://example.com/service/create/schema"), entry("type", "object")); assertThat(catalog.getServiceDefinitions().get(1).getId()).isEqualTo("service-two-id");
@SuppressWarnings("unchecked") private void assertResult(MvcResult mvcResult) throws Exception { List<Plan> plans = serviceDefinition.getPlans(); Schemas schemas = plans.get(1).getSchemas(); .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("$.services", hasSize(1))) .andExpect(jsonPath("$.services[*].id", contains(serviceDefinition.getId()))) .andExpect(jsonPath("$.services[*].name", contains(serviceDefinition.getName()))) .andExpect(jsonPath("$.services[*].description", contains(serviceDefinition.getDescription()))) .andExpect(jsonPath("$.services[*].bindable", contains(serviceDefinition.isBindable()))) .andExpect(jsonPath("$.services[*].requires[*]", containsInAnyOrder( SERVICE_REQUIRES_SYSLOG_DRAIN.toString(),
/** * Construct a {@link ServiceDefinition} from the provided values. * * @return the newly constructed {@literal ServiceDefinition} */ public ServiceDefinition build() { return new ServiceDefinition(id, name, description, bindable, planUpdateable, instancesRetrievable, bindingsRetrievable, plans, tags, metadata, requires, dashboardClient); } }
}}; ServiceDefinition serviceDefinition = ServiceDefinition.builder() .id("service-definition-id-one") .name("service-definition-one") .build(); assertThat(serviceDefinition.getId()).isEqualTo("service-definition-id-one"); assertThat(serviceDefinition.getName()).isEqualTo("service-definition-one"); assertThat(serviceDefinition.getDescription()).isEqualTo("Service Definition One"); assertThat(serviceDefinition.getPlans()).hasSize(1); assertThat(serviceDefinition.isBindable()).isEqualTo(true); assertThat(serviceDefinition.isPlanUpdateable()).isEqualTo(true); assertThat(serviceDefinition.isInstancesRetrievable()).isEqualTo(true); assertThat(serviceDefinition.isBindingsRetrievable()).isEqualTo(true); assertThat(serviceDefinition.getTags()).contains("tag1", "tag2"); assertThat(serviceDefinition.getRequires()).contains( SERVICE_REQUIRES_ROUTE_FORWARDING.toString(), SERVICE_REQUIRES_SYSLOG_DRAIN.toString(), SERVICE_REQUIRES_VOLUME_MOUNT.toString(), "another_requires"); assertThat(serviceDefinition.getMetadata()).contains( entry("field1", "value1"), entry("field2", "value2"), entry("field3", "value3"), entry("field4", "value4")); assertThat(serviceDefinition.getDashboardClient()).isNotNull();
private void assertCatalog(final String uri) { List<Plan> plans = serviceDefinition.getPlans(); Schemas schemas = plans.get(1).getSchemas(); Map<String, Object> createServiceInstanceSchema = schemas.getServiceInstanceSchema().getCreateMethodSchema().getParameters(); .jsonPath("$.services").isArray() .jsonPath("$.services[0]").isNotEmpty() .jsonPath("$.services[0].id").isEqualTo(serviceDefinition.getId()) .jsonPath("$.services[0].name").isEqualTo(serviceDefinition.getName()) .jsonPath("$.services[0].description").isEqualTo(serviceDefinition.getDescription()) .jsonPath("$.services[0].bindable").isEqualTo(serviceDefinition.isBindable()) .jsonPath("$.services[0].plan_updateable").doesNotExist() .jsonPath("$.services[0].instances_retrievable").doesNotExist()
private void initializeMap() { for (ServiceDefinition def: catalog.getServiceDefinitions()) { serviceDefs.put(def.getId(), def); } }
@Before public void setUp() { controller = new ServiceInstanceBindingController(catalogService, bindingService); when(catalogService.getServiceDefinition(anyString())) .thenReturn(Mono.just(ServiceDefinition.builder().build())); when(catalogService.getServiceDefinition(isNull())) .thenReturn(Mono.empty()); }
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(); }); }
protected void setupCatalogService() { when(catalogService.getServiceDefinition(isNull())) .thenReturn(Mono.empty()); when(catalogService.getServiceDefinition(eq(serviceDefinition.getId()))) .thenReturn(Mono.just(serviceDefinition)); }
@RequestHeader(value = ServiceBrokerRequest.ORIGINATING_IDENTITY_HEADER, required = false) String originatingIdentityString) { return getServiceDefinition(serviceDefinitionId) .switchIfEmpty(Mono.just(ServiceDefinition.builder().build())) .flatMap(serviceDefinition -> getServiceDefinitionPlan(serviceDefinition, planId) .map(DeleteServiceInstanceBindingRequest.builder()::plan)
@Test public void updateServiceInstanceWithoutSyncAndHeadersSucceeds() throws Exception { setupCatalogService(); setupServiceInstanceService(UpdateServiceInstanceResponse.builder() .build()); MvcResult mvcResult = mockMvc.perform(patch(buildCreateUpdateUrl()) .content(updateRequestBody) .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.getServiceDefinition().getPlans().size()).isEqualTo(3); assertThat(actualRequest.getPlan()).isNull(); assertHeaderValuesNotSet(actualRequest); }
protected void setupCatalogService(ServiceDefinition serviceDefinition) { Mono<ServiceDefinition> serviceDefinitionMono; if (serviceDefinition == null) { serviceDefinitionMono = Mono.empty(); } else { serviceDefinitionMono = Mono.just(serviceDefinition); } when(catalogService.getServiceDefinition(isNull())) .thenReturn(Mono.empty()); when(catalogService.getServiceDefinition(eq(this.serviceDefinition.getId()))) .thenReturn(serviceDefinitionMono); }