[SYNCOPE-632] Reworking provided patch
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/3237d26d Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/3237d26d Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/3237d26d Branch: refs/heads/1_2_X Commit: 3237d26dfcba2b8d00d6b7d71b47853207ed5270 Parents: 60a6243 Author: Francesco Chicchiriccò <[email protected]> Authored: Thu Jan 29 17:15:41 2015 +0100 Committer: Francesco Chicchiriccò <[email protected]> Committed: Thu Jan 29 17:15:41 2015 +0100 ---------------------------------------------------------------------- .../org/apache/syncope/common/to/MappingTO.java | 17 ++-- .../rest/controller/ResourceController.java | 4 +- .../data/AbstractAttributableDataBinder.java | 25 ++++++ .../syncope/core/rest/data/RoleDataBinder.java | 26 ++++-- .../syncope/core/rest/data/UserDataBinder.java | 38 ++++---- .../apache/syncope/core/rest/AbstractTest.java | 28 ++++-- .../syncope/core/rest/ConnectorTestITCase.java | 13 ++- .../syncope/core/rest/RoleTestITCase.java | 92 ++++++++++++++++++++ .../syncope/core/rest/UserSelfTestITCase.java | 2 +- pom.xml | 4 +- 10 files changed, 195 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/common/src/main/java/org/apache/syncope/common/to/MappingTO.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/syncope/common/to/MappingTO.java b/common/src/main/java/org/apache/syncope/common/to/MappingTO.java index 3e702a9..3acd063 100644 --- a/common/src/main/java/org/apache/syncope/common/to/MappingTO.java +++ b/common/src/main/java/org/apache/syncope/common/to/MappingTO.java @@ -48,18 +48,17 @@ public class MappingTO extends AbstractBaseBean { this.accountLink = accountLink; } - @SuppressWarnings("unchecked") - public <T extends MappingItemTO> T getAccountIdItem() { - T accountIdItem = null; + public MappingItemTO getAccountIdItem() { + MappingItemTO accountIdItem = null; for (MappingItemTO item : getItems()) { if (item.isAccountid()) { - accountIdItem = (T) item; + accountIdItem = item; } } return accountIdItem; } - protected <T extends MappingItemTO> boolean addAccountIdItem(final T accountIdItem) { + protected boolean addAccountIdItem(final MappingItemTO accountIdItem) { if (IntMappingType.UserVirtualSchema == accountIdItem.getIntMappingType() || IntMappingType.RoleVirtualSchema == accountIdItem.getIntMappingType() || IntMappingType.MembershipVirtualSchema == accountIdItem.getIntMappingType() @@ -78,11 +77,9 @@ public class MappingTO extends AbstractBaseBean { } public boolean setAccountIdItem(final MappingItemTO accountIdItem) { - if (accountIdItem == null) { - return this.removeItem(getAccountIdItem()); - } else { - return addAccountIdItem(accountIdItem); - } + return accountIdItem == null + ? this.removeItem(getAccountIdItem()) + : addAccountIdItem(accountIdItem); } public MappingItemTO getPasswordItem() { http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java b/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java index d3dc9d7..a3307d7 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java +++ b/core/src/main/java/org/apache/syncope/core/rest/controller/ResourceController.java @@ -190,8 +190,8 @@ public class ResourceController extends AbstractTransactionalController<Resource AbstractMappingItem accountIdItem = attrUtil.getAccountIdItem(resource); if (accountIdItem == null) { - throw new NotFoundException("AccountId mapping for " + type + " " + id + " on resource '" + resourceName - + "'"); + throw new NotFoundException( + "AccountId mapping for " + type + " " + id + " on resource '" + resourceName + "'"); } final String accountIdValue = MappingUtil.getAccountIdValue( subject, resource, attrUtil.getAccountIdItem(resource)); http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java index 399b118..e6fcb48 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java +++ b/core/src/main/java/org/apache/syncope/core/rest/data/AbstractAttributableDataBinder.java @@ -21,9 +21,11 @@ package org.apache.syncope.core.rest.data; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.apache.syncope.common.SyncopeClientCompositeException; @@ -76,6 +78,7 @@ import org.apache.syncope.core.persistence.dao.AttrValueDAO; import org.apache.syncope.core.persistence.dao.DerAttrDAO; import org.apache.syncope.core.persistence.dao.DerSchemaDAO; import org.apache.syncope.core.persistence.dao.MembershipDAO; +import org.apache.syncope.core.persistence.dao.NotFoundException; import org.apache.syncope.core.persistence.dao.PolicyDAO; import org.apache.syncope.core.persistence.dao.ResourceDAO; import org.apache.syncope.core.persistence.dao.RoleDAO; @@ -916,4 +919,26 @@ public abstract class AbstractAttributableDataBinder { } } } + + protected Map<String, String> getAccountIds(final AbstractSubject subject, final AttributableType type) { + Map<String, String> accountIds = new HashMap<String, String>(); + + for (ExternalResource resource : subject.getResources()) { + if ((type == AttributableType.USER && resource.getUmapping() != null) + || (type == AttributableType.ROLE && resource.getRmapping() != null)) { + + AbstractMappingItem accountIdItem = + AttributableUtil.getInstance(type).getAccountIdItem(resource); + if (accountIdItem == null) { + throw new NotFoundException( + "AccountId mapping for " + type + " " + subject.getId() + + " on resource '" + resource.getName() + "'"); + } + + accountIds.put(resource.getName(), MappingUtil.getAccountIdValue(subject, resource, accountIdItem)); + } + } + + return accountIds; + } } http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java index e3fe433..58029aa 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java +++ b/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java @@ -21,14 +21,15 @@ package org.apache.syncope.core.rest.data; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Set; +import org.apache.syncope.common.SyncopeClientCompositeException; +import org.apache.syncope.common.SyncopeClientException; import org.apache.syncope.common.mod.RoleMod; import org.apache.syncope.common.to.RoleTO; import org.apache.syncope.common.types.AttributableType; -import org.apache.syncope.common.types.ResourceOperation; import org.apache.syncope.common.types.ClientExceptionType; -import org.apache.syncope.common.SyncopeClientCompositeException; -import org.apache.syncope.common.SyncopeClientException; +import org.apache.syncope.common.types.ResourceOperation; import org.apache.syncope.core.connid.ConnObjectUtil; import org.apache.syncope.core.persistence.beans.AbstractAttrTemplate; import org.apache.syncope.core.persistence.beans.AbstractSchema; @@ -245,7 +246,8 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { SyncopeClientCompositeException scce = SyncopeClientException.buildComposite(); - Set<String> currentResources = role.getResourceNames(); + // fetch account ids before update + Map<String, String> oldAccountIds = getAccountIds(role, AttributableType.ROLE); // name SyncopeClientException invalidRoles = SyncopeClientException.build(ClientExceptionType.InvalidRoles); @@ -254,10 +256,7 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { role.getParent() == null ? null : role.getParent().getId()); if (otherRole == null || role.equals(otherRole)) { if (!roleMod.getName().equals(role.getName())) { - propByRes.addAll(ResourceOperation.UPDATE, currentResources); - for (String resource : currentResources) { - propByRes.addOldAccountId(resource, role.getName()); - } + propByRes.addAll(ResourceOperation.UPDATE, role.getResourceNames()); role.setName(roleMod.getName()); } @@ -354,6 +353,17 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { // attributes, derived attributes, virtual attributes and resources propByRes.merge(fill(role, roleMod, AttributableUtil.getInstance(AttributableType.ROLE), scce)); + // check if some account id was changed by the update above + Map<String, String> newAccountIds = getAccountIds(role, AttributableType.ROLE); + for (Map.Entry<String, String> entry : oldAccountIds.entrySet()) { + if (newAccountIds.containsKey(entry.getKey()) + && !entry.getValue().equals(newAccountIds.get(entry.getKey()))) { + + propByRes.addOldAccountId(entry.getKey(), entry.getValue()); + propByRes.add(ResourceOperation.UPDATE, entry.getKey()); + } + } + return propByRes; } http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java index a37aacb..a904611 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java +++ b/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java @@ -22,25 +22,24 @@ import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import javax.annotation.Resource; import org.apache.commons.lang3.StringUtils; +import org.apache.syncope.common.SyncopeClientCompositeException; +import org.apache.syncope.common.SyncopeClientException; +import org.apache.syncope.common.mod.AttributeMod; import org.apache.syncope.common.mod.MembershipMod; import org.apache.syncope.common.mod.UserMod; import org.apache.syncope.common.to.MembershipTO; import org.apache.syncope.common.to.UserTO; import org.apache.syncope.common.types.AttributableType; -import org.apache.syncope.common.types.IntMappingType; -import org.apache.syncope.common.types.ResourceOperation; import org.apache.syncope.common.types.ClientExceptionType; +import org.apache.syncope.common.types.ResourceOperation; import org.apache.syncope.common.util.BeanUtils; -import org.apache.syncope.common.SyncopeClientCompositeException; -import org.apache.syncope.common.SyncopeClientException; -import org.apache.syncope.common.mod.AttributeMod; import org.apache.syncope.core.connid.ConnObjectUtil; import org.apache.syncope.core.persistence.beans.AbstractAttr; import org.apache.syncope.core.persistence.beans.AbstractDerAttr; -import org.apache.syncope.core.persistence.beans.AbstractMappingItem; import org.apache.syncope.core.persistence.beans.AbstractVirAttr; import org.apache.syncope.core.persistence.beans.ExternalResource; import org.apache.syncope.core.persistence.beans.SecurityQuestion; @@ -55,8 +54,8 @@ import org.apache.syncope.core.persistence.dao.SecurityQuestionDAO; import org.apache.syncope.core.propagation.PropagationByResource; import org.apache.syncope.core.rest.controller.UnauthorizedRoleException; import org.apache.syncope.core.util.AttributableUtil; -import org.apache.syncope.core.util.EntitlementUtil; import org.apache.syncope.core.util.Encryptor; +import org.apache.syncope.core.util.EntitlementUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -267,6 +266,9 @@ public class UserDataBinder extends AbstractAttributableDataBinder { Set<String> currentResources = user.getResourceNames(); + // fetch account ids before update + Map<String, String> oldAccountIds = getAccountIds(user, AttributableType.USER); + // password if (StringUtils.isNotBlank(userMod.getPassword())) { setPassword(user, userMod.getPassword(), scce); @@ -276,18 +278,9 @@ public class UserDataBinder extends AbstractAttributableDataBinder { // username if (userMod.getUsername() != null && !userMod.getUsername().equals(user.getUsername())) { - String oldUsername = user.getUsername(); - - user.setUsername(userMod.getUsername()); propByRes.addAll(ResourceOperation.UPDATE, currentResources); - for (ExternalResource resource : user.getResources()) { - for (AbstractMappingItem mapItem : resource.getUmapping().getItems()) { - if (mapItem.isAccountid() && mapItem.getIntMappingType() == IntMappingType.Username) { - propByRes.addOldAccountId(resource.getName(), oldUsername); - } - } - } + user.setUsername(userMod.getUsername()); } // security question / answer: @@ -405,6 +398,17 @@ public class UserDataBinder extends AbstractAttributableDataBinder { propByRes.addAll(ResourceOperation.UPDATE, currentResources); } + // check if some account id was changed by the update above + Map<String, String> newAccountIds = getAccountIds(user, AttributableType.USER); + for (Map.Entry<String, String> entry : oldAccountIds.entrySet()) { + if (newAccountIds.containsKey(entry.getKey()) + && !entry.getValue().equals(newAccountIds.get(entry.getKey()))) { + + propByRes.addOldAccountId(entry.getKey(), entry.getValue()); + propByRes.add(ResourceOperation.UPDATE, entry.getKey()); + } + } + return propByRes; } http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java b/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java index 785734d..767ca6f 100644 --- a/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java +++ b/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Properties; import java.util.UUID; import javax.naming.Context; +import javax.naming.NamingException; import javax.naming.directory.InitialDirContext; import javax.sql.DataSource; import javax.ws.rs.core.Response; @@ -335,12 +336,9 @@ public abstract class AbstractTest { return getObject(response.getLocation(), ResourceService.class, ResourceTO.class); } - protected Object getLdapRemoteObject(final String objectDn) { - return getLdapRemoteObject(null, null, objectDn); - } - @SuppressWarnings({ "unchecked", "rawtypes", "UseOfObsoleteCollectionType" }) - protected Object getLdapRemoteObject(final String bindDn, final String bindPwd, final String objectDn) { + protected InitialDirContext getLdapResourceDirContext(final String bindDn, final String bindPwd) + throws NamingException { ResourceTO ldapRes = resourceService.read(RESOURCE_NAME_LDAP); final Map<String, ConnConfProperty> ldapConnConf = connectorService.read(ldapRes.getConnectorId()).getConfigurationMap(); @@ -355,11 +353,29 @@ public abstract class AbstractTest { env.put(Context.SECURITY_CREDENTIALS, bindPwd == null ? ldapConnConf.get("credentials").getValues().get(0) : bindPwd); + return new InitialDirContext(env); + } + + protected Object getLdapRemoteObject(final String bindDn, final String bindPwd, final String objectDn) { + InitialDirContext ctx = null; try { - final InitialDirContext ctx = new InitialDirContext(env); + ctx = getLdapResourceDirContext(bindDn, bindPwd); return ctx.lookup(objectDn); } catch (Exception e) { return null; + } finally { + if (ctx != null) { + try { + ctx.close(); + } catch (NamingException e) { + // ignore + } + } } } + + protected Object getLdapRemoteObject(final String objectDn) { + return getLdapRemoteObject(null, null, objectDn); + } + } http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java index fc4e830..393a104 100644 --- a/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java +++ b/core/src/test/java/org/apache/syncope/core/rest/ConnectorTestITCase.java @@ -313,7 +313,7 @@ public class ConnectorTestITCase extends AbstractTest { connInstanceTO = getObject(response.getLocation(), ConnectorService.class, ConnInstanceTO.class); assertNotNull(connInstanceTO); - assertTrue(connInstanceTO.getCapabilities().isEmpty()); + assertFalse(connInstanceTO.getCapabilities().contains(ConnectorCapability.AUTHENTICATE)); long connId = connInstanceTO.getId(); @@ -337,26 +337,23 @@ public class ConnectorTestITCase extends AbstractTest { // Check for spring bean. // ---------------------------------- ConnInstanceTO connInstanceBean = connectorService.readByResource(resourceTO.getName()); - assertNotNull(connInstanceBean); - assertTrue(connInstanceBean.getCapabilities().isEmpty()); + assertFalse(connInstanceBean.getCapabilities().contains(ConnectorCapability.AUTHENTICATE)); // ---------------------------------- // ---------------------------------- // Check for spring bean update after connector instance update. // ---------------------------------- - connInstanceTO.getCapabilities().add(ConnectorCapability.SEARCH); + connInstanceTO.getCapabilities().add(ConnectorCapability.AUTHENTICATE); connectorService.update(connInstanceTO.getId(), connInstanceTO); ConnInstanceTO actual = connectorService.read(connInstanceTO.getId()); - assertNotNull(actual); - assertFalse(connInstanceTO.getCapabilities().isEmpty()); + assertTrue(connInstanceTO.getCapabilities().contains(ConnectorCapability.AUTHENTICATE)); // check for spring bean update connInstanceBean = connectorService.readByResource(resourceTO.getName()); - - assertFalse(connInstanceBean.getCapabilities().isEmpty()); + assertTrue(connInstanceBean.getCapabilities().contains(ConnectorCapability.AUTHENTICATE)); // ---------------------------------- } http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/test/java/org/apache/syncope/core/rest/RoleTestITCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/syncope/core/rest/RoleTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/RoleTestITCase.java index a6a6009..6e384d4 100644 --- a/core/src/test/java/org/apache/syncope/core/rest/RoleTestITCase.java +++ b/core/src/test/java/org/apache/syncope/core/rest/RoleTestITCase.java @@ -29,6 +29,11 @@ import java.io.IOException; import java.io.InputStream; import java.security.AccessControlException; import java.util.List; +import javax.naming.NamingEnumeration; +import javax.naming.NamingException; +import javax.naming.directory.DirContext; +import javax.naming.directory.SearchControls; +import javax.naming.directory.SearchResult; import javax.ws.rs.core.Response; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -40,11 +45,15 @@ import org.apache.syncope.common.reqres.BulkActionResult; import org.apache.syncope.common.reqres.PagedResult; import org.apache.syncope.common.services.RoleService; import org.apache.syncope.common.to.ConnObjectTO; +import org.apache.syncope.common.to.MappingItemTO; +import org.apache.syncope.common.to.ResourceTO; import org.apache.syncope.common.to.RoleTO; import org.apache.syncope.common.to.SchemaTO; import org.apache.syncope.common.to.UserTO; import org.apache.syncope.common.types.AttributableType; import org.apache.syncope.common.types.ClientExceptionType; +import org.apache.syncope.common.types.IntMappingType; +import org.apache.syncope.common.types.MappingPurpose; import org.apache.syncope.common.types.Preference; import org.apache.syncope.common.types.RESTHeaders; import org.apache.syncope.common.types.ResourceAssociationActionType; @@ -794,4 +803,87 @@ public class RoleTestITCase extends AbstractTest { assertNotNull(child.getAttrMap().get("icon").getValues()); assertEquals("parentIcon", child.getAttrMap().get("icon").getValues().get(0)); } + + @Test + public void issueSYNCOPE632() { + RoleTO roleTO = null; + try { + // 1. create new LDAP resource having account id mapped to a derived attribute + ResourceTO newLDAP = resourceService.read(RESOURCE_NAME_LDAP); + newLDAP.setName("new-ldap"); + newLDAP.setPropagationPrimary(true); + MappingItemTO accountId = newLDAP.getRmapping().getAccountIdItem(); + accountId.setIntMappingType(IntMappingType.RoleDerivedSchema); + accountId.setIntAttrName("displayProperty"); + newLDAP.getRmapping().setAccountIdItem(accountId); + newLDAP.getRmapping().setAccountLink("'cn=' + displayProperty + ',ou=groups,o=isp'"); + + MappingItemTO description = new MappingItemTO(); + description.setIntMappingType(IntMappingType.RoleId); + description.setExtAttrName("description"); + description.setPurpose(MappingPurpose.BOTH); + newLDAP.getRmapping().addItem(description); + + newLDAP = createResource(newLDAP); + assertNotNull(newLDAP); + + // 2. create a role and give the resource created above + roleTO = buildRoleTO("lastRole"); + roleTO.getRAttrTemplates().add("icon"); + roleTO.getAttrs().add(attributeTO("icon", "anIcon")); + roleTO.getRAttrTemplates().add("show"); + roleTO.getAttrs().add(attributeTO("show", "true")); + roleTO.getRDerAttrTemplates().add("displayProperty"); + roleTO.getDerAttrs().add(attributeTO("displayProperty", null)); + roleTO.getResources().clear(); + roleTO.getResources().add("new-ldap"); + + roleTO = createRole(roleTO); + assertNotNull(roleTO); + + // 3. update the role + RoleMod roleMod = new RoleMod(); + roleMod.setId(roleTO.getId()); + roleMod.getAttrsToRemove().add("icon"); + roleMod.getAttrsToUpdate().add(attributeMod("icon", "anotherIcon")); + + roleTO = updateRole(roleMod); + assertNotNull(roleTO); + + // 4. check that a single group exists in LDAP for the role created and updated above + int entries = 0; + DirContext ctx = null; + try { + ctx = getLdapResourceDirContext(null, null); + + SearchControls ctls = new SearchControls(); + ctls.setReturningAttributes(new String[] { "*", "+" }); + ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); + + NamingEnumeration<SearchResult> result = + ctx.search("ou=groups,o=isp", "(description=" + roleTO.getId() + ")", ctls); + while (result.hasMore()) { + SearchResult entry = result.next(); + entries++; + } + } catch (Exception e) { + // ignore + } finally { + if (ctx != null) { + try { + ctx.close(); + } catch (NamingException e) { + // ignore + } + } + } + + assertEquals(1, entries); + } finally { + if (roleTO != null) { + roleService.delete(roleTO.getId()); + } + resourceService.delete("new-ldap"); + } + } } http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java index 595341f..3fa50e2 100644 --- a/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java +++ b/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java @@ -158,7 +158,7 @@ public class UserSelfTestITCase extends AbstractTest { } @Test - public void updateWitApproval() { + public void updateWithApproval() { Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers()); // 1. create user as admin http://git-wip-us.apache.org/repos/asf/syncope/blob/3237d26d/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index ba16c75..a40e6c0 100644 --- a/pom.xml +++ b/pom.xml @@ -335,7 +335,7 @@ under the License. <activiti.version>5.16.4</activiti.version> - <aspectj.version>1.8.4</aspectj.version> + <aspectj.version>1.8.5</aspectj.version> <cxf.version>3.0.3</cxf.version> <spring.version>4.0.9.RELEASE</spring.version> @@ -1128,7 +1128,7 @@ under the License. <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> - <version>2.9</version> + <version>2.10</version> <configuration> <outputDirectory>${bundles.directory}</outputDirectory> <artifactItems>
