Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.mockrunner.test.web.ActionTestModuleTest Maven / Gradle / Ivy
package com.mockrunner.test.web;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ExceptionHandler;
import org.apache.struts.config.ExceptionConfig;
import org.apache.struts.config.FormBeanConfig;
import org.apache.struts.config.FormPropertyConfig;
import org.apache.struts.util.MessageResources;
import org.apache.struts.validator.ValidatorForm;
import com.mockrunner.base.BaseTestCase;
import com.mockrunner.base.NestedApplicationException;
import com.mockrunner.base.VerifyFailedException;
import com.mockrunner.mock.web.MockActionForward;
import com.mockrunner.struts.ActionTestModule;
import com.mockrunner.struts.DefaultExceptionHandlerConfig;
import com.mockrunner.struts.ExceptionHandlerConfig;
import com.mockrunner.struts.MapMessageResources;
public class ActionTestModuleTest extends BaseTestCase
{
private ActionTestModule module;
protected void setUp() throws Exception
{
super.setUp();
module = new ActionTestModule(getActionMockObjectFactory());
}
private ActionErrors createTestActionErrors()
{
ActionErrors errors = new ActionErrors();
ActionMessage error1 = new ActionMessage("key1");
ActionMessage error2 = new ActionMessage("key2", new String[]{"value1" , "value2"});
ActionMessage error3 = new ActionMessage("key3", "value");
errors.add(ActionMessages.GLOBAL_MESSAGE, error1);
errors.add(ActionMessages.GLOBAL_MESSAGE, error2);
errors.add(ActionMessages.GLOBAL_MESSAGE, error3);
return errors;
}
private ActionMessages createTestActionMessages()
{
ActionMessages messages = new ActionMessages();
ActionMessage message1 = new ActionMessage("key1");
ActionMessage message2 = new ActionMessage("key2", new String[]{"value1" , "value2"});
messages.add(ActionErrors.GLOBAL_MESSAGE, message1);
messages.add(ActionMessages.GLOBAL_MESSAGE, message2);
return messages;
}
private ActionErrors createEmptyTestActionErrors()
{
return new ActionErrors();
}
private ActionMessages createEmptyTestActionMessages()
{
return new ActionMessages();
}
public void testVerifyOutput() throws Exception
{
getActionMockObjectFactory().getMockResponse().getWriter().write("This is a test");
try
{
module.verifyOutput("this is a test");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setCaseSensitive(false);
module.verifyOutput("this is a test");
module.verifyOutputContains("TeSt");
module.verifyOutputRegularExpression("THIS.*");
module.setCaseSensitive(true);
try
{
module.verifyOutputContains("THIS");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyOutputRegularExpression(".*TEST");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
}
public void testGetActionErrorByKey()
{
assertFalse(module.hasActionErrors());
module.setActionErrors(createTestActionErrors());
assertTrue(module.hasActionErrors());
ActionMessage error = module.getActionErrorByKey("key3");
assertEquals("value", error.getValues()[0]);
}
public void testGetActionMessageByKey()
{
assertFalse(module.hasActionMessages());
module.setActionMessages(createTestActionMessages());
assertTrue(module.hasActionMessages());
ActionMessage message = module.getActionMessageByKey("key2");
assertEquals("value2", message.getValues()[1]);
}
public void testGetActionMessages()
{
assertFalse(module.hasActionMessages());
ActionMessages theMessages1 = createTestActionMessages();
module.setActionMessagesToSession(theMessages1);
assertTrue(module.hasActionMessages());
module.setRecognizeMessagesInSession(false);
assertFalse(module.hasActionMessages());
ActionMessages theMessages2 = createTestActionMessages();
module.setActionMessages(theMessages2);
assertTrue(module.hasActionMessages());
assertSame(theMessages2, module.getActionMessages());
module.setRecognizeMessagesInSession(true);
ActionMessages messages = module.getActionMessages();
assertEquals(4, messages.size());
module.setActionMessages(null);
assertSame(theMessages1, module.getActionMessages());
module.setActionMessages(new ActionMessages());
assertSame(theMessages1, module.getActionMessages());
module.setActionMessagesToSession(new ActionMessages());
module.setActionMessages(theMessages1);
assertSame(theMessages1, module.getActionMessages());
}
public void testGetActionErrors()
{
assertFalse(module.hasActionErrors());
ActionErrors theErrors1 = createTestActionErrors();
module.setActionErrorsToSession(theErrors1);
assertTrue(module.hasActionErrors());
module.setRecognizeMessagesInSession(false);
assertFalse(module.hasActionErrors());
ActionErrors theErrors2 = createTestActionErrors();
module.setActionErrors(theErrors2);
assertTrue(module.hasActionErrors());
assertSame(theErrors2, module.getActionErrors());
module.setRecognizeMessagesInSession(true);
ActionMessages errors = module.getActionErrors();
assertEquals(6, errors.size());
module.setActionErrors(null);
assertSame(theErrors1, module.getActionErrors());
module.setActionErrors(new ActionErrors());
assertSame(theErrors1, module.getActionErrors());
module.setActionErrorsToSession(new ActionMessages());
module.setActionErrors(theErrors1);
assertSame(theErrors1, module.getActionErrors());
}
public void testActionMessagesInRequestAndSession()
{
ActionMessages theMessages1 = createTestActionMessages();
ActionMessages theMessages2 = new ActionMessages();
ActionMessage message1 = new ActionMessage("key3");
ActionMessage message2 = new ActionMessage("key4", new String[]{"value1" , "value2"});
theMessages2.add("abc", message1);
theMessages2.add(ActionMessages.GLOBAL_MESSAGE, message2);
module.setActionMessages(theMessages1);
module.setActionMessagesToSession(theMessages2);
module.verifyNumberActionMessages(4);
module.verifyActionMessagePresent("key1");
module.verifyActionMessagePresent("key2");
module.verifyActionMessagePresent("key3");
module.verifyActionMessagePresent("key4");
module.verifyActionMessageNotPresent("key5");
module.verifyActionMessageValues("key2", new String[]{"value1" , "value2"});
module.verifyActionMessageValues("key4", new String[]{"value1" , "value2"});
module.verifyActionMessageProperty("key3", "abc");
module.setRecognizeMessagesInSession(false);
module.verifyNumberActionMessages(2);
module.verifyActionMessagePresent("key1");
module.verifyActionMessagePresent("key2");
module.verifyActionMessageNotPresent("key3");
}
public void testActionErrorsInRequestAndSession()
{
ActionErrors theErrors1 = createTestActionErrors();
ActionErrors theErrors2 = new ActionErrors();
ActionMessage error1 = new ActionMessage("key4");
ActionMessage error2 = new ActionMessage("key5", new String[]{"value1" , "value2"});
theErrors2.add(ActionMessages.GLOBAL_MESSAGE, error1);
theErrors2.add("abc", error2);
module.setActionErrors(theErrors1);
module.setActionErrorsToSession(theErrors2);
module.verifyNumberActionErrors(5);
module.verifyActionErrorPresent("key1");
module.verifyActionErrorPresent("key2");
module.verifyActionErrorPresent("key3");
module.verifyActionErrorPresent("key4");
module.verifyActionErrorPresent("key5");
module.verifyActionErrorNotPresent("key6");
module.verifyActionErrorValues("key2", new String[]{"value1" , "value2"});
module.verifyActionErrorValues("key5", new String[]{"value1" , "value2"});
module.verifyActionErrorProperty("key5", "abc");
module.setRecognizeMessagesInSession(false);
module.verifyNumberActionErrors(3);
module.verifyActionErrorPresent("key1");
module.verifyActionErrorPresent("key2");
module.verifyActionErrorPresent("key3");
module.verifyActionErrorNotPresent("key4");
}
public void testActionErrorsInRequestAndSessionInstance()
{
module.setActionErrors(createTestActionMessages());
module.setActionErrorsToSession(createTestActionMessages());
assertTrue(module.getActionErrors() instanceof ActionMessages);
module.setActionErrors(createTestActionErrors());
assertTrue(module.getActionErrors() instanceof ActionErrors);
module.setActionErrorsToSession(createTestActionErrors());
assertTrue(module.getActionErrors() instanceof ActionErrors);
module.setActionErrors(createTestActionMessages());
assertTrue(module.getActionErrors() instanceof ActionErrors);
}
public void testSetMessageAttributeKey()
{
ActionMessages messages = createTestActionMessages();
module.setActionMessages(messages);
assertSame(messages, getActionMockObjectFactory().getMockRequest().getAttribute(Globals.MESSAGE_KEY));
module.setActionMessagesToSession(messages);
assertSame(messages, getActionMockObjectFactory().getMockSession().getAttribute(Globals.MESSAGE_KEY));
ActionMessages otherMessages = createTestActionMessages();
module.setMessageAttributeKey("mymessages");
module.setActionMessages(otherMessages);
assertSame(otherMessages, getActionMockObjectFactory().getMockRequest().getAttribute("mymessages"));
module.setActionMessagesToSession(otherMessages);
assertSame(otherMessages, getActionMockObjectFactory().getMockSession().getAttribute("mymessages"));
assertEquals(4, module.getActionMessages().size());
module.verifyActionMessagePresent("key1");
module.verifyActionMessageNotPresent("key3");
module.setMessageAttributeKey("test");
module.verifyActionMessageNotPresent("key1");
assertNull(module.getActionMessages());
try
{
module.verifyHasActionMessages();
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setMessageAttributeKey("mymessages");
module.verifyHasActionMessages();
module.verifyActionMessages(new String[]{"key1", "key2", "key1", "key2"});
module.verifyNumberActionMessages(4);
module.verifyActionMessageValues("key2", new String[]{"value1", "value2"});
}
public void testSetErrorAttributeKey()
{
ActionErrors errors = createTestActionErrors();
module.setActionErrors(errors);
assertSame(errors, getActionMockObjectFactory().getMockRequest().getAttribute(Globals.ERROR_KEY));
module.setActionErrorsToSession(errors);
assertSame(errors, getActionMockObjectFactory().getMockSession().getAttribute(Globals.ERROR_KEY));
ActionErrors otherErrors = createTestActionErrors();
module.setErrorAttributeKey("othereerrors");
module.setActionErrors(otherErrors);
assertSame(otherErrors, getActionMockObjectFactory().getMockRequest().getAttribute("othereerrors"));
module.setActionErrorsToSession(otherErrors);
assertSame(otherErrors, getActionMockObjectFactory().getMockSession().getAttribute("othereerrors"));
assertEquals(6, module.getActionErrors().size());
module.verifyActionErrorPresent("key2");
module.verifyActionErrorNotPresent("key4");
module.setErrorAttributeKey("test");
module.verifyActionErrorNotPresent("key2");
assertNull(module.getActionErrors());
try
{
module.verifyHasActionErrors();
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setErrorAttributeKey("othereerrors");
module.verifyHasActionErrors();
module.verifyActionErrorPresent("key1");
module.verifyActionErrorPresent("key2");
module.verifyActionErrorPresent("key3");
module.verifyNumberActionErrors(6);
module.verifyActionErrorValues("key3", new String[]{"value"});
}
public void testVerifyHasActionErrors()
{
module.setActionErrors(createEmptyTestActionErrors());
module.verifyNoActionErrors();
try
{
module.verifyHasActionErrors();
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionErrors(createTestActionErrors());
module.verifyHasActionErrors();
try
{
module.verifyNoActionErrors();
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionErrors(null);
module.verifyNoActionErrors();
module.setActionErrorsToSession(createTestActionErrors());
module.verifyHasActionErrors();
module.setRecognizeMessagesInSession(false);
module.verifyNoActionErrors();
}
public void testVerifyHasActionMessages()
{
module.setActionMessages(createEmptyTestActionMessages());
module.verifyNoActionMessages();
try
{
module.verifyHasActionMessages();
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionMessages(createTestActionMessages());
module.verifyHasActionMessages();
try
{
module.verifyNoActionMessages();
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionMessages(null);
module.verifyNoActionMessages();
module.setActionMessagesToSession(createTestActionMessages());
module.verifyHasActionMessages();
module.setRecognizeMessagesInSession(false);
module.verifyNoActionMessages();
}
public void testVerifyActionErrorPresent()
{
module.setActionErrors(createEmptyTestActionErrors());
module.verifyActionErrorNotPresent("key1");
module.setActionErrors(createTestActionErrors());
module.verifyActionErrorPresent("key1");
module.verifyActionErrorNotPresent("key4");
try
{
module.verifyActionErrorPresent("key5");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionErrorNotPresent("key3");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionErrors(null);
module.verifyActionErrorNotPresent("key1");
module.setActionErrorsToSession(createTestActionErrors());
module.verifyActionErrorPresent("key1");
}
public void testVerifyActionMessagePresent()
{
module.setActionMessages(createEmptyTestActionMessages());
module.verifyActionMessageNotPresent("key1");
module.setActionMessages(createTestActionMessages());
module.verifyActionMessagePresent("key1");
module.verifyActionMessageNotPresent("key3");
try
{
module.verifyActionMessagePresent("key3");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionMessageNotPresent("key1");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionMessages(null);
module.verifyActionMessageNotPresent("key1");
module.setActionMessagesToSession(createTestActionMessages());
module.verifyActionMessagePresent("key1");
}
public void testVerifyNumberActionErrors()
{
module.setActionErrors(createEmptyTestActionErrors());
module.verifyNumberActionErrors(0);
module.setActionErrors(createTestActionErrors());
module.verifyNumberActionErrors(3);
try
{
module.verifyNumberActionErrors(4);
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionErrors(null);
module.verifyNumberActionErrors(0);
module.setActionErrorsToSession(createTestActionErrors());
module.verifyNumberActionErrors(3);
}
public void testVerifyNumberActionMessages()
{
module.setActionMessages(createEmptyTestActionMessages());
module.verifyNumberActionMessages(0);
module.setActionMessages(createTestActionMessages());
module.verifyNumberActionMessages(2);
try
{
module.verifyNumberActionMessages(0);
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionMessages(null);
module.verifyNumberActionMessages(0);
module.setActionMessagesToSession(createTestActionMessages());
module.verifyNumberActionMessages(2);
}
public void testVerifyActionErrors()
{
module.setActionErrors(createTestActionErrors());
module.verifyActionErrors(new String[]{"key1", "key2", "key3"});
try
{
module.verifyActionErrors(new String[]{"key1", "key2", "key3", "key4"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionErrors(new String[]{"key1", "key2"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionErrors(new String[]{"key4", "key2", "key3"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionErrors(null);
module.setActionErrorsToSession(createTestActionErrors());
module.verifyActionErrors(new String[]{"key1", "key2", "key3"});
module.setRecognizeMessagesInSession(false);
try
{
module.verifyActionErrors(new String[]{"key1", "key2", "key3"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
}
public void testVerifyActionMessages()
{
module.setActionMessages(createTestActionMessages());
module.verifyActionMessages(new String[]{"key1", "key2"});
try
{
module.verifyActionMessages(new String[]{"key1", "key3", "key4"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionMessages(new String[]{"key1"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionMessages(null);
module.setActionMessagesToSession(createTestActionMessages());
module.verifyActionMessages(new String[]{"key1", "key2"});
module.setRecognizeMessagesInSession(false);
try
{
module.verifyActionMessages(new String[]{"key1", "key2"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
}
public void testVerifyActionErrorValues()
{
module.setActionErrors(createTestActionErrors());
module.verifyActionErrorValue("key3", "value");
module.verifyActionErrorValues("key2", new String[]{"value1", "value2"});
try
{
module.verifyActionErrorValue("key1", "test");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionErrorValue("key3", "test");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionErrorValue("key2", "value1");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionErrorValue("key2", new String[]{"value2", "value1"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionErrors(null);
module.setActionErrorsToSession(createTestActionErrors());
module.verifyActionErrorValues("key2", new String[]{"value1", "value2"});
module.setRecognizeMessagesInSession(false);
try
{
module.verifyActionErrorValues("key2", new String[]{"value1", "value2"});
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
}
public void testVerifyActionMessageValues()
{
module.setActionMessages(createTestActionMessages());
module.verifyActionMessageValues("key2", new String[]{"value1", "value2"});
try
{
module.verifyActionMessageValue("key2", "value1");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
try
{
module.verifyActionMessageValue("key1", "value1");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
}
public void testVerifyActionErrorProperty()
{
ActionErrors errors = new ActionErrors();
ActionMessage error1 = new ActionMessage("error1");
ActionMessage error2 = new ActionMessage("error2");
errors.add("property", error1);
errors.add(ActionMessages.GLOBAL_MESSAGE, error2);
module.setActionErrors(errors);
module.verifyActionErrorProperty("error1", "property");
try
{
module.verifyActionMessageProperty("error2", "property");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.verifyActionErrorProperty("error2", ActionMessages.GLOBAL_MESSAGE);
module.setActionErrors(null);
module.setActionErrorsToSession(errors);
module.verifyActionErrorProperty("error1", "property");
}
public void testVerifyActionMessageProperty()
{
ActionMessages messages = new ActionMessages();
ActionMessage message1 = new ActionMessage("message1");
ActionMessage message2 = new ActionMessage("message2");
messages.add("property", message1);
messages.add("property", message2);
module.setActionMessages(messages);
module.verifyActionMessageProperty("message1", "property");
module.verifyActionMessageProperty("message2", "property");
try
{
module.verifyActionMessageProperty("message2", "property1");
fail();
}
catch(VerifyFailedException exc)
{
//should throw exception
}
module.setActionMessages(null);
module.setActionMessagesToSession(messages);
module.verifyActionMessageProperty("message1", "property");
}
public void testCreateActionForm()
{
module.createActionForm(null);
assertNull(module.getActionForm());
module.createActionForm(TestForm.class);
assertNotNull(module.getActionForm());
assertTrue(module.getActionForm() instanceof TestForm);
}
public void testPopulateRequestToForm()
{
module.addRequestParameter("value(key1)", "value1");
module.addRequestParameter("value(key2)", "value2");
module.addRequestParameter("property", "value3");
module.addRequestParameter("indexedProperty[1]", "indexedValue");
module.addRequestParameter("nested.property", "nestedValue");
module.createActionForm(TestForm.class);
module.populateRequestToForm();
TestForm form = (TestForm)module.getActionForm();
assertEquals("value1", form.getValue("key1"));
assertEquals("value2", form.getValue("key2"));
assertEquals("value3", form.getProperty());
assertEquals("indexedValue", form.getIndexedProperty(1));
assertEquals("nestedValue", form.getNested().getProperty());
assertEquals(null, form.getValue("key3"));
}
public void testSetDoPopulateAndReset()
{
TestForm form = (TestForm)module.createActionForm(TestForm.class);
module.addRequestParameter("property", "value");
module.actionPerform(TestAction.class, form);
assertEquals("value", form.getProperty());
assertTrue(form.wasResetCalled());
form = (TestForm)module.createActionForm(TestForm.class);
module.addRequestParameter("property", "value");
module.setDoPopulate(false);
module.actionPerform(TestAction.class, form);
assertNull(form.getProperty());
assertTrue(form.wasResetCalled());
form = (TestForm)module.createActionForm(TestForm.class);
assertFalse(form.wasResetCalled());
module.addRequestParameter("property", "value");
module.setDoPopulate(true);
module.setReset(false);
module.actionPerform(TestAction.class, form);
assertEquals("value", form.getProperty());
assertFalse(form.wasResetCalled());
}
public void testActionPerform()
{
module.addRequestParameter("property", "value");
TestForm form = (TestForm)module.createActionForm(TestForm.class);
form.setValidationOk(false);
module.setValidate(true);
module.setInput("input");
module.actionPerform(TestAction.class, form);
module.verifyForward("input");
assertEquals("value", form.getProperty());
module.verifyHasActionErrors();
module.verifyActionErrorPresent("testkey");
form = (TestForm)module.createActionForm(TestForm.class);
form.setValidationOk(false);
module.setValidate(false);
module.actionPerform(TestAction.class, form);
assertEquals("success", ((MockActionForward)module.getActionForward()).getPath());
module.verifyForward("success");
assertEquals("value", form.getProperty());
module.verifyNoActionErrors();
form = (TestForm)module.createActionForm(TestForm.class);
form.setValidationOk(true);
module.setValidate(true);
module.actionPerform(TestAction.class, form);
module.verifyForward("success");
module.verifyNoActionErrors();
module.actionPerform(TestAction.class, TestForm.class);
module.verifyForward("success");
module.verifyNoActionErrors();
assertEquals("value", ((TestForm)module.getActionForm()).getProperty());
module.actionPerform(TestAction.class);
module.verifyForward("success");
module.verifyNoActionErrors();
assertNull(module.getActionForm());
}
public void testActionPerformServletSet()
{
TestForm form = (TestForm)module.createActionForm(TestForm.class);
module.actionPerform(TestAction.class, form);
assertEquals(getActionMockObjectFactory().getMockActionServlet(), form.getServlet());
assertEquals(getActionMockObjectFactory().getMockActionServlet(), ((TestForm)module.getActionForm()).getServlet());
assertEquals(getActionMockObjectFactory().getMockActionServlet(), module.getLastAction().getServlet());
TestAction testAction = new TestAction();
module.actionPerform(testAction, form);
assertEquals(getActionMockObjectFactory().getMockActionServlet(), form.getServlet());
assertEquals(getActionMockObjectFactory().getMockActionServlet(), testAction.getServlet());
module.actionPerform(TestAction.class, TestForm.class);
assertEquals(getActionMockObjectFactory().getMockActionServlet(), module.getLastAction().getServlet());
assertEquals(getActionMockObjectFactory().getMockActionServlet(), ((TestForm)module.getActionForm()).getServlet());
}
public void testVerifyForwardPathAndName()
{
TestForwardAction action = new TestForwardAction();
module.actionPerform(action);
module.verifyForward("success");
module.verifyForwardName("success");
MockActionForward forward = new MockActionForward("myName");
action.setActionForward(forward);
module.actionPerform(action);
module.verifyForwardName("myName");
try
{
module.verifyForward("myName");
fail();
}
catch (VerifyFailedException exc)
{
//should throw exception
}
forward = new MockActionForward("myName", "myPath", true);
action.setActionForward(forward);
module.actionPerform(action);
module.verifyForward("myPath");
module.verifyForwardName("myName");
}
public void testVerifyForwardWithPresetForward()
{
getActionMockObjectFactory().getMockActionMapping().addForward("success", "myPath");
TestForwardAction action = new TestForwardAction();
module.actionPerform(action);
module.verifyForward("myPath");
module.verifyForwardName("success");
getActionMockObjectFactory().getMockActionMapping().addForward("success", "anotherPath");
module.actionPerform(action);
module.verifyForward("anotherPath");
module.verifyForwardName("success");
}
public void testActionPerformMappingTypeSet()
{
module.actionPerform(TestAction.class);
assertEquals(TestAction.class.getName(), getActionMockObjectFactory().getMockActionMapping().getType());
}
public void testSetResourcesAndLocale()
{
getActionMockObjectFactory().getMockRequest().getSession(true);
MapMessageResources resources1 = new MapMessageResources();
MapMessageResources resources2 = new MapMessageResources();
module.setResources(resources1);
module.setResources("test", resources2);
module.setLocale(Locale.TRADITIONAL_CHINESE);
TestAction testAction = new TestAction();
module.actionPerform(testAction);
assertEquals(resources1, testAction.getTestResources());
assertEquals(resources2, testAction.getTestResourcesForKey());
assertEquals(Locale.TRADITIONAL_CHINESE, testAction.getTestLocale());
}
public void testSetResourcesAddToModuleConfig()
{
MapMessageResources resources1 = new MapMessageResources();
MapMessageResources resources2 = new MapMessageResources();
MapMessageResources resources3 = new MapMessageResources();
module.setResources("test1", resources1);
module.setResources("test2", resources2);
module.setResources("test3", resources3);
assertEquals(3, getActionMockObjectFactory().getMockModuleConfig().findMessageResourcesConfigs().length);
assertNotNull(getActionMockObjectFactory().getMockModuleConfig().findMessageResourcesConfig("test1"));
assertNotNull(getActionMockObjectFactory().getMockModuleConfig().findMessageResourcesConfig("test2"));
assertNotNull(getActionMockObjectFactory().getMockModuleConfig().findMessageResourcesConfig("test3"));
}
public void testDynaActionForm()
{
FormBeanConfig config = new FormBeanConfig();
config.setType(TestDynaForm.class.getName());
FormPropertyConfig property1 = new FormPropertyConfig();
property1.setName("property1");
property1.setType("java.lang.String");
property1.setInitial("testValue1");
FormPropertyConfig property2 = new FormPropertyConfig();
property2.setName("property2");
property2.setType("java.lang.Integer");
property2.setInitial("2");
config.addFormPropertyConfig(property1);
config.addFormPropertyConfig(property2);
DynaActionForm form = module.createDynaActionForm(config);
String prop1Value = (String)form.get("property1");
assertEquals("testValue1", prop1Value);
Integer prop2Value = (Integer)form.get("property2");
assertEquals(new Integer(2), prop2Value);
try
{
form.set("property3", "3");
fail();
}
catch(IllegalArgumentException exc)
{
//should throw exception
}
module.addRequestParameter("property2", "123");
module.actionPerform(TestAction.class, form);
assertEquals(new Integer(123), form.get("property2"));
}
public void testCreateValidatorResources()
{
String[] files = new String[2];
files[0] = "src/com/mockrunner/test/web/validator-rules.xml";
files[1] = "src/com/mockrunner/test/web/validation.xml";
module.createValidatorResources(files);
module.setResources(new MapMessageResources());
TestValidatorForm form = new TestValidatorForm();
form.setServlet(getActionMockObjectFactory().getMockActionServlet());
getActionMockObjectFactory().getMockActionMapping().setName("testForm");
form.setFirstName("ABCDEF");
form.setLastName("ABCDEF");
ActionErrors errors = form.validate(getActionMockObjectFactory().getMockActionMapping(), getActionMockObjectFactory().getMockRequest());
assertTrue(errors.isEmpty());;
form.setFirstName("ABCD");
form.setLastName("12345678901");
errors = form.validate(getActionMockObjectFactory().getMockActionMapping(), getActionMockObjectFactory().getMockRequest());
System.out.println(errors.size());
assertTrue(errors.size() == 2);
form.setLastName("ABCDEF");
errors = form.validate(getActionMockObjectFactory().getMockActionMapping(), getActionMockObjectFactory().getMockRequest());
assertTrue(errors.size() == 1);
ActionMessage error = (ActionMessage)errors.get().next();
assertEquals("errors.minlength", error.getKey());
}
public void testWrappedRequest()
{
HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(getActionMockObjectFactory().getMockRequest());
HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(getActionMockObjectFactory().getMockResponse());
getActionMockObjectFactory().addRequestWrapper(requestWrapper);
getActionMockObjectFactory().addResponseWrapper(responseWrapper);
TestAction action = new TestAction();
module.actionPerform(action);
assertSame(requestWrapper, action.getRequest());
assertSame(responseWrapper, action.getResponse());
}
public void testCustomActionMapping()
{
TestMapping mapping = (TestMapping)getActionMockObjectFactory().prepareActionMapping(TestMapping.class);
TestMappingAction action = new TestMappingAction();
TestMappingForm form = new TestMappingForm();
module.actionPerform(action, form);
assertSame(mapping, action.getActionMapping());
assertSame(mapping, form.getResetActionMapping());
assertSame(mapping, form.getValidateActionMapping());
}
public void testCustomActionMappingDelegation()
{
TestMapping mapping = (TestMapping)getActionMockObjectFactory().prepareActionMapping(TestMapping.class);
module.setValidate(true);
module.setParameter("testParameter");
module.setInput("testInput");
assertTrue(mapping.getValidate());
assertEquals("testParameter", mapping.getParameter());
assertEquals("testInput", mapping.getInput());
assertTrue(getActionMockObjectFactory().getMockActionMapping().getValidate());
assertEquals("testParameter", getActionMockObjectFactory().getMockActionMapping().getParameter());
assertEquals("testInput", getActionMockObjectFactory().getMockActionMapping().getInput());
}
public void testExceptionHandler()
{
TestExceptionHandler handler1 = new TestExceptionHandler();
TestExceptionHandler handler2 = new TestExceptionHandler();
TestExceptionHandler handler3 = new TestExceptionHandler();
DefaultExceptionHandlerConfig config1 = new DefaultExceptionHandlerConfig(handler1, FileNotFoundException.class);
DefaultExceptionHandlerConfig config2 = new DefaultExceptionHandlerConfig(handler2, SQLException.class);
DefaultExceptionHandlerConfig config3 = new DefaultExceptionHandlerConfig(handler3, IOException.class);
module.addExceptionHandler(config1);
module.addExceptionHandler(config2);
module.addExceptionHandler(config3);
IOException ioException = new IOException();
ActionForward forward = module.actionPerform(new TestFailureAction(ioException));
assertEquals("testname", forward.getName());
assertFalse(handler1.wasExecuteCalled());
assertFalse(handler2.wasExecuteCalled());
assertTrue(handler3.wasExecuteCalled());
assertSame(ioException, handler3.getException());
handler3.reset();
FileNotFoundException fileNotFoundException = new FileNotFoundException();
forward = module.actionPerform(new TestFailureAction(fileNotFoundException));
assertEquals("testname", forward.getName());
assertTrue(handler1.wasExecuteCalled());
assertFalse(handler2.wasExecuteCalled());
assertFalse(handler3.wasExecuteCalled());
assertSame(fileNotFoundException, handler1.getException());
handler1.reset();
SQLException sqlException = new SQLException();
forward = module.actionPerform(new TestFailureAction(sqlException));
assertEquals("testname", forward.getName());
assertFalse(handler1.wasExecuteCalled());
assertTrue(handler2.wasExecuteCalled());
assertFalse(handler3.wasExecuteCalled());
assertSame(sqlException, handler2.getException());
handler2.reset();
Exception exception = new Exception();
try
{
module.actionPerform(new TestFailureAction(exception));
fail();
}
catch(NestedApplicationException exc)
{
assertSame(exception, exc.getRootCause());
}
}
public void testExceptionHandlerActionForward()
{
TestExceptionHandlerConfig config1 = new TestExceptionHandlerConfig(true, new MockActionForward("test"));
TestExceptionHandlerConfig config2 = new TestExceptionHandlerConfig(false, new Integer(1));
module.addExceptionHandler(config1);
module.addExceptionHandler(config2);
ActionForward forward = module.actionPerform(new TestFailureAction(new Exception()));
assertEquals("test", forward.getName());
assertSame(forward, module.getActionForward());
config1.setCanHandle(false);
config2.setCanHandle(true);
assertNull(module.actionPerform(new TestFailureAction(new Exception())));
assertNull(module.getActionForward());
}
public void testNestedException()
{
try
{
module.actionPerform(TestFailureAction.class);
fail();
}
catch(NestedApplicationException exc)
{
assertEquals("Expected", exc.getRootCause().getMessage());
}
}
public static class TestMappingAction extends Action
{
private ActionMapping mapping;
public ActionMapping getActionMapping()
{
return mapping;
}
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
this.mapping = mapping;
return mapping.findForward("success");
}
}
public static class TestFailureAction extends Action
{
private Exception exception;
public TestFailureAction()
{
exception = new Exception("Expected");
}
public TestFailureAction(Exception exception)
{
this.exception = exception;
}
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
throw exception;
}
}
public static class TestAction extends Action
{
private MessageResources resources;
private MessageResources resourcesForKey;
private Locale locale;
private HttpServletRequest request;
private HttpServletResponse response;
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
resources = getResources(request);
resourcesForKey = getResources(request, "test");
locale = getLocale(request);
this.request = request;
this.response = response;
return mapping.findForward("success");
}
public HttpServletRequest getRequest()
{
return request;
}
public HttpServletResponse getResponse()
{
return response;
}
public MessageResources getTestResourcesForKey()
{
return resourcesForKey;
}
public MessageResources getTestResources()
{
return resources;
}
public Locale getTestLocale()
{
return locale;
}
}
public static class TestForwardAction extends Action
{
private ActionForward forward;
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
if(null != forward) return forward;
return mapping.findForward("success");
}
public void setActionForward(ActionForward forward)
{
this.forward = forward;
}
}
public static class TestMappingForm extends ActionForm
{
private ActionMapping resetMapping;
private ActionMapping validateMapping;
public ActionMapping getResetActionMapping()
{
return resetMapping;
}
public ActionMapping getValidateActionMapping()
{
return validateMapping;
}
public void reset(ActionMapping mapping, HttpServletRequest request)
{
resetMapping = mapping;
}
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
{
validateMapping = mapping;
return null;
}
}
public static class TestForm extends ActionForm
{
private boolean validationOk = true;
private Map mappedProperties = new HashMap();
private String property;
private Map indexedProperties = new HashMap();
private TestNested nested = new TestNested();
private boolean resetCalled = false;
public ActionServlet getServlet()
{
return super.getServlet();
}
public void setValidationOk(boolean validationOk)
{
this.validationOk = validationOk;
}
public String getProperty()
{
return property;
}
public void setProperty(String string)
{
property = string;
}
public String getIndexedProperty(int index)
{
return (String)indexedProperties.get(new Integer(index));
}
public void setIndexedProperty(int index, String string)
{
indexedProperties.put(new Integer(index), string);
}
public Object getValue(String name)
{
return mappedProperties.get(name);
}
public void setValue(String name, Object value)
{
mappedProperties.put(name, value);
}
public TestNested getNested()
{
return nested;
}
public void setNested(TestNested nested)
{
this.nested = nested;
}
public boolean wasResetCalled()
{
return resetCalled;
}
public void reset(ActionMapping mapping, HttpServletRequest request)
{
super.reset(mapping, request);
resetCalled = true;
}
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
{
ActionErrors errors = new ActionErrors();
if(!validationOk)
{
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("testkey"));
}
return errors;
}
}
public static class TestDynaForm extends DynaActionForm
{
}
public static class TestValidatorForm extends ValidatorForm
{
private String firstName;
private String lastName;
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public void setFirstName(String firstName)
{
this.firstName = firstName;
}
public void setLastName(String lastName)
{
this.lastName = lastName;
}
}
public static class TestNested
{
private String property;
public String getProperty()
{
return property;
}
public void setProperty(String string)
{
property = string;
}
}
public static class TestMapping extends ActionMapping
{
}
public static class TestExceptionHandler extends ExceptionHandler
{
private boolean executeCalled = false;
private Exception exception;
public ActionForward execute(Exception exc, ExceptionConfig config, ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException
{
executeCalled = true;
exception = exc;
return new MockActionForward("testname");
}
public void reset()
{
executeCalled = false;
exception = null;
}
public Exception getException()
{
return exception;
}
public boolean wasExecuteCalled()
{
return executeCalled;
}
}
public static class TestExceptionHandlerConfig implements ExceptionHandlerConfig
{
private boolean canHandle;
private Object returnValue;
public TestExceptionHandlerConfig(boolean handle, Object value)
{
canHandle = handle;
returnValue = value;
}
public void setCanHandle(boolean canHandle)
{
this.canHandle = canHandle;
}
public boolean canHandle(Exception exception)
{
return canHandle;
}
public Object handle(Exception exception, ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
{
return returnValue;
}
}
}