Repository: syncope Updated Branches: refs/heads/master feaea6915 -> 29928e1e7
Cum grano salis (still struggling with Travis CI failure on VirAttrITCase#issueSYNCOPE453 Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/29928e1e Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/29928e1e Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/29928e1e Branch: refs/heads/master Commit: 29928e1e730abbae976e37414679d89fe68fd387 Parents: feaea69 Author: Francesco Chicchiriccò <[email protected]> Authored: Thu Mar 10 08:40:42 2016 +0100 Committer: Francesco Chicchiriccò <[email protected]> Committed: Thu Mar 10 08:40:42 2016 +0100 ---------------------------------------------------------------------- .travis.yml | 3 +- .../apache/syncope/fit/core/VirAttrITCase.java | 224 ++++++++++--------- 2 files changed, 115 insertions(+), 112 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/29928e1e/.travis.yml ---------------------------------------------------------------------- diff --git a/.travis.yml b/.travis.yml index 241c951..bd888bd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,8 @@ script: #invoker.streamLogs: we cannot access to log files through Travis web ui, so display everything in the console - mvn --show-version --quiet clean install -Dinvoker.streamLogs=true after_failure: - - cat fit/core-reference/target/log/* fit/core/reference/target/failsafe-reports/org.apache.syncope.fit.core.VirAttrITCase-output.txt + - cat fit/core-reference/target/log/* + - cat fit/core/reference/target/failsafe-reports/org.apache.syncope.fit.*-output.txt notifications: email: - [email protected] http://git-wip-us.apache.org/repos/asf/syncope/blob/29928e1e/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java index 3776eea..b67ae4e 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java @@ -22,7 +22,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import java.util.Locale; import java.util.Map; @@ -31,7 +30,7 @@ import javax.ws.rs.core.Response; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.lang3.SerializationUtils; -import org.apache.syncope.common.lib.patch.GroupPatch; +import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.patch.PasswordPatch; import org.apache.syncope.common.lib.patch.StatusPatch; import org.apache.syncope.common.lib.patch.StringPatchItem; @@ -450,127 +449,130 @@ public class VirAttrITCase extends AbstractITCase { @Test public void issueSYNCOPE453() { - final String resourceName = "issueSYNCOPE453-Res-" + getUUIDString(); - final String groupName = "issueSYNCOPE453-Group-" + getUUIDString(); - - // ------------------------------------------- - // Create a resource ad-hoc - // ------------------------------------------- - ResourceTO resourceTO = new ResourceTO(); - - resourceTO.setKey(resourceName); - resourceTO.setConnector(107L); - - ProvisionTO provisionTO = new ProvisionTO(); - provisionTO.setAnyType(AnyTypeKind.USER.name()); - provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME); - resourceTO.getProvisions().add(provisionTO); - - MappingTO mapping = new MappingTO(); - provisionTO.setMapping(mapping); - - MappingItemTO item = new MappingItemTO(); - item.setIntAttrName("aLong"); - item.setIntMappingType(IntMappingType.UserPlainSchema); - item.setExtAttrName("ID"); - item.setPurpose(MappingPurpose.PROPAGATION); - item.setConnObjectKey(true); - mapping.setConnObjectKeyItem(item); - - item = new MappingItemTO(); - item.setExtAttrName("USERNAME"); - item.setIntAttrName("username"); - item.setIntMappingType(IntMappingType.Username); - item.setPurpose(MappingPurpose.PROPAGATION); - mapping.getItems().add(item); - - item = new MappingItemTO(); - item.setExtAttrName("EMAIL"); - item.setIntAttrName("rvirtualdata"); - item.setIntMappingType(IntMappingType.GroupVirtualSchema); - item.setPurpose(MappingPurpose.PROPAGATION); - mapping.getItems().add(item); - - assertNotNull(getObject( - resourceService.create(resourceTO).getLocation(), ResourceService.class, ResourceTO.class)); - // ------------------------------------------- - - // ------------------------------------------- - // Create a VirAttrITCase ad-hoc - // ------------------------------------------- - GroupTO groupTO = new GroupTO(); - groupTO.setName(groupName); - groupTO.setRealm("/"); - groupTO.getResources().add(RESOURCE_NAME_LDAP); - groupTO = createGroup(groupTO).getAny(); - - String rvirtualdata = "[email protected]"; - - int i = 0; - int maxit = 5; - - // wait for group propagation on LDAP - do { + String resourceName = "issueSYNCOPE453-Res-" + getUUIDString(); + Long groupKey = null; + String groupName = "issueSYNCOPE453-Group-" + getUUIDString(); + + try { + // ------------------------------------------- + // Create a resource ad-hoc + // ------------------------------------------- + ResourceTO resourceTO = new ResourceTO(); + + resourceTO.setKey(resourceName); + resourceTO.setConnector(107L); + + ProvisionTO provisionTO = new ProvisionTO(); + provisionTO.setAnyType(AnyTypeKind.USER.name()); + provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME); + resourceTO.getProvisions().add(provisionTO); + + MappingTO mapping = new MappingTO(); + provisionTO.setMapping(mapping); + + MappingItemTO item = new MappingItemTO(); + item.setIntAttrName("aLong"); + item.setIntMappingType(IntMappingType.UserPlainSchema); + item.setExtAttrName("ID"); + item.setPurpose(MappingPurpose.PROPAGATION); + item.setConnObjectKey(true); + mapping.setConnObjectKeyItem(item); + + item = new MappingItemTO(); + item.setExtAttrName("USERNAME"); + item.setIntAttrName("username"); + item.setIntMappingType(IntMappingType.Username); + item.setPurpose(MappingPurpose.PROPAGATION); + mapping.getItems().add(item); + + item = new MappingItemTO(); + item.setExtAttrName("EMAIL"); + item.setIntAttrName("rvirtualdata"); + item.setIntMappingType(IntMappingType.GroupVirtualSchema); + item.setPurpose(MappingPurpose.PROPAGATION); + mapping.getItems().add(item); + + assertNotNull(getObject( + resourceService.create(resourceTO).getLocation(), ResourceService.class, ResourceTO.class)); + // ------------------------------------------- + // ------------------------------------------- + // Create a VirAttrITCase ad-hoc + // ------------------------------------------- + VirSchemaTO rvirtualdata; try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } + rvirtualdata = schemaService.read(SchemaType.VIRTUAL, "rvirtualdata"); + } catch (SyncopeClientException e) { + LOG.warn("rvirtualdata not found, re-creating", e); - GroupPatch patch = new GroupPatch(); - patch.setKey(groupTO.getKey()); - rvirtualdata = i + rvirtualdata; - patch.getVirAttrs().add(attrTO("rvirtualdata", rvirtualdata)); + rvirtualdata = new VirSchemaTO(); + rvirtualdata.setKey("rvirtualdata"); + rvirtualdata.setExtAttrName("businessCategory"); + rvirtualdata.setProvision(20); - LOG.info("Updating " + groupName + " with " + rvirtualdata); - groupTO = updateGroup(patch).getAny(); - assertNotNull(groupTO); - LOG.info("Updated " + groupName + " now has virAttrs " + groupTO.getVirAttrs()); + rvirtualdata = createSchema(SchemaType.VIRTUAL, rvirtualdata); + } + assertNotNull(rvirtualdata); - i++; - } while (groupTO.getVirAttrs().isEmpty() && i < maxit); - if (i == 5) { - fail("Timeout when propagating " + groupName + " to LDAP"); - } + if (!"minimal group".equals(rvirtualdata.getAnyTypeClass())) { + LOG.warn("rvirtualdata not in minimal group, restoring"); - assertEquals(1, groupTO.getVirAttrs().size()); - assertEquals(rvirtualdata, groupTO.getVirAttrs().iterator().next().getValues().get(0)); - // ------------------------------------------- + AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group"); + minimalGroup.getVirSchemas().add(rvirtualdata.getKey()); + anyTypeClassService.update(minimalGroup); - // ------------------------------------------- - // Create new user - // ------------------------------------------- - UserTO userTO = UserITCase.getUniqueSampleTO("[email protected]"); - userTO.getPlainAttrs().add(attrTO("aLong", "123")); - userTO.getResources().clear(); - userTO.getResources().add(resourceName); - userTO.getVirAttrs().clear(); - userTO.getDerAttrs().clear(); - userTO.getMemberships().clear(); + rvirtualdata = schemaService.read(SchemaType.VIRTUAL, rvirtualdata.getKey()); + assertEquals("minimal group", rvirtualdata.getAnyTypeClass()); + } - userTO.getMemberships().add(new MembershipTO.Builder().group(groupTO.getKey()).build()); + GroupTO groupTO = new GroupTO(); + groupTO.setName(groupName); + groupTO.setRealm("/"); + groupTO.getVirAttrs().add(attrTO(rvirtualdata.getKey(), "[email protected]")); + groupTO.getResources().add(RESOURCE_NAME_LDAP); + groupTO = createGroup(groupTO).getAny(); + groupKey = groupTO.getKey(); + assertEquals(1, groupTO.getVirAttrs().size()); + assertEquals("[email protected]", groupTO.getVirAttrs().iterator().next().getValues().get(0)); + // ------------------------------------------- + + // ------------------------------------------- + // Create new user + // ------------------------------------------- + UserTO userTO = UserITCase.getUniqueSampleTO("[email protected]"); + userTO.getPlainAttrs().add(attrTO("aLong", "123")); + userTO.getResources().clear(); + userTO.getResources().add(resourceName); + userTO.getVirAttrs().clear(); + userTO.getDerAttrs().clear(); + userTO.getMemberships().clear(); - ProvisioningResult<UserTO> result = createUser(userTO); - assertEquals(2, result.getPropagationStatuses().size()); - assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus()); - assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(1).getStatus()); - userTO = result.getAny(); + userTO.getMemberships().add(new MembershipTO.Builder().group(groupTO.getKey()).build()); - JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource); + ProvisioningResult<UserTO> result = createUser(userTO); + assertEquals(2, result.getPropagationStatuses().size()); + assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, result.getPropagationStatuses().get(1).getStatus()); + userTO = result.getAny(); - Map<String, Object> actuals = jdbcTemplate.queryForMap( - "SELECT id, surname, email FROM testsync WHERE id=?", - new Object[] { Integer.parseInt(userTO.getPlainAttrMap().get("aLong").getValues().get(0)) }); + JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource); - assertEquals(userTO.getPlainAttrMap().get("aLong").getValues().get(0), actuals.get("id").toString()); - assertEquals(rvirtualdata, actuals.get("email")); - // ------------------------------------------- + Map<String, Object> actuals = jdbcTemplate.queryForMap( + "SELECT id, surname, email FROM testsync WHERE id=?", + new Object[] { Integer.parseInt(userTO.getPlainAttrMap().get("aLong").getValues().get(0)) }); - // ------------------------------------------- - // Delete resource and group ad-hoc - // ------------------------------------------- - resourceService.delete(resourceName); - groupService.delete(groupTO.getKey()); - // ------------------------------------------- + assertEquals(userTO.getPlainAttrMap().get("aLong").getValues().get(0), actuals.get("id").toString()); + assertEquals("[email protected]", actuals.get("email")); + // ------------------------------------------- + } finally { + // ------------------------------------------- + // Delete resource and group ad-hoc + // ------------------------------------------- + resourceService.delete(resourceName); + if (groupKey != null) { + groupService.delete(groupKey); + } + // ------------------------------------------- + } } @Test
