use of io.syndesis.common.model.connection.ConnectorSettings in project syndesis by syndesisio.
the class BaseSwaggerConnectorGenerator method info.
@Override
public final ConnectorSummary info(final ConnectorTemplate connectorTemplate, final ConnectorSettings connectorSettings) {
final SwaggerModelInfo swaggerInfo = parseSpecification(connectorSettings, true);
try {
// No matter if the validation fails, try to process the swagger
final Connector connector = basicConnector(connectorTemplate, connectorSettings);
final Map<String, Path> paths = swaggerInfo.getModel().getPaths();
final AtomicInteger total = new AtomicInteger(0);
final Map<String, Integer> tagCounts = //
paths.entrySet().stream().flatMap(//
p -> p.getValue().getOperations().stream()).peek(//
o -> total.incrementAndGet()).flatMap(//
o -> o.getTags().stream().distinct()).collect(//
Collectors.groupingBy(//
Function.identity(), //
Collectors.reducing(0, (e) -> 1, Integer::sum)));
final ActionsSummary actionsSummary = //
new ActionsSummary.Builder().totalActions(//
total.intValue()).actionCountByTags(//
tagCounts).build();
return new ConnectorSummary.Builder().createFrom(connector).actionsSummary(actionsSummary).errors(swaggerInfo.getErrors()).warnings(swaggerInfo.getWarnings()).build();
} catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") final Exception ex) {
if (!swaggerInfo.getErrors().isEmpty()) {
// Just log and return the validation errors if any
LOG.error("An error occurred while trying to create a swagger connector", ex);
return new ConnectorSummary.Builder().errors(swaggerInfo.getErrors()).warnings(swaggerInfo.getWarnings()).build();
}
throw SyndesisServerException.launderThrowable("An error occurred while trying to create a swagger connector", ex);
}
}
use of io.syndesis.common.model.connection.ConnectorSettings in project syndesis by syndesisio.
the class BaseSwaggerConnectorGeneratorTest method shouldProvideInfoFromPetstoreSwagger.
@Test
public void shouldProvideInfoFromPetstoreSwagger() throws IOException {
final String specification = resource("/swagger/petstore.swagger.json");
final ConnectorSettings connectorSettings = //
new ConnectorSettings.Builder().putConfiguredProperty("specification", //
specification).build();
final ConnectorSummary summary = generator.info(SWAGGER_TEMPLATE, connectorSettings);
final ActionsSummary actionsSummary = new ActionsSummary.Builder().totalActions(20).putActionCountByTag("store", 4).putActionCountByTag("user", 8).putActionCountByTag("pet", 8).build();
final ConnectorSummary expected = //
new ConnectorSummary.Builder().name(//
"Swagger Petstore").actionsSummary(//
actionsSummary).build();
assertThat(summary).isEqualToIgnoringGivenFields(expected, "icon", "description", "properties", "warnings");
assertThat(summary.getIcon()).startsWith("data:image");
assertThat(summary.getDescription()).startsWith("This is a sample server Petstore server");
assertThat(summary.getProperties().keySet()).contains("host", "basePath", "authenticationType", "clientId", "clientSecret", "accessToken", "authorizationEndpoint", "specification");
}
use of io.syndesis.common.model.connection.ConnectorSettings in project syndesis by syndesisio.
the class BaseSwaggerConnectorGeneratorTest method shouldCreateSecurityConfigurationFromReverbSwagger.
@Test
public void shouldCreateSecurityConfigurationFromReverbSwagger() throws IOException {
final String specification = resource("/swagger/reverb.swagger.yaml");
final ConnectorSettings connectorSettings = //
new ConnectorSettings.Builder().name(//
"Reverb API").description(//
"Invokes Reverb API").icon(//
"fa-music").putConfiguredProperty("specification", //
specification).build();
final Connector generated = generator.generate(SWAGGER_TEMPLATE, connectorSettings);
assertThat(generated.getProperties().keySet()).contains("accessToken", "authorizationEndpoint", "tokenEndpoint", "clientId", "clientSecret");
assertThat(generated.getProperties().get("authenticationType").getEnum()).containsExactly(new ConfigurationProperty.PropertyValue.Builder().value("oauth2").label("OAuth 2.0").build());
}
use of io.syndesis.common.model.connection.ConnectorSettings in project syndesis by syndesisio.
the class BaseSwaggerConnectorGeneratorTest method shouldReportErrorsFromInvalidPetstoreSwagger.
@Test
public void shouldReportErrorsFromInvalidPetstoreSwagger() throws IOException {
final String specification = resource("/swagger/invalid/invalid-scheme.petstore.swagger.json");
final ConnectorSettings connectorSettings = //
new ConnectorSettings.Builder().putConfiguredProperty("specification", //
specification).build();
final ConnectorSummary summary = generator.info(SWAGGER_TEMPLATE, connectorSettings);
assertThat(summary.getErrors()).hasSize(1);
assertThat(summary.getWarnings()).isEmpty();
}
use of io.syndesis.common.model.connection.ConnectorSettings in project syndesis by syndesisio.
the class ConnectorGeneratorTest method shouldCreateBaseConnectorsWithGivenNameAndDescription.
@Test
public void shouldCreateBaseConnectorsWithGivenNameAndDescription() {
final ConnectorSettings settings = new ConnectorSettings.Builder().name("given-name").description("given-description").putConfiguredProperty("property2", "value2").build();
final Connector connector = generator.baseConnectorFrom(template, settings);
//
assertThat(connector).isEqualToIgnoringGivenFields(//
new Connector.Builder().name(//
"given-name").description(//
"given-description").connectorGroup(//
template.getConnectorGroup()).connectorGroupId(//
"template-group").properties(//
template.getConnectorProperties()).putConfiguredProperty("property2", "value2").build(), "id", "icon");
assertThat(connector.getIcon()).isEqualTo("data:image/svg+xml,dummy");
}
Aggregations