You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by md...@apache.org on 2015/02/19 12:50:12 UTC
[1/4] syncope git commit: [SYNCOPE-645] Provide a validator for
resource user mapping
Repository: syncope
Updated Branches:
refs/heads/master fc06e742d -> 9cbeffd39
[SYNCOPE-645] Provide a validator for resource user mapping
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/8c38a41f
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/8c38a41f
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/8c38a41f
Branch: refs/heads/master
Commit: 8c38a41fff9c87f7eb62d43303926094f53909de
Parents: d01ed12
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Thu Feb 19 09:35:29 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Thu Feb 19 09:35:29 2015 +0100
----------------------------------------------------------------------
.../entity/ExternalResourceValidator.java | 12 ++++++++++
.../core/persistence/dao/ResourceTest.java | 23 ++++++++++++++++++++
2 files changed, 35 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/8c38a41f/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
index eed7add..124033d 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
@@ -20,11 +20,13 @@ package org.apache.syncope.core.persistence.validation.entity;
import javax.validation.ConstraintValidatorContext;
import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.types.AttributableType;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.AbstractMapping;
import org.apache.syncope.core.persistence.beans.AbstractMappingItem;
import org.apache.syncope.core.persistence.beans.ExternalResource;
import org.apache.syncope.core.propagation.PropagationActions;
+import org.apache.syncope.core.persistence.beans.user.UMapping;
public class ExternalResourceValidator extends AbstractValidator<ExternalResourceCheck, ExternalResource> {
@@ -74,6 +76,16 @@ public class ExternalResourceValidator extends AbstractValidator<ExternalResourc
return false;
}
+ final AbstractMappingItem accountId = mapping.getAccountIdItem();
+ if (mapping instanceof UMapping
+ && AttributableType.ROLE == accountId.getIntMappingType().getAttributableType()) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidMapping,
+ "Role attribute as accountId is not permitted")).
+ addNode("attributableType").addConstraintViolation();
+ return false;
+ }
+
boolean isValid = true;
int passwords = 0;
http://git-wip-us.apache.org/repos/asf/syncope/blob/8c38a41f/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java b/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
index cd6f735..b5a7527 100644
--- a/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
+++ b/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
@@ -263,4 +263,27 @@ public class ResourceTest extends AbstractDAOTest {
assertTrue(e.hasViolation(EntityViolationType.InvalidName));
}
}
+
+ @Test(expected = InvalidEntityException.class)
+ public void issueSYNCOPE645() {
+ ExternalResource resource = new ExternalResource();
+ resource.setName("ws-target-resource-basic-save-invalid");
+
+ ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
+ resource.setConnector(connector);
+
+ UMapping mapping = new UMapping();
+ resource.setUmapping(mapping);
+
+ final UMappingItem item = new UMappingItem();
+ item.setIntAttrName("icon");
+ item.setExtAttrName("icon");
+ item.setIntMappingType(IntMappingType.RoleSchema);
+ item.setPurpose(MappingPurpose.BOTH);
+ mapping.setAccountIdItem(item);
+
+ // save the resource
+ ExternalResource actual = resourceDAO.save(resource);
+ assertNotNull(actual);
+ }
}
[3/4] syncope git commit: [SYNCOPE-645] Merge from 1_1_X
Posted by md...@apache.org.
[SYNCOPE-645] Merge from 1_1_X
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/583e8390
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/583e8390
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/583e8390
Branch: refs/heads/master
Commit: 583e83905f533293ee621e9fce0d82fecfdb1938
Parents: bef822f
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Thu Feb 19 11:37:00 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Thu Feb 19 11:37:00 2015 +0100
----------------------------------------------------------------------
.../persistence/validation/entity/ExternalResourceValidator.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/583e8390/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
index 5fa4417..7c69b05 100644
--- a/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
+++ b/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
@@ -82,7 +82,7 @@ public class ExternalResourceValidator extends AbstractValidator<ExternalResourc
context.buildConstraintViolationWithTemplate(
getTemplate(EntityViolationType.InvalidMapping,
"Role attribute as accountId is not permitted")).
- addNode("attributableType").addConstraintViolation();
+ addPropertyNode("attributableType").addConstraintViolation();
return false;
}
[4/4] syncope git commit: [SYNCOPE-645] Merge from 1_2_X
Posted by md...@apache.org.
[SYNCOPE-645] Merge from 1_2_X
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/9cbeffd3
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/9cbeffd3
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/9cbeffd3
Branch: refs/heads/master
Commit: 9cbeffd396b76cdd52768145be1cb9a5460211a8
Parents: fc06e74 583e839
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Thu Feb 19 12:11:38 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Thu Feb 19 12:11:38 2015 +0100
----------------------------------------------------------------------
.../entity/ExternalResourceValidator.java | 12 ++++++++++
.../persistence/jpa/entity/ResourceTest.java | 23 ++++++++++++++++++++
2 files changed, 35 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/9cbeffd3/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
----------------------------------------------------------------------
diff --cc core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
index 1d512bb,0000000..2cc90f0
mode 100644,000000..100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceValidator.java
@@@ -1,130 -1,0 +1,142 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.validation.entity;
+
+import javax.validation.ConstraintValidatorContext;
+import org.apache.commons.lang3.StringUtils;
++import org.apache.syncope.common.lib.types.AttributableType;
+import org.apache.syncope.common.lib.types.EntityViolationType;
+import org.apache.syncope.core.persistence.api.entity.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.Mapping;
+import org.apache.syncope.core.persistence.api.entity.MappingItem;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
++import org.apache.syncope.core.persistence.api.entity.user.UMapping;
+
+public class ExternalResourceValidator extends AbstractValidator<ExternalResourceCheck, ExternalResource> {
+
+ private boolean isValid(final MappingItem item, final ConstraintValidatorContext context) {
+ if (StringUtils.isBlank(item.getExtAttrName())) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidMapping, item + ".extAttrName is null")).
+ addPropertyNode("extAttrName").addConstraintViolation();
+
+ return false;
+ }
+
+ if (StringUtils.isBlank(item.getIntAttrName())) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidMapping, item + ".intAttrName is null")).
+ addPropertyNode("intAttrName").addConstraintViolation();
+
+ return false;
+ }
+
+ if (item.getPurpose() == null) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidMapping, item + ".purpose is null")).
+ addPropertyNode("purpose").addConstraintViolation();
+
+ return false;
+ }
+
+ return true;
+ }
+
+ private boolean isValid(final Mapping<?> mapping, final ConstraintValidatorContext context) {
+ if (mapping == null) {
+ return true;
+ }
+
+ int accountIds = 0;
+ for (MappingItem item : mapping.getItems()) {
+ if (item.isAccountid()) {
+ accountIds++;
+ }
+ }
+ if (accountIds != 1) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidMapping, "One and only one accountId mapping is needed")).
+ addPropertyNode("accountId.size").addConstraintViolation();
+ return false;
+ }
+
++ final MappingItem accountId = mapping.getAccountIdItem();
++ if (mapping instanceof UMapping
++ && AttributableType.ROLE == accountId.getIntMappingType().getAttributableType()) {
++ context.buildConstraintViolationWithTemplate(
++ getTemplate(EntityViolationType.InvalidMapping,
++ "Role attribute as accountId is not permitted")).
++ addPropertyNode("attributableType").addConstraintViolation();
++ return false;
++ }
++
+ boolean isValid = true;
+
+ int passwords = 0;
+ for (MappingItem item : mapping.getItems()) {
+ isValid &= isValid(item, context);
+
+ if (item.isPassword()) {
+ passwords++;
+ }
+ }
+ if (passwords > 1) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidMapping, "One and only one password mapping is allowed")).
+ addPropertyNode("password.size").addConstraintViolation();
+ isValid = false;
+ }
+
+ return isValid;
+ }
+
+ @Override
+ public boolean isValid(final ExternalResource resource, final ConstraintValidatorContext context) {
+ context.disableDefaultConstraintViolation();
+
+ if (!NAME_PATTERN.matcher(resource.getKey()).matches()) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidName, "Invalid Resource name")).
+ addPropertyNode("name").addConstraintViolation();
+ return false;
+ }
+
+ if (!resource.getPropagationActionsClassNames().isEmpty()) {
+ for (String className : resource.getPropagationActionsClassNames()) {
+ Class<?> actionsClass = null;
+ boolean isAssignable = false;
+ try {
+ actionsClass = Class.forName(className);
+ isAssignable = PropagationActions.class.isAssignableFrom(actionsClass);
+ } catch (Exception e) {
+ LOG.error("Invalid PropagationActions specified: {}", className, e);
+ }
+
+ if (actionsClass == null || !isAssignable) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidResource, "Invalid actions class name")).
+ addPropertyNode("actionsClassName").addConstraintViolation();
+ return false;
+ }
+ }
+ }
+
+ return isValid(resource.getUmapping(), context) && isValid(resource.getRmapping(), context);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/9cbeffd3/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
----------------------------------------------------------------------
diff --cc core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
index 0ab257a,0000000..103b9bb
mode 100644,000000..100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
@@@ -1,266 -1,0 +1,289 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.syncope.common.lib.types.AttributableType;
+import org.apache.syncope.common.lib.types.EntityViolationType;
+import org.apache.syncope.common.lib.types.IntMappingType;
+import org.apache.syncope.common.lib.types.MappingPurpose;
+import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
+import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
+import org.apache.syncope.core.persistence.api.entity.ConnInstance;
+import org.apache.syncope.core.persistence.api.entity.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.user.UMapping;
+import org.apache.syncope.core.persistence.api.entity.user.UMappingItem;
+import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class ResourceTest extends AbstractTest {
+
+ @Autowired
+ private ExternalResourceDAO resourceDAO;
+
+ @Test
+ public void findById() {
+ ExternalResource resource = resourceDAO.find("ws-target-resource-1");
+ assertNotNull("findById did not work", resource);
+
+ ConnInstance connector = resource.getConnector();
+ assertNotNull("connector not found", connector);
+ assertEquals("invalid connector name",
+ "net.tirasa.connid.bundles.soap.WebServiceConnector", connector.getConnectorName());
+ assertEquals("invalid bundle name", "net.tirasa.connid.bundles.soap", connector.getBundleName());
+
+ assertFalse("no mapping specified", resource.getUmapping().getItems().isEmpty());
+
+ List<Long> mappingIds = new ArrayList<>();
+ for (UMappingItem item : resource.getUmapping().getItems()) {
+ mappingIds.add(item.getKey());
+ }
+ assertTrue(mappingIds.contains(100L));
+ }
+
+ @Test
+ public void findAll() {
+ List<ExternalResource> resources = resourceDAO.findAll();
+ assertNotNull(resources);
+ assertEquals(18, resources.size());
+ }
+
+ @Test
+ public void findAllByPriority() {
+ List<ExternalResource> resources = resourceDAO.findAllByPriority();
+ assertNotNull(resources);
+ assertFalse(resources.isEmpty());
+ }
+
+ @Test
+ public void getAccountId() {
+ ExternalResource resource = resourceDAO.find("ws-target-resource-2");
+ assertNotNull(resource);
+ assertEquals("fullname", resource.getUmapping().getAccountIdItem().getIntAttrName());
+ }
+
+ @Test
+ public void save() {
+ ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
+ resource.setKey("ws-target-resource-basic-save");
+ resource.setPropagationPriority(2);
+ resource.setPropagationPrimary(true);
+
+ UMapping mapping = entityFactory.newEntity(UMapping.class);
+ resource.setUmapping(mapping);
+
+ UMappingItem accountId = entityFactory.newEntity(UMappingItem.class);
+ accountId.setExtAttrName("username");
+ accountId.setIntAttrName("fullname");
+ accountId.setIntMappingType(IntMappingType.UserId);
+ accountId.setPurpose(MappingPurpose.BOTH);
+ mapping.setAccountIdItem(accountId);
+
+ ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
+ resource.setConnector(connector);
+
+ // save the resource
+ ExternalResource actual = resourceDAO.save(resource);
+
+ assertNotNull(actual);
+ assertNotNull(actual.getConnector());
+ assertNotNull(actual.getUmapping());
+ assertFalse(actual.getUmapping().getItems().isEmpty());
+ assertEquals(Integer.valueOf(2), actual.getPropagationPriority());
+ assertTrue(actual.isPropagationPrimary());
+ }
+
+ @Test(expected = InvalidEntityException.class)
+ public void saveInvalidMappingIntAttr() {
+ ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
+ resource.setKey("ws-target-resource-basic-save-invalid");
+
+ ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
+ resource.setConnector(connector);
+
+ UMapping mapping = entityFactory.newEntity(UMapping.class);
+ resource.setUmapping(mapping);
+
+ UMappingItem accountId = entityFactory.newEntity(UMappingItem.class);
+ accountId.setAccountid(true);
+ accountId.setIntMappingType(IntMappingType.UserPlainSchema);
+ mapping.addItem(accountId);
+
+ // save the resource
+ ExternalResource actual = resourceDAO.save(resource);
+ assertNotNull(actual);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void saveInvalidAccountIdMapping() {
+ ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
+ resource.setKey("ws-target-resource-basic-save-invalid");
+
+ ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
+ resource.setConnector(connector);
+
+ UMapping mapping = entityFactory.newEntity(UMapping.class);
+ resource.setUmapping(mapping);
+
+ UMappingItem accountId = entityFactory.newEntity(UMappingItem.class);
+ accountId.setAccountid(true);
+ accountId.setIntMappingType(IntMappingType.UserVirtualSchema);
+ mapping.setAccountIdItem(accountId);
+
+ // save the resource
+ ExternalResource actual = resourceDAO.save(resource);
+ assertNotNull(actual);
+ }
+
+ @Test(expected = InvalidEntityException.class)
+ public void saveInvalidMappingExtAttr() {
+ ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
+ resource.setKey("ws-target-resource-basic-save-invalid");
+
+ ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
+ resource.setConnector(connector);
+
+ UMapping mapping = entityFactory.newEntity(UMapping.class);
+ resource.setUmapping(mapping);
+
+ UMappingItem item = entityFactory.newEntity(UMappingItem.class);
+ item.setAccountid(true);
+ item.setIntAttrName("fullname");
+ item.setIntMappingType(IntMappingType.UserPlainSchema);
+ mapping.addItem(item);
+
+ item = entityFactory.newEntity(UMappingItem.class);
+ item.setIntAttrName("userId");
+ item.setIntMappingType(IntMappingType.UserPlainSchema);
+ mapping.addItem(item);
+
+ ExternalResource actual = resourceDAO.save(resource);
+ assertNotNull(actual);
+ }
+
+ @Test
+ public void saveWithRoleMappingType() {
+ ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
+ resource.setKey("ws-target-resource-basic-save-invalid");
+
+ ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
+ resource.setConnector(connector);
+
+ UMapping mapping = entityFactory.newEntity(UMapping.class);
+ resource.setUmapping(mapping);
+
+ UMappingItem item = entityFactory.newEntity(UMappingItem.class);
+ item.setIntAttrName("fullname");
+ item.setExtAttrName("fullname");
+ item.setIntMappingType(IntMappingType.UserPlainSchema);
+ item.setPurpose(MappingPurpose.BOTH);
+ mapping.setAccountIdItem(item);
+
+ item = entityFactory.newEntity(UMappingItem.class);
+ item.setIntAttrName("icon");
+ item.setExtAttrName("icon");
+ item.setIntMappingType(IntMappingType.RolePlainSchema);
+ item.setPurpose(MappingPurpose.BOTH);
+ mapping.addItem(item);
+
+ item = entityFactory.newEntity(UMappingItem.class);
+ item.setIntAttrName("mderiveddata");
+ item.setExtAttrName("mderiveddata");
+ item.setIntMappingType(IntMappingType.MembershipDerivedSchema);
+ item.setPurpose(MappingPurpose.BOTH);
+ mapping.addItem(item);
+
+ // save the resource
+ ExternalResource actual = resourceDAO.save(resource);
+ assertNotNull(actual);
+
+ int items = 0;
+ for (UMappingItem mapItem : actual.getUmapping().getItems()) {
+ items++;
+
+ if ("icon".equals(mapItem.getIntAttrName())) {
+ assertTrue(IntMappingType.contains(AttributableType.ROLE,
+ mapItem.getIntMappingType().toString()));
+ }
+ if ("mderiveddata".equals(mapItem.getIntAttrName())) {
+ assertTrue(IntMappingType.contains(AttributableType.MEMBERSHIP,
+ mapItem.getIntMappingType().toString()));
+ }
+ }
+ assertEquals(3, items);
+ }
+
+ @Test
+ public void delete() {
+ ExternalResource resource = resourceDAO.find("ws-target-resource-2");
+ assertNotNull(resource);
+
+ resourceDAO.delete(resource.getKey());
+
+ ExternalResource actual = resourceDAO.find("ws-target-resource-2");
+ assertNull(actual);
+ }
+
+ @Test
+ public void issueSYNCOPE418() {
+ ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
+ resource.setKey("http://schemas.examples.org/security/authorization/organizationUnit");
+
+ try {
+ resourceDAO.save(resource);
+ fail();
+ } catch (InvalidEntityException e) {
+ assertTrue(e.hasViolation(EntityViolationType.InvalidName));
+ }
+ }
++
++ @Test(expected = InvalidEntityException.class)
++ public void issueSYNCOPE645() {
++ ExternalResource resource = entityFactory.newEntity(ExternalResource.class);
++ resource.setKey("ws-target-resource-basic-save-invalid");
++
++ ConnInstance connector = resourceDAO.find("ws-target-resource-1").getConnector();
++ resource.setConnector(connector);
++
++ UMapping mapping = entityFactory.newEntity(UMapping.class);
++ resource.setUmapping(mapping);
++
++ final UMappingItem item = entityFactory.newEntity(UMappingItem.class);
++ item.setIntAttrName("icon");
++ item.setExtAttrName("icon");
++ item.setIntMappingType(IntMappingType.RolePlainSchema);
++ item.setPurpose(MappingPurpose.BOTH);
++ mapping.setAccountIdItem(item);
++
++ // save the resource
++ ExternalResource actual = resourceDAO.save(resource);
++ assertNotNull(actual);
++ }
+}
[2/4] syncope git commit: Merge branch '1_1_X' into 1_2_X
Posted by md...@apache.org.
Merge branch '1_1_X' into 1_2_X
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/bef822f3
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/bef822f3
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/bef822f3
Branch: refs/heads/master
Commit: bef822f39134ff2bb388ba6deedf51ca7d1f2257
Parents: 8f4ba7f 8c38a41
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Thu Feb 19 11:18:56 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Thu Feb 19 11:18:56 2015 +0100
----------------------------------------------------------------------
.../entity/ExternalResourceValidator.java | 12 ++++++++++
.../core/persistence/dao/ResourceTest.java | 23 ++++++++++++++++++++
2 files changed, 35 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/bef822f3/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/bef822f3/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
----------------------------------------------------------------------