/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando Enterprise Edition software.
* You can redistribute it and/or modify it
* under the terms of the Entando's EULA
*
* See the file License for the specific language governing permissions
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpwebdynamicform.aps.internalservlet.message;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.agiletec.plugins.jpwebdynamicform.apsadmin.ApsAdminPluginBaseTestCase;
import com.agiletec.aps.system.SystemConstants;
import com.agiletec.aps.system.common.entity.model.EntitySearchFilter;
import com.agiletec.plugins.jpmail.aps.services.JpmailSystemConstants;
import com.agiletec.plugins.jpmail.aps.services.mail.IMailManager;
import com.agiletec.plugins.jpmail.aps.services.mail.MailManager;
import com.agiletec.plugins.jpwebdynamicform.aps.internalservlet.message.UserNewMessageAction;
import com.agiletec.plugins.jpwebdynamicform.aps.system.services.message.IMessageSearcherDAO;
import com.agiletec.plugins.jpwebdynamicform.aps.system.services.message.model.Message;
import com.opensymphony.xwork2.Action;
public class TestUserNewMessageAction extends ApsAdminPluginBaseTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
this.activeMailManager(false);
}
public void testCreateNew() throws Throwable {
String result = this.executeNew("mainEditor", "");
assertEquals("voidTypeCode", result);
result = this.executeNew("mainEditor", "PER");
assertEquals(Action.SUCCESS, result);
UserNewMessageAction action = (UserNewMessageAction) this.getAction();
Message message = action.getMessage();
assertEquals("PER", message.getTypeCode());
}
public void testSend() throws Throwable {
String result = this.executeNew(SystemConstants.GUEST_USER_NAME, "PER");
assertEquals(Action.SUCCESS, result);
Map<String, String> params = new HashMap<String, String>();
result = this.executeSend(SystemConstants.GUEST_USER_NAME, params);
assertEquals("expiredMessage", result);
params.put("typeCode", "PER");
result = this.executeSend(SystemConstants.GUEST_USER_NAME, params);
assertEquals(Action.INPUT, result);
UserNewMessageAction action = (UserNewMessageAction) this.getAction();
Collection<String> fieldErrors = action.getFieldErrors().keySet();
assertEquals(4, fieldErrors.size());
assertTrue(fieldErrors.contains("Monotext:Name"));
assertTrue(fieldErrors.contains("Monotext:Surname"));
assertTrue(fieldErrors.contains("Monotext:eMail"));
assertTrue(fieldErrors.contains("Monotext:Note"));
params.put("Monotext:Name", "MyName");
params.put("Monotext:Surname", "MySurname");
params.put("Monotext:Note", "MyNote");
params.put("Monotext:eMail", "MyEmail@inesistente.itte");
result = this.executeSend(SystemConstants.GUEST_USER_NAME, params);
assertEquals(Action.SUCCESS, result);
List<String> messagesId = this._messageManager.loadMessagesId(null);
assertEquals(1, messagesId.size());
Message message = this._messageManager.getMessage(messagesId.get(0));
assertEquals(SystemConstants.GUEST_USER_NAME, message.getUsername());
params.put("Monotext:eMail", "MyEmail");
result = this.executeNew("mainEditor", "PER");
assertEquals(Action.SUCCESS, result);
result = this.executeSend(SystemConstants.GUEST_USER_NAME, params);
assertEquals(Action.INPUT, result);
fieldErrors = this.getAction().getFieldErrors().keySet();
assertEquals(1, fieldErrors.size());
assertTrue(fieldErrors.contains("Monotext:eMail"));
messagesId = this._messageManager.loadMessagesId(null);
assertEquals(1, messagesId.size());
result = this.executeNew("mainEditor", "PER");
assertEquals(Action.SUCCESS, result);
params.put("Monotext:eMail", "MyEmail@inesistente.itte");
result = this.executeSend("mainEditor", params);
assertEquals(Action.SUCCESS, result);
EntitySearchFilter[] filters = new EntitySearchFilter[] { new EntitySearchFilter(IMessageSearcherDAO.USERNAME_FILTER_KEY, false, "mainEditor", false)};
messagesId = this._messageManager.loadMessagesId(filters);
assertEquals(1, messagesId.size());
message = this._messageManager.getMessage(messagesId.get(0));
assertEquals("mainEditor", message.getUsername());
}
private String executeNew(String username, String typeCode) throws Throwable {
this.setUserOnSession(username);
this.initAction("/do/jpwebdynamicform/Message/User", "new");
this.addParameter("typeCode", typeCode);
return this.executeAction();
}
private String executeSend(String username, Map<String, String> params) throws Throwable {
this.setUserOnSession(username);
this.initAction("/do/jpwebdynamicform/Message/User", "send");
this.addParameters(params);
return this.executeAction();
}
@Override
protected void tearDown() throws Exception {
this.activeMailManager(true);
super.tearDown();
}
private void activeMailManager(boolean active) {
IMailManager mailManager = (IMailManager) this.getService(JpmailSystemConstants.MAIL_MANAGER);
if (mailManager instanceof MailManager) {
((MailManager) mailManager).setActive(active);
}
}
}