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
This commit is contained in:
Alan Davis
2014-02-11 22:42:12 +00:00
parent 554e28caca
commit 3d12f9355b
2 changed files with 60 additions and 0 deletions

View File

@@ -649,6 +649,10 @@ public class MailActionExecuter extends ActionExecuterAbstractBase
{ {
if (personService.personExists(userAuth) == true) if (personService.personExists(userAuth) == true)
{ {
if (!personService.isEnabled(userAuth))
{
continue;
}
NodeRef person = personService.getPerson(userAuth); NodeRef person = personService.getPerson(userAuth);
String address = (String)nodeService.getProperty(person, ContentModel.PROP_EMAIL); String address = (String)nodeService.getProperty(person, ContentModel.PROP_EMAIL);
if (address != null && address.length() != 0) if (address != null && address.length() != 0)

View File

@@ -22,6 +22,8 @@ import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.util.*; import java.util.*;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException; import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; 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.Action;
import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.preference.PreferenceService; 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.cmr.security.PersonService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.util.PropertyMap;
import org.alfresco.util.test.junitrules.AlfrescoPerson; import org.alfresco.util.test.junitrules.AlfrescoPerson;
import org.alfresco.util.test.junitrules.ApplicationContextInit; import org.alfresco.util.test.junitrules.ApplicationContextInit;
import org.junit.Assert; import org.junit.Assert;
@@ -72,6 +79,8 @@ public abstract class AbstractMailActionExecuterTest
protected static MailActionExecuter ACTION_EXECUTER; protected static MailActionExecuter ACTION_EXECUTER;
protected static PreferenceService PREFERENCE_SERVICE; protected static PreferenceService PREFERENCE_SERVICE;
protected static PersonService PERSON_SERVICE; protected static PersonService PERSON_SERVICE;
protected static AuthorityService AUTHORITY_SERVICE;
protected static NodeService NODE_SERVICE;
protected static boolean WAS_IN_TEST_MODE; 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); ACTION_EXECUTER = appCtx.getBean("OutboundSMTP", ApplicationContextFactory.class).getApplicationContext().getBean("mail", MailActionExecuter.class);
PREFERENCE_SERVICE = appCtx.getBean("PreferenceService", PreferenceService.class); PREFERENCE_SERVICE = appCtx.getBean("PreferenceService", PreferenceService.class);
PERSON_SERVICE = appCtx.getBean("PersonService", PersonService.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(); WAS_IN_TEST_MODE = ACTION_EXECUTER.isTestMode();
ACTION_EXECUTER.setTestMode(true); 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<MimeMessage>()
{
@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);
}
} }