Skip to content
Snippets Groups Projects
Commit 4994c406 authored by srosse's avatar srosse
Browse files

OO-1000: fix clean up method of invitations and add a unit test

parent 1a47c256
No related branches found
No related tags found
No related merge requests found
...@@ -34,7 +34,6 @@ import org.olat.basesecurity.Group; ...@@ -34,7 +34,6 @@ import org.olat.basesecurity.Group;
import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.GroupRoles;
import org.olat.basesecurity.IdentityRef; import org.olat.basesecurity.IdentityRef;
import org.olat.basesecurity.Invitation; import org.olat.basesecurity.Invitation;
import org.olat.basesecurity.PolicyImpl;
import org.olat.basesecurity.SecurityGroup; import org.olat.basesecurity.SecurityGroup;
import org.olat.basesecurity.manager.GroupDAO; import org.olat.basesecurity.manager.GroupDAO;
import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.DB;
...@@ -201,14 +200,15 @@ public class InvitationDAO { ...@@ -201,14 +200,15 @@ public class InvitationDAO {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("select invitation from ").append(InvitationImpl.class.getName()).append(" as invitation ") sb.append("select invitation from ").append(InvitationImpl.class.getName()).append(" as invitation ")
.append(" inner join invitation.securityGroup secGroup ") .append(" inner join invitation.baseGroup baseGroup ")
.append(" where invitation.creationDate<:dateLimit")//someone can create an invitation but not add it to a policy within millisecond .append(" where invitation.creationDate<:dateLimit")//someone can create an invitation but not add it to a policy within millisecond
.append(" and secGroup not in (") .append(" and not exists (")
//select all valid policies from this security group //select all valid policies from this security group
.append(" select policy.securityGroup from ").append(PolicyImpl.class.getName()).append(" as policy ") .append(" select policy.group from structuretogroup as policy ")
.append(" where (policy.from is null or policy.from<=:currentDate)") .append(" where policy.group=baseGroup ")
.append(" and (policy.to is null or policy.to>=:currentDate)") .append(" and (policy.validFrom is null or policy.validFrom<=:currentDate)")
.append(" )"); .append(" and (policy.validTo is null or policy.validTo>=:currentDate)")
.append(" )");
List<Invitation> oldInvitations = dbInstance.getCurrentEntityManager() List<Invitation> oldInvitations = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Invitation.class) .createQuery(sb.toString(), Invitation.class)
......
...@@ -112,9 +112,4 @@ public class EPPolicyManagerTest extends OlatTestCase { ...@@ -112,9 +112,4 @@ public class EPPolicyManagerTest extends OlatTestCase {
boolean visible = epFrontendManager.isMapVisible(invitee, map.getOlatResource()); boolean visible = epFrontendManager.isMapVisible(invitee, map.getOlatResource());
Assert.assertTrue(visible); Assert.assertTrue(visible);
} }
}
\ No newline at end of file
}
...@@ -19,13 +19,18 @@ ...@@ -19,13 +19,18 @@
*/ */
package org.olat.portfolio.manager; package org.olat.portfolio.manager;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.Locale;
import java.util.UUID; import java.util.UUID;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.olat.basesecurity.Invitation; import org.olat.basesecurity.Invitation;
import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.DB;
import org.olat.core.id.Identity;
import org.olat.portfolio.model.structel.PortfolioStructureMap;
import org.olat.test.JunitTestHelper;
import org.olat.test.OlatTestCase; import org.olat.test.OlatTestCase;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -43,6 +48,8 @@ public class InvitationDAOTest extends OlatTestCase { ...@@ -43,6 +48,8 @@ public class InvitationDAOTest extends OlatTestCase {
private InvitationDAO invitationDao; private InvitationDAO invitationDao;
@Autowired @Autowired
private EPPolicyManager policyManager; private EPPolicyManager policyManager;
@Autowired
private EPFrontendManager epFrontendManager;
@Test @Test
...@@ -100,6 +107,41 @@ public class InvitationDAOTest extends OlatTestCase { ...@@ -100,6 +107,41 @@ public class InvitationDAOTest extends OlatTestCase {
Assert.assertEquals("kanu.unchou@frentix.com", reloadedInvitation.getMail()); Assert.assertEquals("kanu.unchou@frentix.com", reloadedInvitation.getMail());
} }
/**
* Check the HQL code of the the method, and that it doesn't delete to much invitations
*/
@Test
public void cleanUpInvitation() {
Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("Policy-User-2-");
PortfolioStructureMap map = epFrontendManager.createAndPersistPortfolioDefaultMap(user, "Title", "Description");
Invitation invitation = invitationDao.createAndPersistInvitation();
dbInstance.commit();
invitation.setFirstName("John");
invitation.setLastName("Smith Portfolio");
EPMapPolicy policy = new EPMapPolicy();
policy.setType(EPMapPolicy.Type.invitation);
policy.setInvitation(invitation);
policyManager.updateMapPolicies(map, Collections.singletonList(policy));
dbInstance.commitAndCloseSession();
//convert invitation to identity
Identity invitee = invitationDao.createIdentityFrom(invitation, Locale.ENGLISH);
dbInstance.commitAndCloseSession();
//and check
boolean visible = epFrontendManager.isMapVisible(invitee, map.getOlatResource());
Assert.assertTrue(visible);
//clean the invitations
invitationDao.cleanUpInvitations();
//check that the invitation not was not deleted
boolean afterVisible = epFrontendManager.isMapVisible(invitee, map.getOlatResource());
Assert.assertTrue(afterVisible);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment