diff --git a/pom.xml b/pom.xml index 52994f73520a7a83d4624e45696688172124bd56..0576c4018ce53b47b3f87883baf51be0ac5f4087 100644 --- a/pom.xml +++ b/pom.xml @@ -301,7 +301,7 @@ <artifactId>maven-surefire-plugin</artifactId> <version>2.8.1</version> <configuration> - <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms1024m</argLine> + <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms256m</argLine> <systemPropertyVariables> <java.io.tmpdir>${project.build.directory}/olatdata</java.io.tmpdir> </systemPropertyVariables> @@ -365,7 +365,7 @@ <artifactId>maven-surefire-plugin</artifactId> <version>2.8.1</version> <configuration> - <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms1024m</argLine> + <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms256m</argLine> <systemPropertyVariables> <java.io.tmpdir>${project.build.directory}/olatdata</java.io.tmpdir> </systemPropertyVariables> @@ -589,7 +589,7 @@ <artifactId>maven-surefire-plugin</artifactId> <version>2.8.1</version> <configuration> - <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms1024m</argLine> + <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms256m</argLine> <systemPropertyVariables> <java.io.tmpdir>${project.build.directory}/olatdata</java.io.tmpdir> </systemPropertyVariables> diff --git a/src/test/java/org/olat/basesecurity/BaseSecurityTest.java b/src/test/java/org/olat/basesecurity/BaseSecurityTest.java index 27a05019e87be79d5d1968c17ce2e00f93ffaeb9..6ba095851bab32bb3be055145ad857a89c4dbab4 100644 --- a/src/test/java/org/olat/basesecurity/BaseSecurityTest.java +++ b/src/test/java/org/olat/basesecurity/BaseSecurityTest.java @@ -61,489 +61,536 @@ public class BaseSecurityTest extends OlatTestCase { private BaseSecurity baseSecurityManager; @Test public void testSecurityGroup() { - Identity ident = getOrCreateIdentity("anIdentity"); - // check on those four default groups - SecurityGroup ng; - ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); - assertNotNull(ng); - ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS); - assertNotNull(ng); - ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS); - assertNotNull(ng); - ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS); - assertNotNull(ng); - - SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup(); - SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup(); - SecurityGroup secg3 = baseSecurityManager.createAndPersistSecurityGroup(); - assertNotNull(secg.getKey()); - - baseSecurityManager.addIdentityToSecurityGroup(ident, secg); - Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu", Encoder.encrypt("ppp")); - - // simulate some user gui clicks - DBFactory.getInstance().closeSession(); - - // groupmembership test - assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident, secg)); - assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident, secg2)); - assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg2)); - assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg)); + System.out.println("start testSecurityGroup"); + try { + Identity ident = getOrCreateIdentity("anIdentity"); + // check on those four default groups + SecurityGroup ng; + ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); + assertNotNull(ng); + ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS); + assertNotNull(ng); + ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS); + assertNotNull(ng); + ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS); + assertNotNull(ng); + + SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup(); + SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup(); + SecurityGroup secg3 = baseSecurityManager.createAndPersistSecurityGroup(); + assertNotNull(secg.getKey()); + + baseSecurityManager.addIdentityToSecurityGroup(ident, secg); + Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu", Encoder.encrypt("ppp")); + + // simulate some user gui clicks + DBFactory.getInstance().closeSession(); - baseSecurityManager.addIdentityToSecurityGroup(ident2, secg3); - assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3)); - // simulate some user gui clicks - DBFactory.getInstance().closeSession(); + // groupmembership test + assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident, secg)); + assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident, secg2)); + assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg2)); + assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg)); - baseSecurityManager.deleteSecurityGroup(secg3); + baseSecurityManager.addIdentityToSecurityGroup(ident2, secg3); + assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3)); + // simulate some user gui clicks + DBFactory.getInstance().closeSession(); - // simulate some user gui clicks - DBFactory.getInstance().closeSession(); - assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3)); + baseSecurityManager.deleteSecurityGroup(secg3); - List idents = baseSecurityManager.getIdentitiesOfSecurityGroup(secg); - assertEquals(idents.size(), 1); - baseSecurityManager.deleteSecurityGroup(secg2); - baseSecurityManager.deleteSecurityGroup(secg); + // simulate some user gui clicks + DBFactory.getInstance().closeSession(); + assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3)); + List idents = baseSecurityManager.getIdentitiesOfSecurityGroup(secg); + assertEquals(idents.size(), 1); + baseSecurityManager.deleteSecurityGroup(secg2); + baseSecurityManager.deleteSecurityGroup(secg); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } + System.out.println("stop testSecurityGroup"); } @Test public void testNamedGroups() { - SecurityGroup ng = baseSecurityManager.createAndPersistNamedSecurityGroup("abc"); - DBFactory.getInstance().closeSession(); - SecurityGroup sgFound = baseSecurityManager.findSecurityGroupByName("abc"); - assertNotNull(sgFound); - assertTrue(sgFound.getKey().equals(ng.getKey())); + System.out.println("start testNamedGroups"); + try { + SecurityGroup ng = baseSecurityManager.createAndPersistNamedSecurityGroup("abc"); + DBFactory.getInstance().closeSession(); + SecurityGroup sgFound = baseSecurityManager.findSecurityGroupByName("abc"); + assertNotNull(sgFound); + assertTrue(sgFound.getKey().equals(ng.getKey())); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } + System.out.println("stop testNamedGroups"); } @Test public void testPolicy() { - Identity ident = getOrCreateIdentity("anIdentity"); - Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus2", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu2", Encoder.encrypt("ppp")); - - SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup(); - SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup(); + System.out.println("start testPolicy"); + try { + Identity ident = getOrCreateIdentity("anIdentity"); + Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus2", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu2", Encoder.encrypt("ppp")); + + SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup(); + SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup(); + + baseSecurityManager.addIdentityToSecurityGroup(ident, secg); + // resourceable type + OLATResourceable or1 = OresHelper.createOLATResourceableInstance("Forum", new Long("111")); + // simulate some user gui clicks + DBFactory.getInstance().closeSession(); - baseSecurityManager.addIdentityToSecurityGroup(ident, secg); - // resourceable type - OLATResourceable or1 = OresHelper.createOLATResourceableInstance("Forum", new Long("111")); - // simulate some user gui clicks - DBFactory.getInstance().closeSession(); + + // resourceable (type and key) + OLATResourceable or2 = OresHelper.createOLATResourceableInstance("Forum", new Long("123")); + + baseSecurityManager.createAndPersistPolicy(secg2, Constants.PERMISSION_ACCESS, or1); + Policy policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or2); // instance + // resource + assertNotNull(policy); + assertNotNull(policy.getSecurityGroup()); + assertNotNull(policy.getSecurityGroup().getKey()); + assertTrue(policy.getSecurityGroup().getKey().equals(secg.getKey())); + + policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or1); // type resource + assertNotNull(policy); + + //assert we have instance access if we own the type policy + assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2)); + + assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or1)); + assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "write", or1)); + assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident2, "read", or1)); + assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2)); + assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "blub", or2)); - - // resourceable (type and key) - OLATResourceable or2 = OresHelper.createOLATResourceableInstance("Forum", new Long("123")); - - baseSecurityManager.createAndPersistPolicy(secg2, Constants.PERMISSION_ACCESS, or1); - Policy policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or2); // instance - // resource - assertNotNull(policy); - assertNotNull(policy.getSecurityGroup()); - assertNotNull(policy.getSecurityGroup().getKey()); - assertTrue(policy.getSecurityGroup().getKey().equals(secg.getKey())); - - policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or1); // type resource - assertNotNull(policy); - - //assert we have instance access if we own the type policy - assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2)); - - assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or1)); - assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "write", or1)); - assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident2, "read", or1)); - assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2)); - assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "blub", or2)); - - DBFactory.getInstance().closeSession(); - - // test on deleting a securitygroup that is still referenced by a policy - // (referential integrity) - boolean r = true; - try { - baseSecurityManager.deleteSecurityGroup(secg); DBFactory.getInstance().closeSession(); - } catch (Exception e) { - if (((DBRuntimeException) e).getCause() instanceof PropertyValueException) { - r = true; + + // test on deleting a securitygroup that is still referenced by a policy + // (referential integrity) + boolean r = true; + try { + baseSecurityManager.deleteSecurityGroup(secg); + DBFactory.getInstance().closeSession(); + } catch (Exception e) { + if (((DBRuntimeException) e).getCause() instanceof PropertyValueException) { + r = true; + } } + DBFactory.getInstance().closeSession(); + assertTrue(r); + } catch (NumberFormatException e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); } - DBFactory.getInstance().closeSession(); - assertTrue(r); + System.out.println("stop testPolicy"); } @Test public void testGetIdentitiesByPowerSearch() { - Identity ident = getOrCreateIdentity("anIdentity"); - Identity ident2 = getOrCreateTestIdentity("extremegroovy"); - Identity deletedIdent = getOrCreateTestIdentity("delete"); - baseSecurityManager.saveIdentityStatus(deletedIdent, Identity.STATUS_DELETED); - - SecurityGroup admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); - baseSecurityManager.addIdentityToSecurityGroup(deletedIdent, admins); - - - // basic query to find all system users without restrictions - List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); - assertTrue(results.size()>0); - int numberOfAllUsers = results.size(); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null,Identity.STATUS_ACTIV); - assertTrue(results.size()>0); - int numberOfActiveUsers = results.size(); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED); - assertTrue(results.size() >0); - int numberOfDeletedUsers = results.size(); - assertEquals("Number of all users != activeUsers + deletedUsers" , numberOfAllUsers, numberOfActiveUsers + numberOfDeletedUsers); - - // user attributes search test - DBFactory.getInstance().closeSession(); - results = baseSecurityManager.getIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName()); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null); - assertTrue(results.size() == 1); - assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName()); - - results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null); - assertTrue(results.size() == 1); - - results = baseSecurityManager.getIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null); - assertTrue(results.size() == 0); - - Map<String, String> userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.INSTITUTIONALNAME, "*zh2"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - sysoutResults(results); - assertEquals("Wrong search result 'UserConstants.INSTITUTIONALNAME='*zh2'", 2, results.size()); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); - assertTrue(results.size() == 1); - assertEquals("Wrong search result for visible 'UserConstants.INSTITUTIONALNAME='*zh2'", 1, results.size()); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); - userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "678"); // per default the % is only attached at the end of the query. - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); - assertTrue(results.size() == 0); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); - userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "%678"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 2); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); - userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "12-345-678"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 2); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); - userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "888"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); - assertTrue(results.size() == 0); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 2); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); - assertTrue(results.size() == 1); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV); - assertTrue(results.size() == 1); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV); - assertTrue(results.size() == 1); + System.out.println("start testGetIdentitiesByPowerSearch"); + try { + Identity ident = getOrCreateIdentity("anIdentity"); + Identity ident2 = getOrCreateTestIdentity("extremegroovy"); + Identity deletedIdent = getOrCreateTestIdentity("delete"); + baseSecurityManager.saveIdentityStatus(deletedIdent, Identity.STATUS_DELETED); + + SecurityGroup admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); + baseSecurityManager.addIdentityToSecurityGroup(deletedIdent, admins); + + + // basic query to find all system users without restrictions + List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); + assertTrue(results.size()>0); + int numberOfAllUsers = results.size(); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null,Identity.STATUS_ACTIV); + assertTrue(results.size()>0); + int numberOfActiveUsers = results.size(); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED); + assertTrue(results.size() >0); + int numberOfDeletedUsers = results.size(); + assertEquals("Number of all users != activeUsers + deletedUsers" , numberOfAllUsers, numberOfActiveUsers + numberOfDeletedUsers); + + // user attributes search test + DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName()); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null); + assertTrue(results.size() == 1); + assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName()); + + results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null); + assertTrue(results.size() == 1); + + results = baseSecurityManager.getIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null); + assertTrue(results.size() == 0); + + Map<String, String> userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.INSTITUTIONALNAME, "*zh2"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + sysoutResults(results); + assertEquals("Wrong search result 'UserConstants.INSTITUTIONALNAME='*zh2'", 2, results.size()); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); + assertTrue(results.size() == 1); + assertEquals("Wrong search result for visible 'UserConstants.INSTITUTIONALNAME='*zh2'", 1, results.size()); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); + userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "678"); // per default the % is only attached at the end of the query. + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); + assertTrue(results.size() == 0); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); + userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "%678"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 2); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); + userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "12-345-678"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 2); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); + userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "888"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); + assertTrue(results.size() == 0); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.INSTITUTIONALNAME, "un"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 2); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null); + assertTrue(results.size() == 1); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV); + assertTrue(results.size() == 1); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV); + assertTrue(results.size() == 1); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } + System.out.println("stop testGetIdentitiesByPowerSearch"); } @Test public void testGetIdentitiesByPowerSearchWithGroups() { - Identity ident = getOrCreateIdentity("anIdentity"); - Identity ident2 = getOrCreateTestIdentity("extremegroovy"); + System.out.println("start testGetIdentitiesByPowerSearchWithGroups"); + try { + Identity ident = getOrCreateIdentity("anIdentity"); + Identity ident2 = getOrCreateTestIdentity("extremegroovy"); + + // add some stats + baseSecurityManager.saveIdentityStatus(ident, Identity.STATUS_ACTIV); + baseSecurityManager.saveIdentityStatus(ident2, Identity.STATUS_ACTIV); + + // check on those four default groups + SecurityGroup admins, authors, anonymous; + admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); + anonymous = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS); + authors = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS); + // test setup: identity is admin and author + baseSecurityManager.addIdentityToSecurityGroup(ident, admins); + baseSecurityManager.addIdentityToSecurityGroup(ident2, admins); + baseSecurityManager.addIdentityToSecurityGroup(ident, authors); + + // security group search test + DBFactory.getInstance().closeSession(); + SecurityGroup[] groups1 = {admins}; + SecurityGroup[] groups2 = {admins, authors}; + SecurityGroup[] groups3 = {authors}; + SecurityGroup[] groupsInvalid = {anonymous}; + + // basic query to find all system users without restrictions + List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); + assertTrue(results.size()>0); + int numberOfAllUsers = results.size(); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED); + assertTrue(results.size() >0); + int numberOfDeletedUsers = results.size(); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null, null, null, null); + assertTrue(results.size() >0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null); + assertTrue(results.size() >0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null, null, null, null); + assertTrue(results.size() >0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null); + assertTrue(results.size() >0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null, null, null, null); + assertTrue(results.size() >0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null); + assertTrue(results.size() >0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null); + assertTrue(results.size() == 1); + + results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null); + assertTrue(results.size() == 1); + + // policy search test + DBFactory.getInstance().closeSession(); + List policies = baseSecurityManager.getPoliciesOfSecurityGroup(admins); + PermissionOnResourceable[] adminPermissions = convertPoliciesListToPermissionOnResourceArray(policies); + policies = baseSecurityManager.getPoliciesOfSecurityGroup(anonymous); + PermissionOnResourceable[] anonymousPermissions = convertPoliciesListToPermissionOnResourceArray(policies); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null, null, null, null); + assertTrue(results.size() >0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null); + assertTrue(results.size() >0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null, null, null, null); + assertTrue(results.size() >0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null); + assertTrue(results.size() >0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null, null, null, null); + assertTrue("Found no identities for group 'authors'",results.size() >0); + boolean isAuthor = true; + checkIdentitiesHasRoles(results, isAuthor); + + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null); + assertTrue("Found no identities for group 'authors'",results.size() >0); + checkIdentitiesHasRoles(results, isAuthor); + + results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null, null, null, null); + assertTrue(results.size() == 1); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null); + assertTrue(results.size() == 1); + + results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null); + assertTrue(results.size() == 0); + + // authentication provider search + String[] authProviders = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib"}; + String[] authProvidersInvalid = {"nonexist"};// max length 8 ! + String[] authProviderNone = { null }; + String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null }; + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null, null, null, null); + assertTrue(results.size() >0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null); + assertTrue(results.size() >0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null); + assertTrue(results.size() == 1); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null); + assertTrue(results.size() == 1); + + results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null); + assertTrue(results.size() == 0); + + Authentication auth = baseSecurityManager.findAuthentication(ident, BaseSecurityModule.getDefaultAuthProviderIdentifier()); + baseSecurityManager.deleteAuthentication(auth); + DBFactory.getInstance().closeSession(); - // add some stats - baseSecurityManager.saveIdentityStatus(ident, Identity.STATUS_ACTIV); - baseSecurityManager.saveIdentityStatus(ident2, Identity.STATUS_ACTIV); - - // check on those four default groups - SecurityGroup admins, authors, anonymous; - admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); - anonymous = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS); - authors = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS); - // test setup: identity is admin and author - baseSecurityManager.addIdentityToSecurityGroup(ident, admins); - baseSecurityManager.addIdentityToSecurityGroup(ident2, admins); - baseSecurityManager.addIdentityToSecurityGroup(ident, authors); - - // security group search test - DBFactory.getInstance().closeSession(); - SecurityGroup[] groups1 = {admins}; - SecurityGroup[] groups2 = {admins, authors}; - SecurityGroup[] groups3 = {authors}; - SecurityGroup[] groupsInvalid = {anonymous}; - - // basic query to find all system users without restrictions - List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); - assertTrue(results.size()>0); - int numberOfAllUsers = results.size(); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED); - assertTrue(results.size() >0); - int numberOfDeletedUsers = results.size(); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null, null, null, null); - assertTrue(results.size() >0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null); - assertTrue(results.size() >0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null, null, null, null); - assertTrue(results.size() >0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null); - assertTrue(results.size() >0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null, null, null, null); - assertTrue(results.size() >0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null); - assertTrue(results.size() >0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null); - assertTrue(results.size() == 1); - - results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null); - assertTrue(results.size() == 1); - - // policy search test - DBFactory.getInstance().closeSession(); - List policies = baseSecurityManager.getPoliciesOfSecurityGroup(admins); - PermissionOnResourceable[] adminPermissions = convertPoliciesListToPermissionOnResourceArray(policies); - policies = baseSecurityManager.getPoliciesOfSecurityGroup(anonymous); - PermissionOnResourceable[] anonymousPermissions = convertPoliciesListToPermissionOnResourceArray(policies); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null, null, null, null); - assertTrue(results.size() >0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null); - assertTrue(results.size() >0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null, null, null, null); - assertTrue(results.size() >0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null); - assertTrue(results.size() >0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null, null, null, null); - assertTrue("Found no identities for group 'authors'",results.size() >0); - boolean isAuthor = true; - checkIdentitiesHasRoles(results, isAuthor); - - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null); - assertTrue("Found no identities for group 'authors'",results.size() >0); - checkIdentitiesHasRoles(results, isAuthor); - - results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null, null, null, null); - assertTrue(results.size() == 1); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null); - assertTrue(results.size() == 1); - - results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null); - assertTrue(results.size() == 0); - - // authentication provider search - String[] authProviders = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib"}; - String[] authProvidersInvalid = {"nonexist"};// max length 8 ! - String[] authProviderNone = { null }; - String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null }; - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null, null, null, null); - assertTrue(results.size() >0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null); - assertTrue(results.size() >0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null); - assertTrue(results.size() == 1); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null); - assertTrue(results.size() == 1); - - results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null); - assertTrue(results.size() == 0); - - Authentication auth = baseSecurityManager.findAuthentication(ident, BaseSecurityModule.getDefaultAuthProviderIdentifier()); - baseSecurityManager.deleteAuthentication(auth); - DBFactory.getInstance().closeSession(); - - // ultimate tests - //Identity ident = getOrCreateIdentity("anIdentity"); - Date created = ident.getCreationDate(); - Calendar cal = Calendar.getInstance(); - cal.setTime(created); - cal.add(Calendar.DAY_OF_MONTH, -5); - Date before = cal.getTime(); - - DBFactory.getInstance().closeSession(); - results = baseSecurityManager.getIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null, null, null, null); - assertTrue(results.size() == 1); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null); - assertTrue(results.size() == 1); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null, null, null, null); - assertTrue("Found no results", results.size() > 0); - checkIdentitiesAreInGroups(results, groups1); - checkIdentitiesHasAuthProvider(results,authProviders ); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null); - assertTrue("Found no results", results.size() > 0); - checkIdentitiesAreInGroups(results, groups1); - checkIdentitiesHasAuthProvider(results,authProviders ); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null, null, null, null); - assertTrue("Found no results", results.size() > 0); - checkIdentitiesAreInGroups(results, groups1); - checkIdentitiesHasPermissions(results, adminPermissions); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null); - assertTrue("Found no results", results.size() > 0); - checkIdentitiesAreInGroups(results, groups1); - checkIdentitiesHasPermissions(results, adminPermissions); - - results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null, null, null, null); - assertTrue(results.size() == 2); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null); - assertTrue(results.size() == 2); - - results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null, null, null, null); - sysoutResults(results); - assertTrue("Found no results", results.size() > 0); - checkIdentitiesAreInGroups(results, groups1); - checkIdentitiesHasPermissions(results, adminPermissions); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null); - assertTrue("Found no results", results.size() > 0); - checkIdentitiesAreInGroups(results, groups1); - checkIdentitiesHasPermissions(results, adminPermissions); - - System.out.println("Tschagaaa, good job!"); - DBFactory.getInstance().closeSession(); + // ultimate tests + //Identity ident = getOrCreateIdentity("anIdentity"); + Date created = ident.getCreationDate(); + Calendar cal = Calendar.getInstance(); + cal.setTime(created); + cal.add(Calendar.DAY_OF_MONTH, -5); + Date before = cal.getTime(); + + DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null, null, null, null); + assertTrue(results.size() == 1); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null); + assertTrue(results.size() == 1); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null, null, null, null); + assertTrue("Found no results", results.size() > 0); + checkIdentitiesAreInGroups(results, groups1); + checkIdentitiesHasAuthProvider(results,authProviders ); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null); + assertTrue("Found no results", results.size() > 0); + checkIdentitiesAreInGroups(results, groups1); + checkIdentitiesHasAuthProvider(results,authProviders ); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null, null, null, null); + assertTrue("Found no results", results.size() > 0); + checkIdentitiesAreInGroups(results, groups1); + checkIdentitiesHasPermissions(results, adminPermissions); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null); + assertTrue("Found no results", results.size() > 0); + checkIdentitiesAreInGroups(results, groups1); + checkIdentitiesHasPermissions(results, adminPermissions); + + results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null, null, null, null); + assertTrue(results.size() == 2); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null); + assertTrue(results.size() == 2); + + results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null, null, null, null); + sysoutResults(results); + assertTrue("Found no results", results.size() > 0); + checkIdentitiesAreInGroups(results, groups1); + checkIdentitiesHasPermissions(results, adminPermissions); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null); + assertTrue("Found no results", results.size() > 0); + checkIdentitiesAreInGroups(results, groups1); + checkIdentitiesHasPermissions(results, adminPermissions); + + System.out.println("Tschagaaa, good job!"); + DBFactory.getInstance().closeSession(); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } + System.out.println("stop testGetIdentitiesByPowerSearchWithGroups"); } @Test public void testGetIdentitiesByPowerSearchAuthProvider(){ - - //authentication provider search - String[] authProviderNone = { null }; - String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null }; - - //check count before adding - List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); - int prevProviderNoneCount = results.size(); - //add two new users with authProviderNone - getOrCreateTestIdentityWithAuth("authNoneOne", null); - getOrCreateTestIdentityWithAuth("authNoneTwo", null); - DBFactory.getInstance().closeSession(); - // special case: no auth provider - // test if 2 new users are found. - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); - assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2); - - - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); - prevProviderNoneCount = results.size(); - getOrCreateTestIdentityWithAuth("authNoneThree", null); - getOrCreateTestIdentityWithAuth("authNoneFour", null); - DBFactory.getInstance().closeSession(); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); - assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2 ); - - - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); - prevProviderNoneCount = results.size(); - getOrCreateTestIdentityWithAuth("authNoneFive", null); - getOrCreateTestIdentityWithAuth("authNoneSix", null); - DBFactory.getInstance().closeSession(); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); - assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2 ); - - - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); - prevProviderNoneCount = results.size(); - getOrCreateTestIdentityWithAuth("authNoneSeven", null); - getOrCreateTestIdentityWithAuth("authNoneEight", null); - DBFactory.getInstance().closeSession(); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); - assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2); - - - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null); - prevProviderNoneCount = results.size(); - //add a new identity per entry of AuthProvidersAll - getOrCreateTestIdentityWithAuth("authTwelve", "Shib"); - getOrCreateTestIdentityWithAuth("authThirteen", BaseSecurityModule.getDefaultAuthProviderIdentifier()); - getOrCreateTestIdentityWithAuth("authForteen", null); - DBFactory.getInstance().closeSession(); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null); - assertTrue(results.size() - prevProviderNoneCount == 3); - - - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null); - prevProviderNoneCount = results.size(); - //add a new identity per entry of AuthProvidersAll - getOrCreateTestIdentityWithAuth("authSixteen", "Shib"); - getOrCreateTestIdentityWithAuth("authSeventeen", BaseSecurityModule.getDefaultAuthProviderIdentifier()); - getOrCreateTestIdentityWithAuth("authEighteen", null); - DBFactory.getInstance().closeSession(); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null); - assertTrue(results.size() - prevProviderNoneCount == 3); + System.out.println("start testGetIdentitiesByPowerSearchAuthProvider"); + try { + //authentication provider search + String[] authProviderNone = { null }; + String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null }; + + //check count before adding + List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); + int prevProviderNoneCount = results.size(); + //add two new users with authProviderNone + getOrCreateTestIdentityWithAuth("authNoneOne", null); + getOrCreateTestIdentityWithAuth("authNoneTwo", null); + DBFactory.getInstance().closeSession(); + // special case: no auth provider + // test if 2 new users are found. + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); + assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2); + + + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); + prevProviderNoneCount = results.size(); + getOrCreateTestIdentityWithAuth("authNoneThree", null); + getOrCreateTestIdentityWithAuth("authNoneFour", null); + DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); + assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2 ); + + + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); + prevProviderNoneCount = results.size(); + getOrCreateTestIdentityWithAuth("authNoneFive", null); + getOrCreateTestIdentityWithAuth("authNoneSix", null); + DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null); + assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2 ); + + + + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); + prevProviderNoneCount = results.size(); + getOrCreateTestIdentityWithAuth("authNoneSeven", null); + getOrCreateTestIdentityWithAuth("authNoneEight", null); + DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null); + assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2); + + + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null); + prevProviderNoneCount = results.size(); + //add a new identity per entry of AuthProvidersAll + getOrCreateTestIdentityWithAuth("authTwelve", "Shib"); + getOrCreateTestIdentityWithAuth("authThirteen", BaseSecurityModule.getDefaultAuthProviderIdentifier()); + getOrCreateTestIdentityWithAuth("authForteen", null); + DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null); + assertTrue(results.size() - prevProviderNoneCount == 3); + + + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null); + prevProviderNoneCount = results.size(); +//add a new identity per entry of AuthProvidersAll + getOrCreateTestIdentityWithAuth("authSixteen", "Shib"); + getOrCreateTestIdentityWithAuth("authSeventeen", BaseSecurityModule.getDefaultAuthProviderIdentifier()); + getOrCreateTestIdentityWithAuth("authEighteen", null); + DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null); + assertTrue(results.size() - prevProviderNoneCount == 3); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } + System.out.println("stop testGetIdentitiesByPowerSearchAuthProvider"); @@ -557,151 +604,162 @@ public class BaseSecurityTest extends OlatTestCase { // Our implementation of powersearch convert search-properties to lowercase ! @Test public void testGetIdentitiesByPowerSearchWithUserPropertiesAndIntersectionOption() { // create two test users - User onePropUser = UserManager.getInstance().createUser("onepropuser", "onepropuser", "onepropuser@lustig.com"); - onePropUser.setProperty(UserConstants.FIRSTNAME, "one"); - Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("onePropUser", onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "onepropuser", Encoder.encrypt("ppp")); - - User twoPropUser = UserManager.getInstance().createUser("twopropuser", "twopropuser", "twopropuser@lustig.com"); - twoPropUser.setProperty(UserConstants.FIRSTNAME, "two"); - twoPropUser.setProperty(UserConstants.LASTNAME, "prop"); - Identity twoPropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("twopropuser", twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "twopropuser", Encoder.encrypt("ppp")); - // commit - DBFactory.getInstance().closeSession(); + System.out.println("start testGetIdentitiesByPowerSearchWithUserPropertiesAndIntersectionOption"); + try { + User onePropUser = UserManager.getInstance().createUser("onepropuser", "onepropuser", "onepropuser@lustig.com"); + onePropUser.setProperty(UserConstants.FIRSTNAME, "one"); + Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("onePropUser", onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "onepropuser", Encoder.encrypt("ppp")); + + User twoPropUser = UserManager.getInstance().createUser("twopropuser", "twopropuser", "twopropuser@lustig.com"); + twoPropUser.setProperty(UserConstants.FIRSTNAME, "two"); + twoPropUser.setProperty(UserConstants.LASTNAME, "prop"); + + Identity twoPropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("twopropuser", twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "twopropuser", Encoder.encrypt("ppp")); + // commit + DBFactory.getInstance().closeSession(); - HashMap<String, String> userProperties; - List results; - - // find first - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "one"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - // no intersection - all properties optional - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "one"); - userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 0); - - // no intersection - all properties optional - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "one"); - userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - // find second - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "two"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "two"); - userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 0); - - // no intersection - all properties optional - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "two"); - userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "two"); - userProperties.put(UserConstants.LASTNAME, "prop"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - // find all - // 1. basic query to find all system users without restrictions - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); - assertTrue(results.size()>0); - int numberOfAllUsers = results.size(); - - userProperties = new HashMap<String, String>(); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertEquals("Wrong search result 'empty userProperties'", numberOfAllUsers, results.size()); - - userProperties = new HashMap<String, String>(); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); - assertEquals("Wrong search result 'empty userProperties and intersection=false'", numberOfAllUsers, results.size()); + HashMap<String, String> userProperties; + List results; + + // find first + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "one"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + // no intersection - all properties optional + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "one"); + userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 0); + + // no intersection - all properties optional + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "one"); + userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + // find second + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "two"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "two"); + userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 0); + + // no intersection - all properties optional + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "two"); + userProperties.put(UserConstants.LASTNAME, "somewrongvalue"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "two"); + userProperties.put(UserConstants.LASTNAME, "prop"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + // find all + // 1. basic query to find all system users without restrictions + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); + assertTrue(results.size()>0); + int numberOfAllUsers = results.size(); + + userProperties = new HashMap<String, String>(); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertEquals("Wrong search result 'empty userProperties'", numberOfAllUsers, results.size()); + + userProperties = new HashMap<String, String>(); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); + assertEquals("Wrong search result 'empty userProperties and intersection=false'", numberOfAllUsers, results.size()); - DBFactory.getInstance().closeSession(); + DBFactory.getInstance().closeSession(); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } + System.out.println("stop testGetIdentitiesByPowerSearchWithUserPropertiesAndIntersectionOption"); } @Test public void testMultipleUserPropertiesSearches() { + System.out.println("start testMultipleUserPropertiesSearches"); // create two test users - User multiPropUser = UserManager.getInstance().createUser("multipropuser", "multipropuser", "multipropuser@lustig.com"); - multiPropUser.setProperty(UserConstants.FIRSTNAME, "multi"); - multiPropUser.setProperty(UserConstants.LASTNAME, "prop"); - multiPropUser.setProperty(UserConstants.INSTITUTIONALNAME, "multiinst"); - multiPropUser.setProperty(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com"); - multiPropUser.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst"); - multiPropUser.setProperty(UserConstants.CITY, "züri"); - Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("multiPropUser", multiPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "multipropuser", Encoder.encrypt("ppp")); - - // commit - DBFactory.getInstance().closeSession(); - - HashMap<String, String> userProperties; - List results; - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "multi"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - sysoutResults(results); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "multi"); - userProperties.put(UserConstants.LASTNAME, "prop"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "multi"); - userProperties.put(UserConstants.LASTNAME, "prop"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 2); // multipropuser and twopropuser - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "multi"); - userProperties.put(UserConstants.LASTNAME, "prop"); - userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "multi"); - userProperties.put(UserConstants.LASTNAME, "prop"); - userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst"); - userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "multi"); - userProperties.put(UserConstants.LASTNAME, "prop"); - userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst"); - userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com"); - userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst"); - userProperties.put(UserConstants.CITY, "züri"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 1); - - // Test to reproduce for OLAT-2820: - // multipropuser matches firstname, lastname and city - // twopropuser matches lastname and has a firstname but not city - // Since it intersection flag is set to false it must find both users! - userProperties = new HashMap<String, String>(); - userProperties.put(UserConstants.FIRSTNAME, "multi"); - userProperties.put(UserConstants.LASTNAME, "prop"); + try { + User multiPropUser = UserManager.getInstance().createUser("multipropuser", "multipropuser", "multipropuser@lustig.com"); + multiPropUser.setProperty(UserConstants.FIRSTNAME, "multi"); + multiPropUser.setProperty(UserConstants.LASTNAME, "prop"); + multiPropUser.setProperty(UserConstants.INSTITUTIONALNAME, "multiinst"); + multiPropUser.setProperty(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com"); + multiPropUser.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst"); + multiPropUser.setProperty(UserConstants.CITY, "züri"); + Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("multiPropUser", multiPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "multipropuser", Encoder.encrypt("ppp")); + + // commit + DBFactory.getInstance().closeSession(); + + HashMap<String, String> userProperties; + List results; + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "multi"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + sysoutResults(results); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "multi"); + userProperties.put(UserConstants.LASTNAME, "prop"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "multi"); + userProperties.put(UserConstants.LASTNAME, "prop"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 2); // multipropuser and twopropuser + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "multi"); + userProperties.put(UserConstants.LASTNAME, "prop"); + userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "multi"); + userProperties.put(UserConstants.LASTNAME, "prop"); + userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst"); + userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "multi"); + userProperties.put(UserConstants.LASTNAME, "prop"); + userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst"); + userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com"); + userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst"); + userProperties.put(UserConstants.CITY, "züri"); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 1); + + // Test to reproduce for OLAT-2820: + // multipropuser matches firstname, lastname and city + // twopropuser matches lastname and has a firstname but not city + // Since it intersection flag is set to false it must find both users! + userProperties = new HashMap<String, String>(); + userProperties.put(UserConstants.FIRSTNAME, "multi"); + userProperties.put(UserConstants.LASTNAME, "prop"); // TODO: fg,cg: Did not found results with empty user-properties // twopro has same lastname but different firstname => will be found with userPropertiesInterseactionSearch = true // twopro has no other user-properties, with current solution no OR-search runs correct with empty user-properties like twopro user has. @@ -710,72 +768,91 @@ public class BaseSecurityTest extends OlatTestCase { // userProperties.put(UserConstants.INSTITUTIONALEMAIL, "MultiInst@lustig.com"); // userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "MultiInst"); // userProperties.put(UserConstants.CITY, "Züri"); - results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); - assertTrue(results.size() == 2); // multipropuser and twopropuser - DBFactory.getInstance().closeSession(); + results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null); + assertTrue(results.size() == 2); // multipropuser and twopropuser + DBFactory.getInstance().closeSession(); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } + + System.out.println("stop testMultipleUserPropertiesSearches"); } @Test public void testGetIdentitiesByPowerSearchWithDate() { - Identity ident = getOrCreateIdentity("anIdentity"); - Date created = ident.getCreationDate(); - Calendar cal = Calendar.getInstance(); - cal.setTime(created); - cal.add(Calendar.DAY_OF_MONTH, -5); - Date before = cal.getTime(); - cal.add(Calendar.DAY_OF_MONTH, 10); - Date after = cal.getTime(); - - // basic query to find all system users without restrictions - List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); - assertTrue(results.size()>0); - int numberOfAllUsers = results.size(); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED); - assertTrue(results.size() >0); - int numberOfDeletedUsers = results.size(); - - Date createdAfter = before; - Date createdBefore = after; - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, createdAfter, createdBefore, null, null, null); - assertEquals("Search with date (createdAfter,createdBefore) delivers not the same number of users", numberOfAllUsers, results.size()); - - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, after); - assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, after, null, null, null); - assertEquals("Search with date (only after) delivers not the same number of users", numberOfAllUsers, results.size()); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, after); - assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, before, null, null, null, null); - assertEquals("Search with date (only before) delivers not the same number of users", numberOfAllUsers, results.size()); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, null); - assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, before, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, before); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, null, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, null); - assertTrue(results.size() == 0); - - results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, before, null, null, null); - assertTrue(results.size() == 0); - results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, before); - assertTrue(results.size() == 0); + System.out.println("start testGetIdentitiesByPowerSearchWithDate"); + try { + Identity ident = getOrCreateIdentity("anIdentity"); + Date created = ident.getCreationDate(); + Calendar cal = Calendar.getInstance(); + cal.setTime(created); + cal.add(Calendar.DAY_OF_MONTH, -5); + Date before = cal.getTime(); + cal.add(Calendar.DAY_OF_MONTH, 10); + Date after = cal.getTime(); + + // basic query to find all system users without restrictions + List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null); + assertTrue(results.size()>0); + int numberOfAllUsers = results.size(); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED); + assertTrue(results.size() >0); + int numberOfDeletedUsers = results.size(); + + Date createdAfter = before; + Date createdBefore = after; + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, createdAfter, createdBefore, null, null, null); + assertEquals("Search with date (createdAfter,createdBefore) delivers not the same number of users", numberOfAllUsers, results.size()); + + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, after); + assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, after, null, null, null); + assertEquals("Search with date (only after) delivers not the same number of users", numberOfAllUsers, results.size()); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, after); + assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, before, null, null, null, null); + assertEquals("Search with date (only before) delivers not the same number of users", numberOfAllUsers, results.size()); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, null); + assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, before, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, before); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, null, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, null); + assertTrue(results.size() == 0); + + results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, before, null, null, null); + assertTrue(results.size() == 0); + results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, before); + assertTrue(results.size() == 0); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } - System.out.println("Tschagaaa, good job! 2"); - + System.out.println("end testGetIdentitiesByPowerSearchWithDate"); } @After public void tearDown() throws Exception { - DBFactory.getInstance().closeSession(); + try { + DBFactory.getInstance().closeSession(); + } catch (Exception e) { + e.printStackTrace(); + } catch (Error err) { + err.printStackTrace(); + } } ////////////////////