@Override protected BiFunction<Swagger, ConfigurationProperty, Optional<ConfigurationProperty>> propertyValueExtractor() { return (swagger, template) -> { final Map<String, SecuritySchemeDefinition> securityDefinitions = swagger.getSecurityDefinitions(); if (securityDefinitions == null || securityDefinitions.isEmpty()) { return Optional .of(new ConfigurationProperty.Builder().createFrom(template).defaultValue("none").addEnum(NO_SECURITY).build()); } final PropertyValue[] enums = securityDefinitions.values().stream()// .map(SecuritySchemeDefinition::getType)// .filter(SupportedAuthenticationTypes.SUPPORTED::contains)// .map(SupportedAuthenticationTypes::valueOf)// .map(SupportedAuthenticationTypes::asPropertyValue)// .toArray(l -> new ConfigurationProperty.PropertyValue[l]); final ConfigurationProperty.Builder authenticationType = new ConfigurationProperty.Builder().createFrom(template) .addEnum(enums); if (enums.length == 1) { authenticationType.defaultValue(enums[0].getValue()); } return Optional.of(authenticationType.build()); }; } },
@Override protected BiFunction<Swagger, ConfigurationProperty, Optional<ConfigurationProperty>> propertyValueExtractor() { return (swagger, template) -> { final Map<String, SecuritySchemeDefinition> securityDefinitions = swagger.getSecurityDefinitions(); if (securityDefinitions == null || securityDefinitions.isEmpty()) { return Optional .of(new ConfigurationProperty.Builder().createFrom(template).defaultValue("none").addEnum(NO_SECURITY).build()); } final PropertyValue[] enums = securityDefinitions.values().stream()// .map(SecuritySchemeDefinition::getType)// .filter(SupportedAuthenticationTypes.SUPPORTED::contains)// .map(SupportedAuthenticationTypes::valueOf)// .map(SupportedAuthenticationTypes::asPropertyValue)// .toArray(l -> new ConfigurationProperty.PropertyValue[l]); final ConfigurationProperty.Builder authenticationType = new ConfigurationProperty.Builder().createFrom(template) .addEnum(enums); if (enums.length == 1) { authenticationType.defaultValue(enums[0].getValue()); } return Optional.of(authenticationType.build()); }; } },
@Test public void shouldProvideActionDefinition() { @SuppressWarnings({"unchecked", "rawtypes"}) final Class<Entity<Map<String, Object>>> entityType = (Class) Entity.class; ArgumentCaptor.forClass(entityType); final DynamicActionMetadata suggestions = new DynamicActionMetadata.Builder() .putProperty("sObjectName", Arrays.asList(DynamicActionMetadata.ActionPropertySuggestion.Builder.of("Account", "Account"), DynamicActionMetadata.ActionPropertySuggestion.Builder.of("Contact", "Contact"))) .build(); when(metadataCommand.execute()).thenReturn(suggestions); when(((HystrixInvokableInfo<?>) metadataCommand).isSuccessfulExecution()).thenReturn(true); final Response response = handler.enrichWithMetadata(SALESFORCE_CREATE_OR_UPDATE, Collections.emptyMap()); assertThat(response.getStatus()).isEqualTo(Status.OK.getStatusCode()); @SuppressWarnings("unchecked") final Meta<ConnectorDescriptor> meta = (Meta<ConnectorDescriptor>) response.getEntity(); final ConnectorDescriptor enrichedDefinitioin = new ConnectorDescriptor.Builder() .createFrom(createOrUpdateSalesforceObjectDescriptor) .replaceConfigurationProperty("sObjectName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Account", "Account"), ConfigurationProperty.PropertyValue.Builder.of("Contact", "Contact"))) .inputDataShape(ConnectionActionHandler.ANY_SHAPE)// .build(); assertThat(meta.getValue()).isEqualTo(enrichedDefinitioin); }
.createFrom(createOrUpdateSalesforceObjectDescriptor) .replaceConfigurationProperty("sObjectName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Contact", "Contact"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("ID", "Contact ID"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("Email", "Email"))) .replaceConfigurationProperty("sObjectIdName", c -> c.addEnum(ConfigurationProperty.PropertyValue.Builder.of("TwitterScreenName__c", "Twitter Screen Name")))