Search in sources :

Example 51 with TSalesforceInputProperties

use of org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties in project components by Talend.

the class SalesforceProxyTestIT method testProxyWithBulkQuery.

@Test
public void testProxyWithBulkQuery() {
    TSalesforceInputDefinition definition = (TSalesforceInputDefinition) getComponentService().getComponentDefinition(TSalesforceInputDefinition.COMPONENT_NAME);
    TSalesforceInputProperties properties = (TSalesforceInputProperties) definition.createRuntimeProperties();
    properties.connection.bulkConnection.setValue(true);
    properties.queryMode.setValue(QueryMode.Bulk);
    SalesforceRuntimeTestUtil util = new SalesforceRuntimeTestUtil();
    properties.module.moduleName.setValue(util.getTestModuleName());
    properties.module.main.schema.setValue(util.getTestSchema1());
    properties.connection.userPassword.userId.setValue(userId);
    properties.connection.userPassword.password.setValue(password);
    properties.connection.userPassword.securityKey.setValue(securityKey);
    Source source = new SalesforceSource();
    source.initialize(null, properties);
    org.talend.daikon.properties.ValidationResult vr = source.validate(null);
    Assert.assertEquals(ValidationResult.Result.OK, vr.getStatus());
    Reader reader = source.createReader(null);
    try {
        reader.start();
        do {
            reader.getCurrent();
        } while (reader.advance());
        reader.close();
    } catch (Exception e) {
        Assert.fail(e.getMessage());
    }
}
Also used : ValidationResult(org.talend.daikon.properties.ValidationResult) SalesforceRuntimeTestUtil(org.talend.components.salesforce.test.SalesforceRuntimeTestUtil) TSalesforceInputDefinition(org.talend.components.salesforce.tsalesforceinput.TSalesforceInputDefinition) Reader(org.talend.components.api.component.runtime.Reader) TSalesforceInputProperties(org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties) Source(org.talend.components.api.component.runtime.Source) Test(org.junit.Test)

Example 52 with TSalesforceInputProperties

use of org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties in project components by Talend.

the class SalesforceSessionReuseTestIT method testInputReuseSession.

/*
    * If the logic changes for this test please specify appropriate timeout.
    * The average execution time for this test 3.2-4.7 sec.
    */
@Test(timeout = 40_000)
public void testInputReuseSession() throws Throwable {
    File sessionFolder = new File(tempFolder.getRoot().getPath() + "/tsalesforceinput/");
    assertEquals(0, sessionFolder.getTotalSpace());
    LOGGER.debug("session folder: " + sessionFolder.getAbsolutePath());
    // $NON-NLS-1$
    TSalesforceInputProperties props = (TSalesforceInputProperties) new TSalesforceInputProperties("foo").init();
    props.module.moduleName.setValue(EXISTING_MODULE_NAME);
    props.module.main.schema.setValue(getMakeRowSchema(false));
    props.connection = setupProps(null, !ADD_QUOTES);
    // setup session function
    props.connection.reuseSession.setValue(true);
    props.connection.sessionDirectory.setValue(sessionFolder.getAbsolutePath());
    // Init session
    assertEquals(ValidationResult.Result.OK, testConnection(props).getStatus());
    assertNotEquals(0, sessionFolder.getTotalSpace());
    // Invalid session, test whether it can be renew the session
    invalidSession(props.connection, null);
    List<IndexedRecord> records = readRows(props);
    assertNotNull(records);
    LOGGER.debug("current records number in module " + EXISTING_MODULE_NAME + ": " + records.size());
    assertNotEquals(0, records.size());
    // Set wrong pwd to test reuse session from session folder
    props.connection.userPassword.password.setValue(WRONG_PWD);
    try {
        testConnection(props);
        records = readRows(props);
        assertNotNull(records);
        LOGGER.debug("current records number in module " + EXISTING_MODULE_NAME + ": " + records.size());
        assertNotEquals(0, records.size());
        // Test reuse session fails with wrong pwd
        invalidSession(props.connection, null);
    // This means that the session is disabled by current test
    } catch (IOException e) {
        Throwable caused = e.getCause();
        // Maybe get exception when same account run in parallel
        // The session maybe disabled by other test
        assertThat(caused, instanceOf(LoginFault.class));
        assertEquals(ExceptionCode.INVALID_LOGIN, ((LoginFault) caused).getExceptionCode());
        LOGGER.debug("session is disabled by other test!");
    }
    try {
        readRows(props);
    } catch (IOException e) {
        Throwable caused = e.getCause();
        // Should login fails with wrong pwd
        assertThat(caused, instanceOf(LoginFault.class));
        assertEquals(ExceptionCode.INVALID_LOGIN, ((LoginFault) caused).getExceptionCode());
        LOGGER.debug("expect login fails: " + e.getMessage());
    }
    // Disable reuse session function
    props.connection.reuseSession.setValue(false);
    LOGGER.debug("expect login fails:");
    assertEquals(ValidationResult.Result.ERROR, testConnection(props).getStatus());
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) LoginFault(com.sforce.soap.partner.fault.LoginFault) IOException(java.io.IOException) TSalesforceInputProperties(org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties) File(java.io.File) Test(org.junit.Test)

Example 53 with TSalesforceInputProperties

use of org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties in project components by Talend.

the class SalesforceSourceOrSinkTestIT method testInitialize.

@Test
public void testInitialize() {
    SalesforceSourceOrSink salesforceSourceOrSink = new SalesforceSourceOrSink();
    TSalesforceInputProperties properties = new TSalesforceInputProperties(null);
    salesforceSourceOrSink.initialize(null, properties);
    assertEquals(properties.connection, salesforceSourceOrSink.getConnectionProperties());
}
Also used : TSalesforceInputProperties(org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties) Test(org.junit.Test)

Example 54 with TSalesforceInputProperties

use of org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties in project components by Talend.

the class SalesforceSourceOrSinkTestIT method testSalesForcePasswordExpired.

@Test(expected = ConnectionException.class)
public void testSalesForcePasswordExpired() throws ConnectionException {
    SalesforceSourceOrSink salesforceSourceOrSink = new SalesforceSourceOrSink();
    TSalesforceInputProperties properties = (TSalesforceInputProperties) new TSalesforceInputProperties(null).init();
    salesforceSourceOrSink.initialize(null, properties);
    ConnectorConfig config = new ConnectorConfig();
    config.setUsername(StringUtils.strip(USER_ID_EXPIRED, "\""));
    String password = StringUtils.strip(PASSWORD_EXPIRED, "\"");
    String securityKey = StringUtils.strip(SECURITY_KEY_EXPIRED, "\"");
    if (StringUtils.isNotEmpty(securityKey)) {
        password = password + securityKey;
    }
    config.setPassword(password);
    PartnerConnection connection = null;
    try {
        connection = salesforceSourceOrSink.doConnection(config, true);
    } catch (LoginFault ex) {
        Assert.fail("Must be an exception related to expired password, not the Login Fault.");
    } finally {
        if (null != connection) {
            connection.logout();
        }
    }
}
Also used : ConnectorConfig(com.sforce.ws.ConnectorConfig) PartnerConnection(com.sforce.soap.partner.PartnerConnection) LoginFault(com.sforce.soap.partner.fault.LoginFault) TSalesforceInputProperties(org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties) Test(org.junit.Test)

Example 55 with TSalesforceInputProperties

use of org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties in project components by Talend.

the class SalesforceSource method createReader.

@Override
public BoundedReader createReader(RuntimeContainer adaptor) {
    if (properties instanceof TSalesforceInputProperties) {
        TSalesforceInputProperties sfInProperties = (TSalesforceInputProperties) properties;
        boolean isBulk = TSalesforceInputProperties.QueryMode.Bulk.equals(sfInProperties.queryMode.getValue());
        sfInProperties.connection.bulkConnection.setValue(isBulk);
        if (isBulk) {
            return new SalesforceBulkQueryInputReader(adaptor, this, sfInProperties);
        } else {
            return new SalesforceInputReader(adaptor, this, sfInProperties);
        }
    } else if (properties instanceof TSalesforceGetServerTimestampProperties) {
        return new SalesforceServerTimeStampReader(adaptor, this, (TSalesforceGetServerTimestampProperties) properties);
    } else if (properties instanceof TSalesforceGetDeletedProperties) {
        return new SalesforceGetDeletedReader(adaptor, this, (TSalesforceGetDeletedProperties) properties);
    } else if (properties instanceof TSalesforceGetUpdatedProperties) {
        return new SalesforceGetUpdatedReader(adaptor, this, (TSalesforceGetUpdatedProperties) properties);
    } else if (properties instanceof TSalesforceBulkExecProperties) {
        ((TSalesforceBulkExecProperties) properties).connection.bulkConnection.setValue(true);
        return new SalesforceBulkExecReader(adaptor, this, (TSalesforceBulkExecProperties) properties);
    }
    return null;
}
Also used : TSalesforceGetDeletedProperties(org.talend.components.salesforce.tsalesforcegetdeleted.TSalesforceGetDeletedProperties) TSalesforceGetServerTimestampProperties(org.talend.components.salesforce.tsalesforcegetservertimestamp.TSalesforceGetServerTimestampProperties) TSalesforceInputProperties(org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties) TSalesforceGetUpdatedProperties(org.talend.components.salesforce.tsalesforcegetupdated.TSalesforceGetUpdatedProperties) TSalesforceBulkExecProperties(org.talend.components.salesforce.tsalesforcebulkexec.TSalesforceBulkExecProperties)

Aggregations

TSalesforceInputProperties (org.talend.components.salesforce.tsalesforceinput.TSalesforceInputProperties)55 Test (org.junit.Test)32 IndexedRecord (org.apache.avro.generic.IndexedRecord)30 Schema (org.apache.avro.Schema)11 ArrayList (java.util.ArrayList)10 ComponentDefinition (org.talend.components.api.component.ComponentDefinition)10 TSalesforceOutputProperties (org.talend.components.salesforce.tsalesforceoutput.TSalesforceOutputProperties)9 TSalesforceOutputDefinition (org.talend.components.salesforce.tsalesforceoutput.TSalesforceOutputDefinition)7 Result (org.talend.components.api.component.runtime.Result)6 DefaultComponentRuntimeContainerImpl (org.talend.components.api.container.DefaultComponentRuntimeContainerImpl)5 IOException (java.io.IOException)4 SalesforceConnectionProperties (org.talend.components.salesforce.SalesforceConnectionProperties)4 Form (org.talend.daikon.properties.presentation.Form)4 PartnerConnection (com.sforce.soap.partner.PartnerConnection)3 LoginFault (com.sforce.soap.partner.fault.LoginFault)3 File (java.io.File)3 List (java.util.List)3 Ignore (org.junit.Ignore)3 RuntimeContainer (org.talend.components.api.container.RuntimeContainer)3 TSalesforceInputDefinition (org.talend.components.salesforce.tsalesforceinput.TSalesforceInputDefinition)3