/** * */ package org.identityconnectors.oracleerp; import java.util.List; import java.util.Set; import org.identityconnectors.common.IOUtil; import org.identityconnectors.common.script.ScriptBuilder; 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.ConnectorObject; import org.identityconnectors.framework.common.objects.ObjectClass; import org.identityconnectors.framework.common.objects.Uid; import org.identityconnectors.framework.common.objects.filter.FilterBuilder; import org.identityconnectors.test.common.TestHelpers; import org.testng.Assert; import org.testng.AssertJUnit; import org.testng.annotations.Test; /** * @author petr * @since 1.0 */ @Test(groups = { "integration" }) public class AccountOperationGetUserAfterActionTest extends OracleERPTestsBase { private static final String HR_EMP_NUM = "hr_emp_num"; private static final String USER_AFTER_ACTION = "org.identityconnectors.oracleerp.OracleERPConnector/config/GetUserAfterAction.groovy"; /** * Test method for * {@link org.identityconnectors.oracleerp.AccountOperationGetUserAfterAction#runScriptOnConnector(java.lang.Object, org.identityconnectors.framework.common.objects.ConnectorObjectBuilder)} * . */ @Test public void testRunScriptOnConnector() { final OracleERPConfiguration cfg = getConfiguration(CONFIG_SYSADM); final String scriptText = IOUtil.getResourceAsString(this.getClass(), USER_AFTER_ACTION); final ScriptBuilder sb = new ScriptBuilder().setScriptLanguage(GROOVY).setScriptText(scriptText); cfg.setUserAfterActionScript(sb.build()); 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); List<ConnectorObject> results = TestHelpers.searchToList(c, ObjectClass.ACCOUNT, FilterBuilder.equalTo(uid)); AssertJUnit.assertTrue("expect 1 connector object", results.size() == 1); final ConnectorObject co = results.get(0); final Set<Attribute> returned = co.getAttributes(); // The new, script added attribute must exist and have value 5 final Attribute find = AttributeUtil.find(HR_EMP_NUM, returned); AssertJUnit.assertNotNull(HR_EMP_NUM, find); final List<Object> value = find.getValue(); AssertJUnit.assertEquals(HR_EMP_NUM, 1, value.size()); AssertJUnit.assertEquals(HR_EMP_NUM, "5", value.get(0)); } /** * 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 ScriptBuilder sb = new ScriptBuilder().setScriptLanguage(GROOVY).setScriptText(scriptText); cfg.setUserAfterActionScript(sb.build()); 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); TestHelpers.searchToList(c, ObjectClass.ACCOUNT, FilterBuilder.equalTo(uid)); Assert.fail("expect no connector object"); } /** * 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 ScriptBuilder sb = new ScriptBuilder().setScriptLanguage(GROOVY).setScriptText("return ( ;"); cfg.setUserAfterActionScript(sb.build()); 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); TestHelpers.searchToList(c, ObjectClass.ACCOUNT, FilterBuilder.equalTo(uid)); Assert.fail("expect no connector object"); } }