@Test public void withNoIntegrationsConnectionUsageShouldBeZero() { when(dataManager.fetchAll(Integration.class)).thenReturn(ListResult.of(emptyList())); assertThat(handler.augmentedWithUsage(c1)).isEqualTo(new Connection.Builder().createFrom(c1).uses(0).build()); }
protected final Step newEndpointStep(String connectorId, String actionId, Consumer<Connection.Builder> connectionConsumer, Consumer<Step.Builder> stepConsumer) { Connector connector = resourceManager.mandatoryLoadConnector(connectorId); ConnectorAction action = resourceManager.mandatoryLookupAction(connector, actionId); Connection.Builder connectionBuilder = new Connection.Builder().connector(connector); connectionConsumer.accept(connectionBuilder); Step.Builder stepBuilder = new Step.Builder().stepKind(StepKind.endpoint).action(action).connection(connectionBuilder.build()); stepConsumer.accept(stepBuilder); return stepBuilder.build(); }
@Test public void shouldApplyAdditionalProperties() { final SalesforceProperties properties = new SalesforceProperties(); properties.setAppId("appId"); properties.setAppSecret("appSecret"); final AccessGrant accessGrant = new AccessGrant("accessToken", "scope", "refreshToken", 1L); final SalesforceConnectionFactory salesforce = mock(SalesforceConnectionFactory.class); @SuppressWarnings("unchecked") final org.springframework.social.connect.Connection<Salesforce> salesforceConnection = mock( org.springframework.social.connect.Connection.class); final Salesforce salesforceApi = mock(Salesforce.class); when(salesforceConnection.getApi()).thenReturn(salesforceApi); when(salesforceApi.getInstanceUrl()).thenReturn("https://instance.salesforce.com"); when(salesforce.createConnection(accessGrant)).thenReturn(salesforceConnection); final Connection.Builder mutableConnection = new Connection.Builder(); final SalesforceApplicator applicator = new SalesforceApplicator(salesforce, properties); applicator.additionalApplication(mutableConnection, accessGrant); assertThat(mutableConnection.build().getConfiguredProperties()) .containsExactly(entry("instanceUrl", "https://instance.salesforce.com")); }
@Test public void shouldApplyAccessGrants() { final SocialProperties properties = new SocialProperties() { }; properties.setAppId("appId"); properties.setAppSecret("appSecret"); final OAuth2Applicator applicator = new OAuth2Applicator(properties); applicator.setAccessTokenProperty("accessTokenProperty"); applicator.setClientIdProperty("clientIdProperty"); applicator.setClientSecretProperty("clientSecretProperty"); applicator.setRefreshTokenProperty("refreshTokenProperty"); final Connection connection = new Connection.Builder().build(); final Connection result = applicator.applyTo(connection, new AccessGrant("accessToken", "scope", "refreshToken", 1L)); final Connection expected = new Connection.Builder().putConfiguredProperty("accessTokenProperty", "accessToken") .putConfiguredProperty("clientIdProperty", "appId") .putConfiguredProperty("clientSecretProperty", "appSecret") .putConfiguredProperty("refreshTokenProperty", "refreshToken").build(); assertThat(result).isEqualToIgnoringGivenFields(expected, "lastUpdated"); assertThat(result.getLastUpdated()).isPresent(); }
@Test public void shouldApplyReceivedCredentialsToConnections() { final CredentialProvider credentialProvider = mock(CredentialProvider.class); when(locator.providerWithId("providerId")).thenReturn(credentialProvider); final CredentialFlowState flowState = new OAuth2CredentialFlowState.Builder().providerId("providerId") .returnUrl(URI.create("/ui#state")).code("code").state("state").build(); final Connection connection = new Connection.Builder() .connector(new Connector.Builder().putProperty("key", new ConfigurationProperty.Builder().build()).build()) .build(); when(credentialProvider.applyTo(new Connection.Builder().createFrom(connection).isDerived(true).build(), flowState)) .then(a -> new Connection.Builder().createFrom(a.getArgument(0)) .putConfiguredProperty("key", "value").build()); final Connection finishedConnection = credentials.apply(connection, flowState); assertThat(finishedConnection).isNotNull(); assertThat(finishedConnection.getConfiguredProperties()).contains(entry("key", "value")); assertThat(finishedConnection.isDerived()).isTrue(); }
protected Step newSqlEndpointStep(String actionId, Consumer<Step.Builder> stepConsumer, Consumer<ConnectorDescriptor.Builder> descriptorConsumer) { final Connector connector = getResourceManager().mandatoryLoadConnector("sql"); final ConnectorAction action = getResourceManager().mandatoryLookupAction(connector, actionId); final ConnectorDescriptor.Builder descriptorBuilder = new ConnectorDescriptor.Builder().createFrom(action.getDescriptor()); descriptorConsumer.accept(descriptorBuilder); final Step.Builder builder = new Step.Builder() .stepKind(StepKind.endpoint) .action(new ConnectorAction.Builder().createFrom(action).descriptor(descriptorBuilder.build()).build()) .connection(new io.syndesis.common.model.connection.Connection.Builder() .connector(connector) .putConfiguredProperty("user", db.properties.getProperty("sql-connector.user")) .putConfiguredProperty("password", db.properties.getProperty("sql-connector.password")) .putConfiguredProperty("url", db.properties.getProperty("sql-connector.url")) .build()); stepConsumer.accept(builder); return builder.build(); } }
@Test public void shouldNotComputeConnectorConfiguredPropertiesAsMissing() { final ConnectionUpdateHandler updateHandler = new ConnectionUpdateHandler(dataManager, null, validator); final Connection connection = new Connection.Builder()// .id("connection")// .putConfiguredProperty("req2", "value2")// .build(); final ConfigurationProperty required = new ConfigurationProperty.Builder().required(true).build(); final Connector sameConnector = new Connector.Builder()// .id("new-connector")// .putProperty("req1", required)// .putProperty("req2", required)// .putConfiguredProperty("req1", "value1")// .build(); when(dataManager.fetchByPropertyValue(ConnectionBulletinBoard.class, "targetResourceId", "connection")) .thenReturn(Optional.empty()); final ConnectionBulletinBoard board = updateHandler.computeBoard(connection, sameConnector, sameConnector); assertThat(board.getMessages()).isEmpty(); } }
private Connection newSqlConnection(Connector connector) { assertNotNull(connector); Map<String, String> configuredProperties = new HashMap<>(); configuredProperties.put("password", "password"); configuredProperties.put("user", "developer"); configuredProperties.put("schema", "sampledb"); configuredProperties.put("url", "jdbc:postgresql://syndesis-db:5432/sampledb"); return new Connection.Builder() .id(CONNECTION_ID) .addTag("dynamic") .configuredProperties(configuredProperties) .connector(connector) .connectorId("sql") .description("Connection to Sampledb") .icon("fa-database") .name("PostgresDB") .build(); }
private Connection includeConnector(Connection connection) { if (connection == null) { return connection; } Optional<Connector> connectorOptional = connection.getConnector(); if (connectorOptional != null && connectorOptional.isPresent()) { return connection; } Connector connector = getDataManager().fetch(Connector.class, connection.getConnectorId()); if (connector == null) { return connection; } Connection.Builder builder = new Connection.Builder(); return builder.createFrom(connection) .connector(connector) .build(); }
private static Connection connectionUsed(final Connection connection, final int times) { return new Connection.Builder().createFrom(connection).uses(times).build(); }
private static Connection newConnectionWithId(final String id) { return new Connection.Builder().id(id).build(); }
/** * Default implementation that applies {@link SocialProperties} and * {@link AccessGrant} to {@link Connection.Builder}. */ @Override public final Connection applyTo(final Connection connection, final AccessGrant accessGrant) { final Connection.Builder mutableConnection = new Connection.Builder().createFrom(connection).lastUpdated(new Date()); Applicator.applyProperty(mutableConnection, clientIdProperty, socialProperties.getAppId()); Applicator.applyProperty(mutableConnection, clientSecretProperty, socialProperties.getAppSecret()); Applicator.applyProperty(mutableConnection, accessTokenProperty, accessGrant.getAccessToken()); Applicator.applyProperty(mutableConnection, refreshTokenProperty, accessGrant.getRefreshToken()); final Long expireTime = accessGrant.getExpireTime(); Applicator.applyProperty(mutableConnection, accessTokenExpiresAtProperty, expireTime == null ? null : expireTime.toString()); additionalApplication(mutableConnection, accessGrant); return mutableConnection.build(); }
protected Step newSqlEndpointStep(String actionId, Consumer<Step.Builder> consumer) { final Connector connector = getResourceManager().mandatoryLoadConnector("sql"); final ConnectorAction action = getResourceManager().mandatoryLookupAction(connector, actionId); final Step.Builder builder = new Step.Builder() .stepKind(StepKind.endpoint) .action(action) .connection(new io.syndesis.common.model.connection.Connection.Builder() .connector(connector) .putConfiguredProperty("user", db.properties.getProperty("sql-connector.user")) .putConfiguredProperty("password", db.properties.getProperty("sql-connector.password")) .putConfiguredProperty("url", db.properties.getProperty("sql-connector.url")) .build()); consumer.accept(builder); return builder.build(); }
/** * Creates an immutable copy of a {@link Connection} value. * Uses accessors to get values to initialize the new immutable instance. * If an instance is already immutable, it is returned as is. * @param instance The instance to copy * @return A copied immutable Connection instance */ public static Connection copyOf(Connection instance) { if (instance instanceof ImmutableConnection) { return (ImmutableConnection) instance; } return new Connection.Builder() .createFrom(instance) .build(); }
private static Connection dummyConnection() { Connector connector = new Connector.Builder() .addAction( new ConnectorAction.Builder().id("fromAction") .descriptor(new ConnectorDescriptor.Builder().build()) .build()) .addAction( new ConnectorAction.Builder().id("toAction") .descriptor(new ConnectorDescriptor.Builder().build()) .build()) .build(); return new Connection.Builder().connector(connector).build(); } }
@Override public Connection applyTo(final Connection connection, final OAuthToken token) { final Connection.Builder mutableConnection = new Connection.Builder().createFrom(connection) .lastUpdated(new Date()); Applicator.applyProperty(mutableConnection, accessTokenValueProperty, token.getValue()); Applicator.applyProperty(mutableConnection, accessTokenSecretProperty, token.getSecret()); Applicator.applyProperty(mutableConnection, consumerKeyProperty, consumerKey); Applicator.applyProperty(mutableConnection, consumerSecretProperty, consumerSecret); return mutableConnection.build(); }
public Connection apply(final Connection updatedConnection, final CredentialFlowState flowState) { final CredentialProvider credentialProvider = providerFrom(flowState); final Connection withDerivedFlag = new Connection.Builder().createFrom(updatedConnection).isDerived(true).build(); final Connection appliedConnection = credentialProvider.applyTo(withDerivedFlag, flowState); final Map<String, String> configuredProperties = appliedConnection.getConfiguredProperties(); final Map<String, ConfigurationProperty> properties = updatedConnection.getConnector() .orElseGet(() -> dataManager.fetch(Connector.class, updatedConnection.getConnectorId())).getProperties(); final Map<String, String> encryptedConfiguredProperties = encryptionComponent.encryptPropertyValues(configuredProperties, properties); return new Connection.Builder().createFrom(appliedConnection).configuredProperties(encryptedConfiguredProperties).build(); }
@Test public void shouldNotApplyNullOrEmptyPropertyValues() { final Connection.Builder connection = new Connection.Builder(); Applicator.applyProperty(connection, "emptyProperty", ""); Applicator.applyProperty(connection, "nullProperty", ""); final Connection built = connection.build(); assertThat(built.getConfiguredProperties()).isEmpty(); } }
@Test public void shouldApplyPropertyValues() { final Connection.Builder connection = new Connection.Builder(); Applicator.applyProperty(connection, "property", "value"); final Connection built = connection.build(); assertThat(built.getConfiguredProperties()).containsEntry("property", "value"); }
@Test public void unusedConnectionsShouldHaveUseOfZero() { final Integration emptyIntegration = new Integration.Builder().build(); when(dataManager.fetchAll(Integration.class)).thenReturn(ListResult.of(emptyIntegration, emptyIntegration)); assertThat(handler.augmentedWithUsage(c1)).isEqualTo(new Connection.Builder().createFrom(c1).uses(0).build()); }