/**
*
*/
package org.identityconnectors.oracleerp;
import static org.identityconnectors.oracleerp.OracleERPUtil.ACTION;
import static org.identityconnectors.oracleerp.OracleERPUtil.ATTRIBUTES;
import static org.identityconnectors.oracleerp.OracleERPUtil.TIMING;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.identityconnectors.common.IOUtil;
import org.identityconnectors.framework.common.exceptions.ConnectorException;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeUtil;
import org.identityconnectors.framework.common.objects.Name;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.identityconnectors.framework.common.objects.OperationalAttributes;
import org.identityconnectors.framework.common.objects.ScriptContext;
import org.identityconnectors.framework.common.objects.Uid;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
/**
* @author petr
*
*/
@Test(groups = { "integration" })
public class OracleERPOperationRunScriptOnConnectorTest extends OracleERPTestsBase {
private static final String EXPECTED_MAIL = "person@somewhere.com";
private static final String UPDATE_AFTER_ACTION =
"org.identityconnectors.oracleerp.OracleERPConnector/config/UpdateAfterAction.groovy";
/**
* Test method for
* {@link org.identityconnectors.oracleerp.OracleERPOperationRunScriptOnConnector#runScriptOnConnector(org.identityconnectors.framework.common.objects.ScriptContext, org.identityconnectors.framework.common.objects.OperationOptions)}
* .
*/
@Test
public void testRunScriptOnConnector() {
final OracleERPConfiguration cfg = getConfiguration(CONFIG_SYSADM);
final String scriptText = IOUtil.getResourceAsString(this.getClass(), UPDATE_AFTER_ACTION);
final OracleERPConnector c = getConnector(cfg);
final Set<Attribute> attrs = getAttributeSet(ACCOUNT_ALL_ATTRS);
replaceNameByRandom(attrs);
final Uid uid = c.create(ObjectClass.ACCOUNT, attrs, null);
AssertJUnit.assertNotNull(uid);
Map<String, Object> scriptArguments = new HashMap<String, Object>();
scriptArguments.put(Name.NAME, AttributeUtil.getNameFromAttributes(attrs));
scriptArguments.put(OperationalAttributes.PASSWORD_NAME, AttributeUtil.find(
OperationalAttributes.PASSWORD_NAME, attrs));
scriptArguments.put(ACTION, "update");
scriptArguments.put(TIMING, "after");
scriptArguments.put(ATTRIBUTES, AttributeUtil.toMap(attrs));
ScriptContext request = new ScriptContext(GROOVY, scriptText, scriptArguments);
final Object ret = c.runScriptOnConnector(request, null);
AssertJUnit.assertNotNull("mail not returned", ret);
AssertJUnit.assertEquals("mail value", EXPECTED_MAIL, ret);
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AccountOperationGetUserAfterAction#runScriptOnConnector(java.lang.Object, org.identityconnectors.framework.common.objects.ConnectorObjectBuilder)}
* .
*/
@Test(expectedExceptions = ConnectorException.class)
public void testRunScriptOnConnectorError() {
final OracleERPConfiguration cfg = getConfiguration(CONFIG_SYSADM);
final String scriptText = IOUtil.getResourceAsString(this.getClass(), RUN_ERROR_ACTION);
final OracleERPConnector c = getConnector(cfg);
final Set<Attribute> attrs = getAttributeSet(ACCOUNT_ALL_ATTRS);
replaceNameByRandom(attrs);
final Uid uid = c.create(ObjectClass.ACCOUNT, attrs, null);
AssertJUnit.assertNotNull(uid);
Map<String, Object> scriptArguments = new HashMap<String, Object>();
scriptArguments.put(Name.NAME, AttributeUtil.getNameFromAttributes(attrs));
scriptArguments.put(OperationalAttributes.PASSWORD_NAME, AttributeUtil.find(
OperationalAttributes.PASSWORD_NAME, attrs));
scriptArguments.put(ACTION, "update");
scriptArguments.put(TIMING, "after");
scriptArguments.put(ATTRIBUTES, AttributeUtil.toMap(attrs));
ScriptContext request = new ScriptContext(GROOVY, scriptText, scriptArguments);
final Object ret = c.runScriptOnConnector(request, null);
AssertJUnit.assertNotNull("mail not returned", ret);
AssertJUnit.assertEquals("mail value", EXPECTED_MAIL, ret);
}
/**
* Test method for
* {@link org.identityconnectors.oracleerp.AccountOperationGetUserAfterAction#runScriptOnConnector(java.lang.Object, org.identityconnectors.framework.common.objects.ConnectorObjectBuilder)}
* .
*/
@Test(expectedExceptions = ConnectorException.class)
public void testRunScriptOnConnectorParsedError() {
final OracleERPConfiguration cfg = getConfiguration(CONFIG_SYSADM);
final String scriptText = "return ( ;";
final OracleERPConnector c = getConnector(cfg);
final Set<Attribute> attrs = getAttributeSet(ACCOUNT_ALL_ATTRS);
replaceNameByRandom(attrs);
final Uid uid = c.create(ObjectClass.ACCOUNT, attrs, null);
AssertJUnit.assertNotNull(uid);
Map<String, Object> scriptArguments = new HashMap<String, Object>();
scriptArguments.put(Name.NAME, AttributeUtil.getNameFromAttributes(attrs));
scriptArguments.put(OperationalAttributes.PASSWORD_NAME, AttributeUtil.find(
OperationalAttributes.PASSWORD_NAME, attrs));
scriptArguments.put(ACTION, "update");
scriptArguments.put(TIMING, "after");
scriptArguments.put(ATTRIBUTES, AttributeUtil.toMap(attrs));
ScriptContext request = new ScriptContext(GROOVY, scriptText, scriptArguments);
final Object ret = c.runScriptOnConnector(request, null);
AssertJUnit.assertNotNull("mail not returned", ret);
AssertJUnit.assertEquals("mail value", EXPECTED_MAIL, ret);
}
}