From 5489284f58a5e2f222d6d391254a81766f833656 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Mon, 7 Sep 2020 08:42:55 +0200
Subject: [PATCH] OO-4894: add unit test to check specific user life cycle case

---
 .../lifecycle/UserLifecycleManagerTest.java   | 30 ++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/src/test/java/org/olat/user/manager/lifecycle/UserLifecycleManagerTest.java b/src/test/java/org/olat/user/manager/lifecycle/UserLifecycleManagerTest.java
index f434a494d1b..45537d56e8d 100644
--- a/src/test/java/org/olat/user/manager/lifecycle/UserLifecycleManagerTest.java
+++ b/src/test/java/org/olat/user/manager/lifecycle/UserLifecycleManagerTest.java
@@ -29,7 +29,9 @@ import java.util.Set;
 import java.util.UUID;
 
 import org.junit.Assert;
+import org.junit.FixMethodOrder;
 import org.junit.Test;
+import org.junit.runners.MethodSorters;
 import org.olat.basesecurity.BaseSecurity;
 import org.olat.basesecurity.BaseSecurityModule;
 import org.olat.basesecurity.GroupRoles;
@@ -64,6 +66,7 @@ import com.dumbster.smtp.SmtpMessage;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class UserLifecycleManagerTest extends OlatTestCase {
 	
 	@Autowired
@@ -204,7 +207,32 @@ public class UserLifecycleManagerTest extends OlatTestCase {
 	}
 	
 	@Test
-	public void inactivateIdentities() {
+	public void inactivateASingleInformedIdentity() {
+		Assert.assertTrue(userModule.isUserAutomaticDeactivation());
+		userModule.setMailBeforeDeactivation(true);
+		userModule.setNumberOfInactiveDayBeforeDeactivation(720);
+		userModule.setNumberOfDayBeforeDeactivationMail(30);
+		
+		Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("lifecycle-12");
+		identityDao.setIdentityLastLogin(id1, DateUtils.addDays(new Date(), -1205));
+		id1 = securityManager.saveIdentityStatus(id1, Identity.STATUS_ACTIV, null);
+		// Artificially mail in past
+		((IdentityImpl)id1).setInactivationEmailDate(DateUtils.addDays(new Date(), -31));
+		id1 = identityDao.saveIdentity(id1);
+		dbInstance.commitAndCloseSession();
+		
+		Set<Identity> vetoed = new HashSet<>();
+		lifecycleManager.inactivateIdentities(vetoed);
+		dbInstance.commitAndCloseSession();
+		
+		// check mails sent
+		List<SmtpMessage> inactivedMessages = getSmtpServer().getReceivedEmails();
+		Assert.assertTrue(hasTo(id1.getUser().getEmail(), inactivedMessages));
+		getSmtpServer().reset();
+	}
+	
+	@Test
+	public void inactivateBIdentities() {
 		Assert.assertTrue(userModule.isUserAutomaticDeactivation());
 		userModule.setMailBeforeDeactivation(true);
 		userModule.setNumberOfInactiveDayBeforeDeactivation(720);
-- 
GitLab