Completing the work for SYNCOPE-1249 with pull support
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/828d1bc1 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/828d1bc1 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/828d1bc1 Branch: refs/heads/master Commit: 828d1bc1d364c96ab149eb96049cc577348a3ee9 Parents: 0c2e4ba Author: Francesco Chicchiriccò <[email protected]> Authored: Tue Jan 16 11:18:16 2018 +0100 Committer: Francesco Chicchiriccò <[email protected]> Committed: Tue Jan 16 12:14:53 2018 +0100 ---------------------------------------------------------------------- .../core/persistence/jpa/outer/PlainSchemaTest.java | 4 ++-- .../src/test/resources/domains/MasterContent.xml | 3 +++ .../core/provisioning/java/MappingManagerImpl.java | 7 +++++++ fit/build-tools/src/main/resources/testdb.sql | 1 + .../java/org/apache/syncope/fit/core/PullTaskITCase.java | 10 +++++----- 5 files changed, 18 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/828d1bc1/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java index efffb8d..0203a06 100644 --- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java +++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PlainSchemaTest.java @@ -210,7 +210,7 @@ public class PlainSchemaTest extends AbstractTest { @Test public void deleteFirstname() { - assertEquals(5, resourceDAO.find("resource-db-pull"). + assertEquals(6, resourceDAO.find("resource-db-pull"). getProvision(anyTypeDAO.findUser()).get().getMapping().getItems().size()); plainSchemaDAO.delete("firstname"); @@ -218,7 +218,7 @@ public class PlainSchemaTest extends AbstractTest { plainSchemaDAO.flush(); - assertEquals(4, resourceDAO.find("resource-db-pull"). + assertEquals(5, resourceDAO.find("resource-db-pull"). getProvision(anyTypeDAO.findUser()).get().getMapping().getItems().size()); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/828d1bc1/core/persistence-jpa/src/test/resources/domains/MasterContent.xml ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml index 7c2298d..d8eb1be 100644 --- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml +++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml @@ -1105,6 +1105,9 @@ under the License. <MappingItem id="e7215305-93c9-460b-b862-46f7b60de72d" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b" extAttrName="EMAIL" intAttrName="userId" mandatoryCondition="false" password="0" purpose="PULL"/> + <MappingItem id="fb59d169-cf59-43f6-a517-adfd9aacc609" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b" + extAttrName="MUSTCHANGEPASSWORD" intAttrName="mustChangePassword" + mandatoryCondition="false" password="0" purpose="PULL"/> <Provision id="6d7cb60a-c4ad-4a70-94ae-e5b88eb24930" resource_id="resource-db-virattr" anyType_id="USER" objectClass="__ACCOUNT__"/> <Mapping id="45280585-308f-4571-9788-c7a4734b3614" provision_id="6d7cb60a-c4ad-4a70-94ae-e5b88eb24930"/> http://git-wip-us.apache.org/repos/asf/syncope/blob/828d1bc1/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java index a1d04fa..8d0d83f 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/MappingManagerImpl.java @@ -25,6 +25,7 @@ import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.commons.lang3.time.DateFormatUtils; @@ -657,6 +658,12 @@ public class MappingManagerImpl implements MappingManager { } break; + case "mustChangePassword": + if (anyTO instanceof UserTO && !values.isEmpty() && values.get(0) != null) { + ((UserTO) anyTO).setMustChangePassword(BooleanUtils.toBoolean(values.get(0).toString())); + } + break; + case "userOwner": case "groupOwner": if (anyTO instanceof GroupTO && attr != null) { http://git-wip-us.apache.org/repos/asf/syncope/blob/828d1bc1/fit/build-tools/src/main/resources/testdb.sql ---------------------------------------------------------------------- diff --git a/fit/build-tools/src/main/resources/testdb.sql b/fit/build-tools/src/main/resources/testdb.sql index 0eb42e8..5ad5341 100644 --- a/fit/build-tools/src/main/resources/testdb.sql +++ b/fit/build-tools/src/main/resources/testdb.sql @@ -39,6 +39,7 @@ CREATE TABLE testpull ( id CHAR(36) PRIMARY KEY, username VARCHAR(80), surname VARCHAR(80), +mustChangePassword BOOLEAN, email VARCHAR(80), lastModification TIMESTAMP); http://git-wip-us.apache.org/repos/asf/syncope/blob/828d1bc1/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java index df0afdd..59fe873 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java @@ -520,9 +520,9 @@ public class PullTaskITCase extends AbstractTaskITCase { try { // 1. create 2 users on testpull jdbcTemplate.execute("INSERT INTO testpull VALUES (" - + "'" + user1OnTestPull + "', 'user1', 'Doe', '[email protected]', NULL)"); + + "'" + user1OnTestPull + "', 'user1', 'Doe', false, '[email protected]', NULL)"); jdbcTemplate.execute("INSERT INTO testpull VALUES (" - + "'" + user2OnTestPull + "', 'user2', 'Rossi', '[email protected]', NULL)"); + + "'" + user2OnTestPull + "', 'user2', 'Rossi', false, '[email protected]', NULL)"); // 2. create new pull task for test-db, with reconciliation filter (surname 'Rossi') ImplementationTO reconFilterBuilder = new ImplementationTO(); @@ -621,10 +621,10 @@ public class PullTaskITCase extends AbstractTaskITCase { jdbcTemplate.execute("DELETE FROM testpull"); jdbcTemplate.execute("INSERT INTO testpull VALUES " + "(1040, 'syncTokenWithErrors1', 'Surname1', " - + "'[email protected]', '2014-05-23 13:53:24.293')"); + + "false, '[email protected]', '2014-05-23 13:53:24.293')"); jdbcTemplate.execute("INSERT INTO testpull VALUES " + "(1041, 'syncTokenWithErrors2', 'Surname2', " - + "'[email protected]', '2015-05-23 13:53:24.293')"); + + "false, '[email protected]', '2015-05-23 13:53:24.293')"); ExecTO exec = execProvisioningTask(taskService, pullTask.getKey(), 50, false); assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(exec.getStatus())); @@ -729,7 +729,7 @@ public class PullTaskITCase extends AbstractTaskITCase { // 1. populate the external table jdbcTemplate.execute("INSERT INTO testpull VALUES" - + "('" + id + "', 'issuesyncope230', 'Surname', '[email protected]', NULL)"); + + "('" + id + "', 'issuesyncope230', 'Surname', false, '[email protected]', NULL)"); // 2. execute PullTask for resource-db-pull (table TESTPULL on external H2) execProvisioningTask(taskService, "7c2242f4-14af-4ab5-af31-cdae23783655", 50, false);
