You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2014/07/01 15:29:08 UTC
svn commit: r1607071 [1/2] - in /syncope/trunk:
build-tools/src/main/resources/
common/src/main/java/org/apache/syncope/common/to/
console/src/main/java/org/apache/syncope/console/pages/
core/src/main/java/org/apache/syncope/core/persistence/beans/ cor...
Author: fmartelli
Date: Tue Jul 1 13:29:07 2014
New Revision: 1607071
URL: http://svn.apache.org/r1607071
Log:
[SYNCOPE-392, SYNCOPE-471] integration test improvement
Modified:
syncope/trunk/build-tools/src/main/resources/testdb.sql
syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java
syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java
syncope/trunk/core/src/test/resources/content.xml
Modified: syncope/trunk/build-tools/src/main/resources/testdb.sql
URL: http://svn.apache.org/viewvc/syncope/trunk/build-tools/src/main/resources/testdb.sql?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/build-tools/src/main/resources/testdb.sql (original)
+++ syncope/trunk/build-tools/src/main/resources/testdb.sql Tue Jul 1 13:29:07 2014
@@ -32,6 +32,8 @@ password VARCHAR(255) NOT NULL,
status VARCHAR(5));
INSERT INTO test2 VALUES ('testuser2', 'password321', 'false');
+INSERT INTO test2 VALUES ('rossini', 'password321', 'true');
+INSERT INTO test2 VALUES ('verdi', 'password321', 'true');
-- this table is for issueSYNCOPE230
DROP TABLE testsync IF EXISTS;
Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/to/AbstractSyncTaskTO.java Tue Jul 1 13:29:07 2014
@@ -46,9 +46,9 @@ public class AbstractSyncTaskTO extends
private boolean syncStatus;
- private UnmatchingRule unmatchigRule;
+ private UnmatchingRule unmatchingRule;
- private MatchingRule matchigRule;
+ private MatchingRule matchingRule;
private List<String> actionsClassNames = new ArrayList<String>();
@@ -99,19 +99,19 @@ public class AbstractSyncTaskTO extends
return actionsClassNames;
}
- public UnmatchingRule getUnmatchigRule() {
- return unmatchigRule;
+ public UnmatchingRule getUnmatchingRule() {
+ return unmatchingRule;
}
- public void setUnmatchigRule(final UnmatchingRule unmatchigRule) {
- this.unmatchigRule = unmatchigRule;
+ public void setUnmatchingRule(final UnmatchingRule unmatchigRule) {
+ this.unmatchingRule = unmatchigRule;
}
- public MatchingRule getMatchigRule() {
- return matchigRule;
+ public MatchingRule getMatchingRule() {
+ return matchingRule;
}
- public void setMatchigRule(final MatchingRule matchigRule) {
- this.matchigRule = matchigRule;
+ public void setMatchingRule(final MatchingRule matchigRule) {
+ this.matchingRule = matchigRule;
}
}
Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java Tue Jul 1 13:29:07 2014
@@ -57,15 +57,15 @@ public class PushTaskModalPage extends A
super(window, taskTO, pageRef);
// set default Matching rule
- ((DropDownChoice) matchingRule.getField()).setDefaultModelObject(taskTO.getMatchigRule() == null
+ ((DropDownChoice) matchingRule.getField()).setDefaultModelObject(taskTO.getMatchingRule() == null
? MatchingRule.UPDATE
- : taskTO.getMatchigRule());
+ : taskTO.getMatchingRule());
profile.add(matchingRule);
// set default Unmatching rule
- ((DropDownChoice) unmatchingRule.getField()).setDefaultModelObject(taskTO.getUnmatchigRule() == null
+ ((DropDownChoice) unmatchingRule.getField()).setDefaultModelObject(taskTO.getUnmatchingRule() == null
? UnmatchingRule.ASSIGN
- : taskTO.getUnmatchigRule());
+ : taskTO.getUnmatchingRule());
profile.add(unmatchingRule);
final WebMarkupContainer filterContainer = new WebMarkupContainer("filterContainer");
Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java Tue Jul 1 13:29:07 2014
@@ -40,15 +40,15 @@ public class SyncTaskModalPage extends A
super(window, taskTO, pageRef);
// set default Matching rule
- ((DropDownChoice) matchingRule.getField()).setDefaultModelObject(taskTO.getMatchigRule() == null
+ ((DropDownChoice) matchingRule.getField()).setDefaultModelObject(taskTO.getMatchingRule() == null
? MatchingRule.UPDATE
- : taskTO.getMatchigRule());
+ : taskTO.getMatchingRule());
profile.add(matchingRule);
// set default Unmatching rule
- ((DropDownChoice) unmatchingRule.getField()).setDefaultModelObject(taskTO.getUnmatchigRule() == null
+ ((DropDownChoice) unmatchingRule.getField()).setDefaultModelObject(taskTO.getUnmatchingRule() == null
? UnmatchingRule.PROVISION
- : taskTO.getUnmatchigRule());
+ : taskTO.getUnmatchingRule());
profile.add(unmatchingRule);
final AjaxCheckBoxPanel fullReconciliation = new AjaxCheckBoxPanel("fullReconciliation",
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSyncTask.java Tue Jul 1 13:29:07 2014
@@ -69,13 +69,13 @@ public abstract class AbstractSyncTask e
* @see UnmatchingRule
*/
@Enumerated(EnumType.STRING)
- protected UnmatchingRule unmatchigRule;
+ protected UnmatchingRule unmatchingRule;
/**
* @see MatchingRule
*/
@Enumerated(EnumType.STRING)
- protected MatchingRule matchigRule;
+ protected MatchingRule matchingRule;
@ElementCollection(fetch = FetchType.EAGER)
private List<String> actionsClassNames = new ArrayList<String>();
@@ -130,16 +130,16 @@ public abstract class AbstractSyncTask e
this.syncStatus = getBooleanAsInteger(syncStatus);
}
- public abstract UnmatchingRule getUnmatchigRule();
+ public abstract UnmatchingRule getUnmatchingRule();
- public void setUnmatchigRule(final UnmatchingRule unmatchigRule) {
- this.unmatchigRule = unmatchigRule;
+ public void setUnmatchingRule(final UnmatchingRule unmatchigRule) {
+ this.unmatchingRule = unmatchigRule;
}
- public abstract MatchingRule getMatchigRule();
+ public abstract MatchingRule getMatchingRule();
- public void setMatchigRule(final MatchingRule matchigRule) {
- this.matchigRule = matchigRule;
+ public void setMatchingRule(final MatchingRule matchigRule) {
+ this.matchingRule = matchigRule;
}
public List<String> getActionsClassNames() {
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushTask.java Tue Jul 1 13:29:07 2014
@@ -60,12 +60,12 @@ public class PushTask extends AbstractSy
}
@Override
- public UnmatchingRule getUnmatchigRule() {
- return this.unmatchigRule == null ? DEF_UNMATCHIG_RULE : unmatchigRule;
+ public UnmatchingRule getUnmatchingRule() {
+ return this.unmatchingRule == null ? DEF_UNMATCHIG_RULE : unmatchingRule;
}
@Override
- public MatchingRule getMatchigRule() {
- return this.matchigRule == null ? DEF_MATCHIG_RULE : this.matchigRule;
+ public MatchingRule getMatchingRule() {
+ return this.matchingRule == null ? DEF_MATCHIG_RULE : this.matchingRule;
}
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncTask.java Tue Jul 1 13:29:07 2014
@@ -86,12 +86,12 @@ public class SyncTask extends AbstractSy
}
@Override
- public UnmatchingRule getUnmatchigRule() {
- return this.unmatchigRule == null ? DEF_UNMATCHIG_RULE : unmatchigRule;
+ public UnmatchingRule getUnmatchingRule() {
+ return this.unmatchingRule == null ? DEF_UNMATCHIG_RULE : unmatchingRule;
}
@Override
- public MatchingRule getMatchigRule() {
- return this.matchigRule == null ? DEF_MATCHIG_RULE : this.matchigRule;
+ public MatchingRule getMatchingRule() {
+ return this.matchingRule == null ? DEF_MATCHIG_RULE : this.matchingRule;
}
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/TaskDataBinder.java Tue Jul 1 13:29:07 2014
@@ -155,8 +155,8 @@ public class TaskDataBinder {
task.setPerformUpdate(taskTO.isPerformUpdate());
task.setPerformDelete(taskTO.isPerformDelete());
task.setSyncStatus(taskTO.isSyncStatus());
- task.setMatchigRule(taskTO.getMatchigRule());
- task.setUnmatchigRule(taskTO.getUnmatchigRule());
+ task.setMatchingRule(taskTO.getMatchingRule());
+ task.setUnmatchingRule(taskTO.getUnmatchingRule());
task.getActionsClassNames().clear();
task.getActionsClassNames().addAll(taskTO.getActionsClassNames());
}
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectPushResultHandler.java Tue Jul 1 13:29:07 2014
@@ -97,7 +97,7 @@ public abstract class AbstractSubjectPus
result.setId(toBeHandled.getId());
result.setSubjectType(attrUtil.getType());
result.setName(getName(toBeHandled));
-
+
final Boolean enabled = toBeHandled instanceof SyncopeUser && profile.getSyncTask().isSyncStatus()
? ((SyncopeUser) toBeHandled).isSuspended() ? Boolean.FALSE : Boolean.TRUE
: null;
@@ -124,21 +124,21 @@ public abstract class AbstractSubjectPus
// Try to read remote object (user / group) BEFORE any actual operation
beforeObj = getRemoteObject(values.getKey());
-
+
if (profile.isDryRun()) {
if (beforeObj == null) {
- result.setOperation(getResourceOperation(profile.getSyncTask().getUnmatchigRule()));
+ result.setOperation(getResourceOperation(profile.getSyncTask().getUnmatchingRule()));
} else {
- result.setOperation(getResourceOperation(profile.getSyncTask().getMatchigRule()));
+ result.setOperation(getResourceOperation(profile.getSyncTask().getMatchingRule()));
}
result.setStatus(SyncResult.Status.SUCCESS);
} else {
try {
if (beforeObj == null) {
- operation = profile.getSyncTask().getUnmatchigRule().name().toLowerCase();
- result.setOperation(getResourceOperation(profile.getSyncTask().getUnmatchigRule()));
+ operation = profile.getSyncTask().getUnmatchingRule().name().toLowerCase();
+ result.setOperation(getResourceOperation(profile.getSyncTask().getUnmatchingRule()));
- switch (profile.getSyncTask().getUnmatchigRule()) {
+ switch (profile.getSyncTask().getUnmatchingRule()) {
case ASSIGN:
for (PushActions action : profile.getActions()) {
action.beforeAssign(this.getProfile(), values, toBeHandled);
@@ -162,10 +162,10 @@ public abstract class AbstractSubjectPus
}
} else {
- operation = profile.getSyncTask().getMatchigRule().name().toLowerCase();
- result.setOperation(getResourceOperation(profile.getSyncTask().getMatchigRule()));
+ operation = profile.getSyncTask().getMatchingRule().name().toLowerCase();
+ result.setOperation(getResourceOperation(profile.getSyncTask().getMatchingRule()));
- switch (profile.getSyncTask().getMatchigRule()) {
+ switch (profile.getSyncTask().getMatchingRule()) {
case UPDATE:
for (PushActions action : profile.getActions()) {
action.beforeUpdate(this.getProfile(), values, toBeHandled);
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java Tue Jul 1 13:29:07 2014
@@ -557,7 +557,7 @@ public abstract class AbstractSubjectSyn
if (SyncDeltaType.CREATE_OR_UPDATE == delta.getDeltaType()) {
if (subjectIds.isEmpty()) {
- switch (profile.getSyncTask().getUnmatchigRule()) {
+ switch (profile.getSyncTask().getUnmatchingRule()) {
case ASSIGN:
profile.getResults().addAll(assign(delta, attrUtil, profile.isDryRun()));
break;
@@ -568,7 +568,7 @@ public abstract class AbstractSubjectSyn
// do nothing
}
} else {
- switch (profile.getSyncTask().getMatchigRule()) {
+ switch (profile.getSyncTask().getMatchingRule()) {
case UPDATE:
profile.getResults().addAll(update(delta, subjectIds, attrUtil, profile.isDryRun()));
break;
Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/RolePushResultHandler.java Tue Jul 1 13:29:07 2014
@@ -163,7 +163,7 @@ public class RolePushResultHandler exten
final Uid uid = new Uid(accountId);
- profile.getConnector().getObject(
+ obj = profile.getConnector().getObject(
ObjectClass.GROUP,
uid,
profile.getConnector().getOperationOptions(Collections.<AbstractMappingItem>emptySet()));
Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java (original)
+++ syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java Tue Jul 1 13:29:07 2014
@@ -68,7 +68,7 @@ public class TaskTest extends AbstractDA
assertEquals(1, taskDAO.findAll(NotificationTask.class).size());
assertEquals(1, taskDAO.findAll(SchedTask.class).size());
assertEquals(6, taskDAO.findAll(SyncTask.class).size());
- assertEquals(1, taskDAO.findAll(PushTask.class).size());
+ assertEquals(11, taskDAO.findAll(PushTask.class).size());
}
@Test
Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java?rev=1607071&r1=1607070&r2=1607071&view=diff
==============================================================================
--- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java (original)
+++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java Tue Jul 1 13:29:07 2014
@@ -26,7 +26,16 @@ import static org.junit.Assert.assertTru
import static org.junit.Assert.fail;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
import javax.ws.rs.core.Response;
import org.apache.syncope.client.SyncopeClient;
import org.apache.syncope.common.SyncopeClientException;
@@ -56,6 +65,7 @@ import org.apache.syncope.common.types.M
import org.apache.syncope.common.types.PropagationTaskExecStatus;
import org.apache.syncope.common.types.TaskType;
import org.apache.syncope.common.types.TraceLevel;
+import org.apache.syncope.common.types.SubjectType;
import org.apache.syncope.common.types.UnmatchingRule;
import org.apache.syncope.common.wrap.PushActionClass;
import org.apache.syncope.core.sync.TestSyncActions;
@@ -149,7 +159,7 @@ public class TaskTestITCase extends Abst
SyncopeClient.getUserSearchConditionBuilder().hasNotResources(RESOURCE_NAME_TESTDB2).query());
task.setRoleFilter(
SyncopeClient.getRoleSearchConditionBuilder().isNotNull("cool").query());
- task.setMatchigRule(MatchingRule.LINK);
+ task.setMatchingRule(MatchingRule.LINK);
final Response response = taskService.create(task);
final PushTaskTO actual = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
@@ -161,8 +171,8 @@ public class TaskTestITCase extends Abst
assertEquals(task.getJobClassName(), actual.getJobClassName());
assertEquals(task.getUserFilter(), actual.getUserFilter());
assertEquals(task.getRoleFilter(), actual.getRoleFilter());
- assertEquals(UnmatchingRule.ASSIGN, actual.getUnmatchigRule());
- assertEquals(MatchingRule.LINK, actual.getMatchigRule());
+ assertEquals(UnmatchingRule.ASSIGN, actual.getUnmatchingRule());
+ assertEquals(MatchingRule.LINK, actual.getMatchingRule());
}
@Test
@@ -249,9 +259,9 @@ public class TaskTestITCase extends Abst
assertNotNull(taskTO.getExecutions());
assertTrue(taskTO.getExecutions().isEmpty());
- final PushTaskTO pushTaskTO = taskService.<PushTaskTO>read(13L);
- assertEquals(UnmatchingRule.ASSIGN, pushTaskTO.getUnmatchigRule());
- assertEquals(MatchingRule.UPDATE, pushTaskTO.getMatchigRule());
+ final PushTaskTO pushTaskTO = taskService.<PushTaskTO>read(17L);
+ assertEquals(UnmatchingRule.ASSIGN, pushTaskTO.getUnmatchingRule());
+ assertEquals(MatchingRule.UPDATE, pushTaskTO.getMatchingRule());
}
@Test
@@ -394,26 +404,7 @@ public class TaskTestITCase extends Abst
@Test
public void reconcileFromDB() {
// update sync task
- SyncTaskTO task = taskService.read(7L);
- assertNotNull(task);
-
- // add user template
- UserTO template = new UserTO();
- template.getAttrs().add(attributeTO("type", "'type a'"));
- template.getAttrs().add(attributeTO("userId", "'reconciled@syncope.apache.org'"));
- template.getAttrs().add(attributeTO("fullname", "'reconciled fullname'"));
- template.getAttrs().add(attributeTO("surname", "'surname'"));
-
- task.setUserTemplate(template);
-
- taskService.update(task.getId(), task);
- SyncTaskTO actual = taskService.read(task.getId());
- assertNotNull(actual);
- assertEquals(task.getId(), actual.getId());
- assertEquals(template, actual.getUserTemplate());
- assertEquals(new RoleTO(), actual.getRoleTemplate());
-
- TaskExecTO execution = execSyncTask(actual.getId(), 20, false);
+ TaskExecTO execution = execSyncTask(7L, 20, false);
assertNotNull(execution.getStatus());
assertTrue(PropagationTaskExecStatus.valueOf(execution.getStatus()).isSuccessful());
@@ -427,7 +418,7 @@ public class TaskTestITCase extends Abst
jdbcTemplate.execute("UPDATE TEST SET STATUS=TRUE");
// re-execute the same SyncTask: now user must be active
- execution = execSyncTask(actual.getId(), 20, false);
+ execution = execSyncTask(7L, 20, false);
assertNotNull(execution.getStatus());
assertTrue(PropagationTaskExecStatus.valueOf(execution.getStatus()).isSuccessful());
@@ -439,32 +430,7 @@ public class TaskTestITCase extends Abst
@Test
public void reconcileFromLDAP() {
// Update sync task
- SyncTaskTO task = taskService.read(11L);
- assertNotNull(task);
-
- // add user template
- final UserTO userTemplate = task.getUserTemplate();
- userTemplate.getResources().add(RESOURCE_NAME_LDAP);
- userTemplate.getVirAttrs().add(attributeTO("virtualReadOnly", ""));
-
- task.setUserTemplate(userTemplate);
-
- // add role template
- RoleTO roleTemplate = new RoleTO();
- roleTemplate.setParent(8L);
- roleTemplate.getRAttrTemplates().add("show");
- roleTemplate.getAttrs().add(attributeTO("show", "'true'"));
-
- task.setRoleTemplate(roleTemplate);
-
- taskService.update(task.getId(), task);
- SyncTaskTO actual = taskService.read(task.getId());
- assertNotNull(actual);
- assertEquals(task.getId(), actual.getId());
- assertEquals(roleTemplate, actual.getRoleTemplate());
- assertEquals(userTemplate, actual.getUserTemplate());
-
- TaskExecTO execution = execSyncTask(actual.getId(), 20, false);
+ TaskExecTO execution = execSyncTask(11L, 20, false);
// 1. verify execution status
final String status = execution.getStatus();
@@ -774,7 +740,7 @@ public class TaskTestITCase extends Abst
// wait for sync completion (executions incremented)
do {
try {
- Thread.sleep(2000);
+ Thread.sleep(1000);
} catch (InterruptedException e) {
}
@@ -788,7 +754,29 @@ public class TaskTestITCase extends Abst
if (i == maxit) {
fail("Timeout when executing task " + taskId);
}
- return taskTO.getExecutions().get(0);
+ return taskTO.getExecutions().get(taskTO.getExecutions().size() - 1);
+ }
+
+ private Map<Long, TaskExecTO> execSyncTasks(
+ final Set<Long> taskIds, final int maxWaitSeconds, final boolean dryRun) throws Exception {
+
+ final ExecutorService service = Executors.newFixedThreadPool(taskIds.size());
+ final List<Future<TaskExecTO>> futures = new ArrayList<Future<TaskExecTO>>();
+
+ for (final Long id : taskIds) {
+ futures.add(service.submit(new ThreadExec(this, id, maxWaitSeconds, dryRun)));
+ }
+
+ final Map<Long, TaskExecTO> res = new HashMap<Long, TaskExecTO>();
+
+ for (Future<TaskExecTO> f : futures) {
+ TaskExecTO taskExecTO = f.get(100, TimeUnit.SECONDS);
+ res.put(taskExecTO.getTask(), taskExecTO);
+ }
+
+ service.shutdownNow();
+
+ return res;
}
@Test
@@ -977,158 +965,104 @@ public class TaskTestITCase extends Abst
}
@Test
- public void pushUnmatchingUsers() {
- // ------------------------------------------
- // Matching --> Assign --> dryRuyn
- // ------------------------------------------
- UserTO userTO = userService.read(3L);
- assertEquals("Vivaldi", userTO.getAttrMap().get("surname").getValues().get(0));
- assertFalse(userTO.getResources().contains(RESOURCE_NAME_TESTDB2));
+ public void pushMatchingUnmatchingRoles() {
+ assertFalse(roleService.read(3L).getResources().contains(RESOURCE_NAME_LDAP));
- PushTaskTO task = taskService.<PushTaskTO>read(13L);
- assertNotNull(task);
- task.setUserFilter(SyncopeClient.getUserSearchConditionBuilder().is("surname").equalTo("Vivaldi").query());
- taskService.update(13L, task);
+ execSyncTask(23L, 50, false);
- assertEquals(task.getUserFilter(), taskService.<PushTaskTO>read(13L).getUserFilter());
+ assertNotNull(resourceService.getConnectorObject(RESOURCE_NAME_LDAP, SubjectType.ROLE, 3L));
+ assertTrue(roleService.read(3L).getResources().contains(RESOURCE_NAME_LDAP));
- execSyncTask(task.getId(), 50, true);
+ execSyncTask(23L, 50, false);
- final JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
- assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='vivaldi'").size());
+ assertNotNull(resourceService.getConnectorObject(RESOURCE_NAME_LDAP, SubjectType.ROLE, 3L));
+ assertFalse(roleService.read(3L).getResources().contains(RESOURCE_NAME_LDAP));
+ }
+ @Test
+ public void pushUnmatchingUsers() throws Exception {
+ assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
assertFalse(userService.read(3L).getResources().contains(RESOURCE_NAME_TESTDB2));
+ assertFalse(userService.read(4L).getResources().contains(RESOURCE_NAME_TESTDB2));
+ assertTrue(userService.read(5L).getResources().contains(RESOURCE_NAME_TESTDB2));
+
+ final JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
+ assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='puccini'").size());
- jdbcTemplate.execute("DELETE FROM test2 WHERE ID='vivaldi'");
+ // ------------------------------------------
+ // Unmatching --> Assign --> dryRuyn
+ // ------------------------------------------
+ execSyncTask(13L, 50, true);
+ assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='vivaldi'").size());
+ assertFalse(userService.read(3L).getResources().contains(RESOURCE_NAME_TESTDB2));
// ------------------------------------------
+ final Set<Long> pushTaskIds = new HashSet<Long>();
+ pushTaskIds.add(13L);
+ pushTaskIds.add(14L);
+ pushTaskIds.add(15L);
+ pushTaskIds.add(16L);
+ execSyncTasks(pushTaskIds, 50, false);
+
// ------------------------------------------
- // Matching --> Assign
+ // Unatching --> Ignore
+ // ------------------------------------------
+ assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
+ assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
// ------------------------------------------
- execSyncTask(task.getId(), 50, false);
+ // ------------------------------------------
+ // Unmatching --> Assign
+ // ------------------------------------------
assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='vivaldi'").size());
- assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID<>'vivaldi'").size());
-
assertTrue(userService.read(3L).getResources().contains(RESOURCE_NAME_TESTDB2));
- assertEquals("vivaldi",
- jdbcTemplate.queryForObject("SELECT ID FROM test2 WHERE ID=?", String.class, "vivaldi"));
-
jdbcTemplate.execute("DELETE FROM test2 WHERE ID='vivaldi'");
// ------------------------------------------
// ------------------------------------------
- // Matching --> Provision
+ // Unmatching --> Provision
// ------------------------------------------
- assertEquals("Bellini", userService.read(4L).getAttrMap().get("surname").getValues().get(0));
-
- task.setUserFilter(SyncopeClient.getUserSearchConditionBuilder().is("surname").equalTo("Bellini").query());
- task.setUnmatchigRule(UnmatchingRule.PROVISION);
- taskService.update(13L, task);
- assertEquals(task.getUserFilter(), taskService.<PushTaskTO>read(13L).getUserFilter());
-
- execSyncTask(task.getId(), 50, false);
-
assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='bellini'").size());
- assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID<>'bellini'").size());
-
assertFalse(userService.read(4L).getResources().contains(RESOURCE_NAME_TESTDB2));
- assertEquals("bellini",
- jdbcTemplate.queryForObject("SELECT ID FROM test2 WHERE ID=?", String.class, "bellini"));
-
jdbcTemplate.execute("DELETE FROM test2 WHERE ID='bellini'");
// ------------------------------------------
// ------------------------------------------
- // Matching --> Unlink
+ // Unmatching --> Unlink
// ------------------------------------------
- userTO = userService.read(5L);
- assertEquals("Puccini", userTO.getAttrMap().get("surname").getValues().get(0));
- assertFalse(userTO.getResources().contains(RESOURCE_NAME_TESTDB2));
-
- task.setUserFilter(SyncopeClient.getUserSearchConditionBuilder().is("surname").equalTo("Puccini").query());
- task.setUnmatchigRule(UnmatchingRule.UNLINK);
- taskService.update(13L, task);
- assertEquals(task.getUserFilter(), taskService.<PushTaskTO>read(13L).getUserFilter());
-
- execSyncTask(task.getId(), 50, false);
-
assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='puccini'").size());
-
assertFalse(userService.read(5L).getResources().contains(RESOURCE_NAME_TESTDB2));
// ------------------------------------------
-
- // ------------------------------------------
- // Matching --> Ignore
- // ------------------------------------------
- userTO = userService.read(5L);
- assertEquals("Puccini", userTO.getAttrMap().get("surname").getValues().get(0));
- assertFalse(userTO.getResources().contains(RESOURCE_NAME_TESTDB2));
-
- task.setUserFilter(SyncopeClient.getUserSearchConditionBuilder().is("surname").equalTo("Rossini").query());
- task.setUnmatchigRule(UnmatchingRule.IGNORE);
- taskService.update(13L, task);
- assertEquals(task.getUserFilter(), taskService.<PushTaskTO>read(13L).getUserFilter());
-
- execSyncTask(task.getId(), 50, false);
-
- assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='rossini'").size());
-
- assertFalse(userService.read(1L).getResources().contains(RESOURCE_NAME_TESTDB2));
- // ------------------------------------------
}
@Test
- public void pushMatchingUser() {
- // ------------------------------------------
- // Assign Verdi to test2 --> dryRun
- // ------------------------------------------
- UserTO userTO = userService.read(2L);
- assertEquals("Verdi", userTO.getAttrMap().get("surname").getValues().get(0));
- assertFalse(userTO.getResources().contains(RESOURCE_NAME_TESTDB2));
-
- PushTaskTO task = taskService.<PushTaskTO>read(13L);
- assertNotNull(task);
-
- task.setUserFilter(SyncopeClient.getUserSearchConditionBuilder().is("surname").equalTo("Verdi").query());
- task.setUnmatchigRule(UnmatchingRule.ASSIGN);
- taskService.update(13L, task);
-
- assertEquals(UnmatchingRule.ASSIGN, taskService.<PushTaskTO>read(13L).getUnmatchigRule());
-
- execSyncTask(task.getId(), 50, true);
-
+ public void pushMatchingUser() throws Exception {
+ assertTrue(userService.read(1L).getResources().contains(RESOURCE_NAME_TESTDB2));
assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
- JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
- assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
- // ------------------------------------------
+ final JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
+ assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
+ assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='rossini'").size());
// ------------------------------------------
- // Assign Verdi to test2
+ // Matching --> Deprovision --> dryRuyn
+ // ------------------------------------------
+ execSyncTask(19L, 50, true);
+ assertTrue(userService.read(1L).getResources().contains(RESOURCE_NAME_TESTDB2));
+ assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='rossini'").size());
// ------------------------------------------
- userTO = userService.read(2L);
- assertEquals("Verdi", userTO.getAttrMap().get("surname").getValues().get(0));
- assertFalse(userTO.getResources().contains(RESOURCE_NAME_TESTDB2));
- execSyncTask(task.getId(), 50, false);
+ final Set<Long> pushTaskIds = new HashSet<Long>();
+ pushTaskIds.add(18L);
+ pushTaskIds.add(19L);
+ pushTaskIds.add(16L);
- assertTrue(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
- assertEquals("verdi", jdbcTemplate.queryForObject("SELECT ID FROM test2 WHERE ID=?", String.class, "verdi"));
- // ------------------------------------------
+ execSyncTasks(pushTaskIds, 50, false);
// ------------------------------------------
- // Matching --> Deprovision
+ // Matching --> Deprovision && Ignore
// ------------------------------------------
- assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
-
- task.setMatchigRule(MatchingRule.DEPROVISION);
- taskService.update(13L, task);
- assertEquals(MatchingRule.DEPROVISION, taskService.<PushTaskTO>read(13L).getMatchigRule());
-
- execSyncTask(task.getId(), 50, false);
-
- assertTrue(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
+ assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
// DELETE Capability not available ....
assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
// ------------------------------------------
@@ -1136,73 +1070,53 @@ public class TaskTestITCase extends Abst
// ------------------------------------------
// Matching --> Unassign
// ------------------------------------------
- task.setMatchigRule(MatchingRule.UNASSIGN);
- taskService.update(13L, task);
- assertEquals(MatchingRule.UNASSIGN, taskService.<PushTaskTO>read(13L).getMatchigRule());
-
- execSyncTask(task.getId(), 50, false);
-
- assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
+ assertFalse(userService.read(1L).getResources().contains(RESOURCE_NAME_TESTDB2));
// DELETE Capability not available ....
- assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
+ assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='rossini'").size());
// ------------------------------------------
// ------------------------------------------
// Matching --> Link
// ------------------------------------------
- task.setMatchigRule(MatchingRule.LINK);
- taskService.update(13L, task);
- assertEquals(MatchingRule.LINK, taskService.<PushTaskTO>read(13L).getMatchigRule());
-
- execSyncTask(task.getId(), 50, false);
-
+ execSyncTask(20L, 50, false);
assertTrue(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
// ------------------------------------------
- // ------------------------------------------
- // Matching --> Unlink
- // ------------------------------------------
- task.setMatchigRule(MatchingRule.UNLINK);
- taskService.update(13L, task);
- assertEquals(MatchingRule.UNLINK, taskService.<PushTaskTO>read(13L).getMatchigRule());
-
- execSyncTask(task.getId(), 50, false);
+ pushTaskIds.clear();
+ pushTaskIds.add(21L);
+ pushTaskIds.add(22L);
- assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
- assertEquals("verdi", jdbcTemplate.queryForObject("SELECT ID FROM test2 WHERE ID=?", String.class, "verdi"));
- // ------------------------------------------
+ execSyncTasks(pushTaskIds, 50, false);
// ------------------------------------------
- // Matching --> Update
+ // Matching --> Unlink && Update
// ------------------------------------------
- task.setMatchigRule(MatchingRule.UPDATE);
- taskService.update(13L, task);
- assertEquals(MatchingRule.UPDATE, taskService.<PushTaskTO>read(13L).getMatchigRule());
-
- execSyncTask(task.getId(), 50, false);
-
assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
// ------------------------------------------
+ }
- // ------------------------------------------
- // Matching --> Ignore
- // ------------------------------------------
- task.setMatchigRule(MatchingRule.IGNORE);
- taskService.update(13L, task);
- assertEquals(MatchingRule.IGNORE, taskService.<PushTaskTO>read(13L).getMatchigRule());
+ private static class ThreadExec implements Callable<TaskExecTO> {
- execSyncTask(task.getId(), 50, false);
+ private final TaskTestITCase test;
- assertFalse(userService.read(2L).getResources().contains(RESOURCE_NAME_TESTDB2));
- assertEquals("verdi", jdbcTemplate.queryForObject("SELECT ID FROM test2 WHERE ID=?", String.class, "verdi"));
- // ------------------------------------------
+ private final Long taskId;
- task.setMatchigRule(MatchingRule.UPDATE);
- task.setUserFilter(null);
- taskService.update(13L, task);
+ private final int maxWaitSeconds;
- jdbcTemplate.execute("DELETE FROM test2 WHERE ID='verdi'");
+ private final boolean dryRun;
+
+ public ThreadExec(TaskTestITCase test, Long taskId, int maxWaitSeconds, boolean dryRun) {
+ this.test = test;
+ this.taskId = taskId;
+ this.maxWaitSeconds = maxWaitSeconds;
+ this.dryRun = dryRun;
+ }
+
+ @Override
+ public TaskExecTO call() throws Exception {
+ return test.execSyncTask(taskId, maxWaitSeconds, dryRun);
+ }
}
}