From 3d12f9355b995785061545aa8a4099b9896e300e Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Tue, 11 Feb 2014 22:42:12 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 58160: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3) 57999: MNT-8886: Merged DEV to V4.2-BUG-FIX 57899: MNT-8886 Users with disabled accounts receive email notification from workflow -In prepareEmail.MailActionExecuter() method was added check: (!personService.isEnabled(userAuth)). -In AbstractMailActionExecuterTest was added testPrepareEmailForDisabledUsers() test. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@61925 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../action/executer/MailActionExecuter.java | 4 ++ .../AbstractMailActionExecuterTest.java | 56 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java b/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java index 576e469354..7ef1e47c88 100644 --- a/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java +++ b/source/java/org/alfresco/repo/action/executer/MailActionExecuter.java @@ -649,6 +649,10 @@ public class MailActionExecuter extends ActionExecuterAbstractBase { if (personService.personExists(userAuth) == true) { + if (!personService.isEnabled(userAuth)) + { + continue; + } NodeRef person = personService.getPerson(userAuth); String address = (String)nodeService.getProperty(person, ContentModel.PROP_EMAIL); if (address != null && address.length() != 0) diff --git a/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java b/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java index ea33970201..8aec39236a 100644 --- a/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java +++ b/source/test-java/org/alfresco/repo/action/executer/AbstractMailActionExecuterTest.java @@ -22,6 +22,8 @@ import java.io.IOException; import java.io.Serializable; import java.util.*; +import javax.mail.Address; +import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; @@ -36,8 +38,13 @@ import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransacti import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.preference.PreferenceService; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.cmr.security.AuthorityService; +import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.namespace.QName; +import org.alfresco.util.PropertyMap; import org.alfresco.util.test.junitrules.AlfrescoPerson; import org.alfresco.util.test.junitrules.ApplicationContextInit; import org.junit.Assert; @@ -72,6 +79,8 @@ public abstract class AbstractMailActionExecuterTest protected static MailActionExecuter ACTION_EXECUTER; protected static PreferenceService PREFERENCE_SERVICE; protected static PersonService PERSON_SERVICE; + protected static AuthorityService AUTHORITY_SERVICE; + protected static NodeService NODE_SERVICE; protected static boolean WAS_IN_TEST_MODE; @@ -81,6 +90,8 @@ public abstract class AbstractMailActionExecuterTest ACTION_EXECUTER = appCtx.getBean("OutboundSMTP", ApplicationContextFactory.class).getApplicationContext().getBean("mail", MailActionExecuter.class); PREFERENCE_SERVICE = appCtx.getBean("PreferenceService", PreferenceService.class); PERSON_SERVICE = appCtx.getBean("PersonService", PersonService.class); + NODE_SERVICE = appCtx.getBean("NodeService", NodeService.class); + AUTHORITY_SERVICE = appCtx.getBean("AuthorityService", AuthorityService.class); WAS_IN_TEST_MODE = ACTION_EXECUTER.isTestMode(); ACTION_EXECUTER.setTestMode(true); @@ -304,4 +315,49 @@ public abstract class AbstractMailActionExecuterTest } } + @Test + public void testPrepareEmailForDisabledUsers() throws MessagingException + { + final String USER1 = "test_user1"; + final String USER2 = "test_user2"; + createUser(USER1); + NodeRef userNode = createUser(USER2); + String groupName = AUTHORITY_SERVICE.createAuthority(AuthorityType.GROUP, "testgroup1"); + AUTHORITY_SERVICE.addAuthority(groupName, USER1); + AUTHORITY_SERVICE.addAuthority(groupName, USER2); + NODE_SERVICE.addAspect(userNode, ContentModel.ASPECT_PERSON_DISABLED, null); + final Action mailAction = ACTION_SERVICE.createAction(MailActionExecuter.NAME); + mailAction.setParameterValue(MailActionExecuter.PARAM_FROM, "some.body@example.com"); + mailAction.setParameterValue(MailActionExecuter.PARAM_TO_MANY, groupName); + + mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT, "Testing"); + mailAction.setParameterValue(MailActionExecuter.PARAM_TEXT, "Testing"); + + RetryingTransactionHelper txHelper = APP_CONTEXT_INIT.getApplicationContext().getBean("retryingTransactionHelper", RetryingTransactionHelper.class); + + MimeMessage mm = txHelper.doInTransaction(new RetryingTransactionCallback() + { + @Override + public MimeMessage execute() throws Throwable + { + return ACTION_EXECUTER.prepareEmail(mailAction, null, null, null).getMimeMessage(); + } + }, true); + + Address[] addresses = mm.getRecipients(Message.RecipientType.TO); + Assert.assertEquals(1, addresses.length); + Assert.assertEquals(USER1 + "@email.com", addresses[0].toString()); + } + + private NodeRef createUser(String userName) + { + PropertyMap personProps = new PropertyMap(); + personProps.put(ContentModel.PROP_USERNAME, userName); + personProps.put(ContentModel.PROP_FIRSTNAME, userName); + personProps.put(ContentModel.PROP_LASTNAME, userName); + personProps.put(ContentModel.PROP_EMAIL, userName + "@email.com"); + + return PERSON_SERVICE.createPerson(personProps); + } + }