You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2015/05/14 14:28:36 UTC

syncope git commit: [SYNCOPE-119][SYNCOPE-667] Adjusting master test case to match 1_2_X - and fixing something in the meanwhile

Repository: syncope
Updated Branches:
  refs/heads/master 5495e809d -> 52dfedcdc


[SYNCOPE-119][SYNCOPE-667] Adjusting master test case to match 1_2_X - and fixing something in the meanwhile


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/52dfedcd
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/52dfedcd
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/52dfedcd

Branch: refs/heads/master
Commit: 52dfedcdccdf1dee848bb906fa32e2bac47e07df
Parents: 5495e80
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu May 14 14:28:29 2015 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu May 14 14:28:29 2015 +0200

----------------------------------------------------------------------
 .../core/logic/AbstractSubjectLogic.java        | 40 +++++++++++++-------
 .../apache/syncope/core/logic/UserLogic.java    |  2 +-
 .../src/test/resources/content.xml              | 10 ++++-
 .../core/reference/AuthenticationITCase.java    | 22 +++++------
 .../fit/core/reference/UserWorkflowITCase.java  |  2 +-
 5 files changed, 47 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/52dfedcd/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractSubjectLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractSubjectLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractSubjectLogic.java
index 7bd099b..4dcb324 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractSubjectLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractSubjectLogic.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.logic;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.apache.commons.collections4.CollectionUtils;
@@ -32,23 +33,36 @@ import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 public abstract class AbstractSubjectLogic<T extends AbstractSubjectTO, V extends AbstractSubjectMod>
         extends AbstractResourceAssociator<T> {
 
+    private static class StartsWithPredicate implements Predicate<String> {
+
+        private final Collection<String> targets;
+
+        public StartsWithPredicate(final Collection<String> targets) {
+            this.targets = targets;
+        }
+
+        @Override
+        public boolean evaluate(final String realm) {
+            return CollectionUtils.exists(targets, new Predicate<String>() {
+
+                @Override
+                public boolean evaluate(final String target) {
+                    return realm.startsWith(target);
+                }
+            });
+        }
+
+    }
+
     protected Set<String> getEffectiveRealms(
             final Set<String> allowedRealms, final Collection<String> requestedRealms) {
 
-        Set<String> effective = RealmUtils.normalize(requestedRealms);
-        CollectionUtils.filter(effective, new Predicate<String>() {
-
-            @Override
-            public boolean evaluate(final String requestedRealm) {
-                return CollectionUtils.exists(allowedRealms, new Predicate<String>() {
+        final Set<String> allowed = RealmUtils.normalize(allowedRealms);
+        final Set<String> requested = RealmUtils.normalize(requestedRealms);
 
-                    @Override
-                    public boolean evaluate(final String allowedRealm) {
-                        return requestedRealm.startsWith(allowedRealm);
-                    }
-                });
-            }
-        });
+        Set<String> effective = new HashSet<>();
+        CollectionUtils.select(requested, new StartsWithPredicate(allowed), effective);
+        CollectionUtils.select(allowed, new StartsWithPredicate(requested), effective);
 
         return effective;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/52dfedcd/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
index fc81696..abad867 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
@@ -166,7 +166,7 @@ public class UserLogic extends AbstractSubjectLogic<UserTO, UserMod> {
     public List<UserTO> search(final SearchCond searchCondition, final int page, final int size,
             final List<OrderByClause> orderBy, final List<String> realms) {
 
-        final List<User> matchingUsers = searchDAO.search(
+        List<User> matchingUsers = searchDAO.search(
                 getEffectiveRealms(AuthContextUtils.getAuthorizations().get(Entitlement.USER_SEARCH), realms),
                 searchCondition, page, size, orderBy, SubjectType.USER);
         return CollectionUtils.collect(matchingUsers, new Transformer<User, UserTO>() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/52dfedcd/core/persistence-jpa/src/test/resources/content.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/content.xml b/core/persistence-jpa/src/test/resources/content.xml
index 7436f45..df76835 100644
--- a/core/persistence-jpa/src/test/resources/content.xml
+++ b/core/persistence-jpa/src/test/resources/content.xml
@@ -138,8 +138,13 @@ under the License.
   <SyncopeRole_entitlements entitlement="WORKFLOW_FORM_CLAIM" role_id="3"/>
   <SyncopeRole_Realm role_id="3" realm_id="2"/>
   
+  <SyncopeRole id="4" name="Search for /even/two"/>
+  <SyncopeRole_entitlements entitlement="USER_READ" role_id="4"/>
+  <SyncopeRole_entitlements entitlement="USER_SEARCH" role_id="4"/>
+  <SyncopeRole_Realm role_id="4" realm_id="4"/>
+
   <SyncopeUser id="1" workflowId="4" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
-               realm_id="1"
+               realm_id="3"
                username="rossini" creator="admin" lastModifier="admin"
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
   <SyncopeUser_SyncopeRole user_id="1" role_id="3"/>
@@ -147,7 +152,6 @@ under the License.
                realm_id="1"
                username="verdi" creator="admin" lastModifier="admin"
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
-  <SyncopeUser_SyncopeRole user_id="2" role_id="1"/>
   <SyncopeUser id="3" workflowId="8" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
                realm_id="1"
                username="vivaldi" creator="admin" lastModifier="admin"
@@ -156,11 +160,13 @@ under the License.
                realm_id="1"
                username="bellini" creator="admin" lastModifier="admin"
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
+  <SyncopeUser_SyncopeRole user_id="4" role_id="1"/>
   <SyncopeUser_SyncopeRole user_id="4" role_id="2"/>
   <SyncopeUser id="5" workflowId="12" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
                realm_id="1"
                username="puccini" creator="admin" lastModifier="admin" 
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
+  <SyncopeUser_SyncopeRole user_id="5" role_id="4"/>
   
   <SyncopeGroup id="1" name="root"
                 realm_id="1"

http://git-wip-us.apache.org/repos/asf/syncope/blob/52dfedcd/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AuthenticationITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AuthenticationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AuthenticationITCase.java
index 6306850..953d437 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AuthenticationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AuthenticationITCase.java
@@ -105,10 +105,10 @@ public class AuthenticationITCase extends AbstractITCase {
         assertEquals(ADMIN_UNAME, self.getValue().getUsername());
 
         // 4. as user
-        self = clientFactory.create("verdi", ADMIN_PWD).self();
+        self = clientFactory.create("bellini", ADMIN_PWD).self();
         assertFalse(self.getKey().isEmpty());
         assertFalse(self.getKey().keySet().contains(Entitlement.ANONYMOUS));
-        assertEquals("verdi", self.getValue().getUsername());
+        assertEquals("bellini", self.getValue().getUsername());
     }
 
     @Test
@@ -176,23 +176,21 @@ public class AuthenticationITCase extends AbstractITCase {
         UserTO readUserTO = userService2.read(1L);
         assertNotNull(readUserTO);
 
-        UserService userService3 = clientFactory.create("verdi", ADMIN_PWD).getService(UserService.class);
+        UserService userService3 = clientFactory.create("puccini", ADMIN_PWD).getService(UserService.class);
 
-        SyncopeClientException exception = null;
         try {
-            userService3.read(1L);
+            userService3.read(3L);
             fail();
         } catch (SyncopeClientException e) {
-            exception = e;
+            assertNotNull(e);
+            assertEquals(ClientExceptionType.Unauthorized, e.getType());
         }
-        assertNotNull(exception);
-        assertEquals(ClientExceptionType.Unauthorized, exception.getType());
     }
 
     @Test
     public void testUserSearch() {
         UserTO userTO = UserITCase.getUniqueSampleTO("testusersearch@test.org");
-        userTO.getRoles().add(2L);
+        userTO.getRoles().add(1L);
 
         userTO = createUser(userTO);
         assertNotNull(userTO);
@@ -214,10 +212,10 @@ public class AuthenticationITCase extends AbstractITCase {
                     }
                 }, new HashSet<Long>());
         assertTrue(matchedUserKeys.contains(1L));
-        assertTrue(matchedUserKeys.contains(2L));
-        assertTrue(matchedUserKeys.contains(5L));
+        assertFalse(matchedUserKeys.contains(2L));
+        assertFalse(matchedUserKeys.contains(5L));
 
-        UserService userService3 = clientFactory.create("verdi", "password").getService(UserService.class);
+        UserService userService3 = clientFactory.create("puccini", ADMIN_PWD).getService(UserService.class);
 
         matchedUsers = userService3.search(
                 SyncopeClient.getSubjectSearchQueryBuilder().realm("/even/two").

http://git-wip-us.apache.org/repos/asf/syncope/blob/52dfedcd/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserWorkflowITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserWorkflowITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserWorkflowITCase.java
index a99c40c..2432917 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserWorkflowITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserWorkflowITCase.java
@@ -85,7 +85,7 @@ public class UserWorkflowITCase extends AbstractITCase {
             assertEquals(ClientExceptionType.Workflow, e.getType());
         }
 
-        // 4. claim task from bellini, in group 7
+        // 4. claim task from bellini, in role 2
         UserWorkflowService userService3 = clientFactory.create(
                 "bellini", ADMIN_PWD).getService(UserWorkflowService.class);