mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-30 18:15:39 +00:00
Merged DEV to HEAD
48848: ALF-18520: Mails subsystem fails with Nullpointer during initialization If option is set to send test message on mail subsystem init then do it on behalf of System user. During getFrom field calculation if there is no current user then send mail from default address like it is System user. Case to unit test was added. Reformatted MailActionExecuterTest git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@48866 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
parent
d542afaa5c
commit
0bc61d6d35
@ -38,6 +38,8 @@ import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.action.ParameterDefinitionImpl;
|
||||
import org.alfresco.repo.admin.SysAdminParams;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||
import org.alfresco.repo.template.DateCompareMethod;
|
||||
import org.alfresco.repo.template.HasAspectMethod;
|
||||
import org.alfresco.repo.template.I18NMessageMethod;
|
||||
@ -388,6 +390,10 @@ public class MailActionExecuter extends ActionExecuterAbstractBase
|
||||
|
||||
super.init();
|
||||
if (sendTestMessage && testMessageTo != null)
|
||||
{
|
||||
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||
{
|
||||
public Object doWork() throws Exception
|
||||
{
|
||||
Map<String, Serializable> params = new HashMap<String, Serializable>();
|
||||
params.put(PARAM_TO, testMessageTo);
|
||||
@ -396,6 +402,9 @@ public class MailActionExecuter extends ActionExecuterAbstractBase
|
||||
|
||||
Action ruleAction = serviceRegistry.getActionService().createAction(NAME, params);
|
||||
executeImpl(ruleAction, null);
|
||||
return null;
|
||||
}
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
}
|
||||
}
|
||||
|
||||
@ -926,7 +935,7 @@ public class MailActionExecuter extends ActionExecuterAbstractBase
|
||||
if (! authService.isCurrentUserTheSystemUser())
|
||||
{
|
||||
String currentUserName = authService.getCurrentUserName();
|
||||
if (personExists(currentUserName))
|
||||
if (currentUserName != null && personExists(currentUserName))
|
||||
{
|
||||
fromPersonName = currentUserName;
|
||||
locale = getLocaleForUser(fromPersonName);
|
||||
|
@ -28,8 +28,6 @@ import java.util.Map;
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.alfresco.repo.management.subsystems.ApplicationContextFactory;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.service.cmr.action.Action;
|
||||
@ -38,6 +36,7 @@ import org.alfresco.service.cmr.preference.PreferenceService;
|
||||
import org.alfresco.util.test.junitrules.AlfrescoPerson;
|
||||
import org.alfresco.util.test.junitrules.ApplicationContextInit;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Assert;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.ClassRule;
|
||||
import org.junit.Test;
|
||||
@ -164,4 +163,25 @@ public class MailActionExecuterTest {
|
||||
Assert.assertEquals("G'Day 01/01/1970", (String)message.getContent());
|
||||
}
|
||||
|
||||
@Test public void testSendingTestMessageWithNoCurrentUser()
|
||||
{
|
||||
try
|
||||
{
|
||||
// run with no current user
|
||||
AuthenticationUtil.clearCurrentSecurityContext();
|
||||
|
||||
Action mailAction = ACTION_SERVICE.createAction(MailActionExecuter.NAME);
|
||||
mailAction.setParameterValue(MailActionExecuter.PARAM_TO, "some.body@eaxmple.com");
|
||||
mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT, "Testing");
|
||||
mailAction.setParameterValue(MailActionExecuter.PARAM_TEXT, "This is a test message.");
|
||||
|
||||
ACTION_EXECUTER.executeImpl(mailAction, null);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// restore system user as current user
|
||||
AuthenticationUtil.setRunAsUserSystem();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user