assertFalse(equiv.equivalent(null, sqlConnector, modSqlConnector)); Connection modSqlConnection = new Connection.Builder() .createFrom(sqlConnection) .connector(modSqlConnector) .build();
@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(); }
@Test public void testSanitizeScheduler() { TestResourceManager resourceManager = new TestResourceManager(); Integration source = resourceManager.newIntegration( new Step.Builder() .stepKind(StepKind.endpoint) .connection(new Connection.Builder() .id("timer-connection") .connector(TestConstants.HTTP_CONNECTOR) .build()) .putConfiguredProperty("schedulerType", "timer") .putConfiguredProperty("schedulerExpression", "1s") .action(TestConstants.HTTP_GET_ACTION) .build() ); assertThat(source.getFlows().get(0).getScheduler().isPresent()).isFalse(); Integration sanitized = ProjectGeneratorHelper.sanitize(source, resourceManager); final Flow sanitizedFlow = sanitized.getFlows().get(0); assertThat(sanitizedFlow.getScheduler().isPresent()).isTrue(); assertThat(sanitizedFlow.getScheduler().get()).hasFieldOrPropertyWithValue("type", Scheduler.Type.timer); assertThat(sanitizedFlow.getScheduler().get()).hasFieldOrPropertyWithValue("expression", "1s"); assertThat(sanitizedFlow.getSteps().get(0).getStepKind()).isEqualTo(StepKind.endpoint); assertThat(sanitizedFlow.getSteps().get(0).getConfiguredProperties()).doesNotContainKey("scheduler-type"); assertThat(sanitizedFlow.getSteps().get(0).getConfiguredProperties()).doesNotContainKey("scheduler-expression"); }
new Step.Builder() .stepKind(StepKind.endpoint) .connection(new Connection.Builder() .id("timer-connection") .connector(TestConstants.TIMER_CONNECTOR) .build()) .putConfiguredProperty("period", "5000") .action(TestConstants.PERIODIC_TIMER_ACTION) ).build()) .build(), new Step.Builder() .stepKind(StepKind.endpoint) .connection(new Connection.Builder() .id("http-connection") .connector(TestConstants.HTTP_CONNECTOR) .build()) .putConfiguredProperty("httpUri", "http://localhost:8080/hello") .putConfiguredProperty("username", "admin")
.connection(new Connection.Builder() .id(KeyGenerator.createKey()) .connector(oldConnector) .build()) .putConfiguredProperty("username", "my-username-1") .putConfiguredProperty("password", "my-password-1") Step s2 = new Step.Builder() .stepKind(StepKind.endpoint) .connection(new Connection.Builder() .id(KeyGenerator.createKey()) .connector(newConnector) .build()) .putConfiguredProperty("username", "my-username-2") .putConfiguredProperty("password", "my-password-2")
.stepKind(StepKind.endpoint) .connection(new Connection.Builder() .putConfiguredProperty("accessKey", "my-accessKey") .putConfiguredProperty("secretKey", "my-secretKey") .putConfiguredProperty("region", "EU_CENTRAL_1") .putConfiguredProperty("bucketNameOrArn", "my-bucketNameOrArn") .connector(new Connector.Builder() .putProperty( "accessKey", .build()) .build()) .build()) .action(new ConnectorAction.Builder() .descriptor(new ConnectorDescriptor.Builder()
assertFalse(equiv.equivalent(null, sqlConnector, modSqlConnector)); Connection modSqlConnection = new Connection.Builder() .createFrom(sqlConnection) .connector(modSqlConnector) .build();
new Step.Builder() .stepKind(StepKind.endpoint) .action(new ConnectorAction.Builder() .descriptor(new ConnectorDescriptor.Builder() .componentScheme("file") .build()) .connection(new Connection.Builder() .connector(new Connector.Builder() .build()) .build()) .build())) .isInstanceOf(ConnectorStepHandler.class); new Step.Builder() .stepKind(StepKind.endpoint) .action(new ConnectorAction.Builder() .descriptor(new ConnectorDescriptor.Builder() .build()) .build()) .connection(new Connection.Builder() .connector(new Connector.Builder() .componentScheme("file").build()) .build()) .build())) .isInstanceOf(ConnectorStepHandler.class); new Step.Builder() .stepKind(StepKind.endpoint)
.action(new ConnectorAction.Builder() .id(KeyGenerator.createKey()) .descriptor(new ConnectorDescriptor.Builder() .build()) .connection(new Connection.Builder() .connector( new Connector.Builder() .id("api-provider") .build()) .build()) .build()) .build(); Step s2 = new Step.Builder()
assertFalse(equiv.equivalent(null, sqlConnector, modSqlConnector)); Connection modSqlConnection = new Connection.Builder() .createFrom(sqlConnection) .connector(modSqlConnector) .build();
.build(); final Connection connection = new Connection.Builder().connector(connector).putConfiguredProperty("clientId", "some-clientId") .build();
.action(TWITTER_MENTION_ACTION) .connection( new Connection.Builder() .connector(TWITTER_CONNECTOR) .putConfiguredProperty("accessToken", "at") .putConfiguredProperty("accessTokenSecret", "ats") .putConfiguredProperty("consumerKey", "ck") .putConfiguredProperty("consumerSecret", "cs") .build()) .putConfiguredProperty("delay", "1234") .build(),
@Test public void testSanitizeDefaultScheduler() { TestResourceManager resourceManager = new TestResourceManager(); Integration source = resourceManager.newIntegration( new Step.Builder() .stepKind(StepKind.endpoint) .connection(new Connection.Builder() .id("timer-connection") .connector(TestConstants.HTTP_CONNECTOR) .build()) .putConfiguredProperty("schedulerExpression", "1s") .action(TestConstants.HTTP_GET_ACTION) .build() ); assertThat(source.getFlows().get(0).getScheduler().isPresent()).isFalse(); Integration sanitized = ProjectGeneratorHelper.sanitize(source, resourceManager); final Flow sanitizedFlow = sanitized.getFlows().get(0); assertThat(sanitizedFlow.getScheduler().isPresent()).isTrue(); assertThat(sanitizedFlow.getScheduler().get()).hasFieldOrPropertyWithValue("type", Scheduler.Type.timer); assertThat(sanitizedFlow.getScheduler().get()).hasFieldOrPropertyWithValue("expression", "1s"); assertThat(sanitizedFlow.getSteps().get(0).getStepKind()).isEqualTo(StepKind.endpoint); assertThat(sanitizedFlow.getSteps().get(0).getConfiguredProperties()).doesNotContainKey("scheduler-type"); assertThat(sanitizedFlow.getSteps().get(0).getConfiguredProperties()).doesNotContainKey("scheduler-expression"); }
@Test public void testSanitizeConnectors() { TestResourceManager resourceManager = new TestResourceManager(); resourceManager.put(TestConstants.TIMER_CONNECTOR.getId().get(), TestConstants.TIMER_CONNECTOR); Integration source = resourceManager.newIntegration( new Step.Builder() .stepKind(StepKind.endpoint) .connection(new Connection.Builder() .id("timer-connection") .connectorId(TestConstants.TIMER_CONNECTOR.getId().get()) .build()) .putConfiguredProperty("period", "5000") .action(TestConstants.PERIODIC_TIMER_ACTION) .build() ); final Optional<Connection> unsanitizedConnection = source.getFlows().get(0).getSteps().get(0).getConnection(); assertThat(unsanitizedConnection.isPresent()).isTrue(); assertThat(unsanitizedConnection.get().getConnector().isPresent()).isFalse(); Integration sanitized = ProjectGeneratorHelper.sanitize(source, resourceManager); final Optional<Connection> sanitizedConnection = sanitized.getFlows().get(0).getSteps().get(0).getConnection(); assertThat(sanitizedConnection.isPresent()).isTrue(); assertThat(sanitizedConnection.get().getConnector().isPresent()).isTrue(); assertThat(sanitizedConnection.get().getConnector().get()).isEqualTo(TestConstants.TIMER_CONNECTOR); }
@Test public void shouldApplyTokens() { final SocialProperties properties = new SocialProperties() { }; properties.setAppId("appId"); properties.setAppSecret("appSecret"); final OAuth1Applicator applicator = new OAuth1Applicator(properties); applicator.setAccessTokenSecretProperty("accessTokenSecretProperty"); applicator.setAccessTokenValueProperty("accessTokenValueProperty"); applicator.setConsumerKeyProperty("consumerKeyProperty"); applicator.setConsumerSecretProperty("consumerSecretProperty"); final Connection connection = new Connection.Builder().build(); final Connection result = applicator.applyTo(connection, new OAuthToken("tokenValue", "tokenSecret")); final Connection expected = new Connection.Builder() .putConfiguredProperty("accessTokenSecretProperty", "tokenSecret") .putConfiguredProperty("accessTokenValueProperty", "tokenValue") .putConfiguredProperty("consumerKeyProperty", "appId") .putConfiguredProperty("consumerSecretProperty", "appSecret").build(); assertThat(result).isEqualToIgnoringGivenFields(expected, "lastUpdated"); assertThat(result.getLastUpdated()).isPresent(); } }
@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(); }
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 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 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(); }