You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2016/02/04 08:20:19 UTC

[3/7] struts git commit: Adds test based on MessageStoreInterceptor

Adds test based on MessageStoreInterceptor


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/0754027a
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/0754027a
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/0754027a

Branch: refs/heads/master
Commit: 0754027a5a72357ac6ee2ef829c4d8080ad8dad4
Parents: a9b2c3c
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Feb 4 08:05:00 2016 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Feb 4 08:05:00 2016 +0100

----------------------------------------------------------------------
 .../MessageStorePreResultListenerTest.java      | 252 +++++++++++++++++++
 1 file changed, 252 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/0754027a/core/src/test/java/org/apache/struts2/interceptor/MessageStorePreResultListenerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/interceptor/MessageStorePreResultListenerTest.java b/core/src/test/java/org/apache/struts2/interceptor/MessageStorePreResultListenerTest.java
new file mode 100644
index 0000000..4e46b3a
--- /dev/null
+++ b/core/src/test/java/org/apache/struts2/interceptor/MessageStorePreResultListenerTest.java
@@ -0,0 +1,252 @@
+package org.apache.struts2.interceptor;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.StrutsInternalTestCase;
+import org.apache.struts2.result.ServletActionRedirectResult;
+import org.easymock.EasyMock;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class MessageStorePreResultListenerTest extends StrutsInternalTestCase {
+
+    public void testSessionWasInvalidated() throws Exception {
+        // given
+        ActionContext actionContext = new ActionContext(new HashMap());
+        actionContext.put(ActionContext.PARAMETERS, new LinkedHashMap());
+
+        ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
+
+        mockActionInvocation.getInvocationContext();
+        EasyMock.expectLastCall().andReturn(actionContext);
+        EasyMock.expectLastCall().anyTimes();
+
+        EasyMock.replay(mockActionInvocation);
+
+        HttpServletRequest mockedRequest = EasyMock.createControl().createMock(HttpServletRequest.class);
+        mockedRequest.getSession(false);
+        EasyMock.expectLastCall().andReturn(null);
+        EasyMock.expectLastCall().once();
+        ServletActionContext.setRequest(mockedRequest);
+
+        EasyMock.replay(mockedRequest);
+
+        HttpServletResponse mockedResponse = EasyMock.createControl().createMock(HttpServletResponse.class);
+        mockedResponse.isCommitted();
+        EasyMock.expectLastCall().andReturn(false);
+        EasyMock.expectLastCall().once();
+        ServletActionContext.setResponse(mockedResponse);
+
+        EasyMock.replay(mockedResponse);
+
+        // when
+        MessageStoreInterceptor msi = new MessageStoreInterceptor();
+        MessageStorePreResultListener listener = new MessageStorePreResultListener(msi);
+        listener.beforeResult(mockActionInvocation, Action.SUCCESS);
+
+        // then
+        EasyMock.verify(mockActionInvocation);
+        EasyMock.verify(mockedRequest);
+        EasyMock.verify(mockedResponse);
+    }
+
+    public void testResponseWasComitted() throws Exception {
+        // given
+        ActionContext actionContext = new ActionContext(new HashMap());
+        actionContext.put(ActionContext.PARAMETERS, new LinkedHashMap());
+
+        ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
+
+        mockActionInvocation.getInvocationContext();
+        EasyMock.expectLastCall().andReturn(actionContext);
+        EasyMock.expectLastCall().anyTimes();
+
+        EasyMock.replay(mockActionInvocation);
+
+        HttpServletResponse mockedResponse = EasyMock.createControl().createMock(HttpServletResponse.class);
+        mockedResponse.isCommitted();
+        EasyMock.expectLastCall().andReturn(true);
+        EasyMock.expectLastCall().once();
+        ServletActionContext.setResponse(mockedResponse);
+
+        EasyMock.replay(mockedResponse);
+
+        // when
+        MessageStoreInterceptor msi = new MessageStoreInterceptor();
+        MessageStorePreResultListener listener = new MessageStorePreResultListener(msi);
+        listener.beforeResult(mockActionInvocation, Action.SUCCESS);
+
+        // then
+        EasyMock.verify(mockActionInvocation);
+        EasyMock.verify(mockedResponse);
+    }
+
+    public void testAutomatic() throws Exception {
+        MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
+        interceptor.setOperationMode(MessageStoreInterceptor.AUTOMATIC_MODE);
+
+        MessageStorePreResultListener listener = new MessageStorePreResultListener(interceptor);
+
+        Map paramMap = new LinkedHashMap();
+        Map sessionMap = new LinkedHashMap();
+
+        ActionSupport action = new ActionSupport();
+        action.addActionError("some action error 1");
+        action.addActionError("some action error 2");
+        action.addActionMessage("some action message 1");
+        action.addActionMessage("some action message 2");
+        action.addFieldError("field1", "some field error 1");
+        action.addFieldError("field2", "some field error 2");
+
+        ActionContext actionContext = new ActionContext(new HashMap());
+        actionContext.put(ActionContext.PARAMETERS, paramMap);
+        actionContext.put(ActionContext.SESSION, sessionMap);
+
+        HttpSession mockedSession = EasyMock.createControl().createMock(HttpSession.class);
+        HttpServletRequest mockedRequest = EasyMock.createControl().createMock(HttpServletRequest.class);
+        mockedRequest.getSession(false);
+        EasyMock.expectLastCall().andReturn(mockedSession);
+        EasyMock.expectLastCall().once();
+        ServletActionContext.setRequest(mockedRequest);
+
+        EasyMock.replay(mockedRequest);
+
+        HttpServletResponse mockedResponse = EasyMock.createControl().createMock(HttpServletResponse.class);
+        mockedResponse.isCommitted();
+        EasyMock.expectLastCall().andReturn(false);
+        EasyMock.expectLastCall().once();
+        ServletActionContext.setResponse(mockedResponse);
+
+        EasyMock.replay(mockedResponse);
+
+        // Mock (ActionInvocation)
+        ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
+        mockActionInvocation.getInvocationContext();
+        EasyMock.expectLastCall().andReturn(actionContext);
+        EasyMock.expectLastCall().anyTimes();
+
+        mockActionInvocation.getAction();
+        EasyMock.expectLastCall().andReturn(action);
+        EasyMock.expectLastCall().anyTimes();
+
+        mockActionInvocation.getResult();
+        EasyMock.expectLastCall().andReturn(new ServletActionRedirectResult());
+
+        EasyMock.replay(mockActionInvocation);
+
+        interceptor.init();
+        listener.beforeResult(mockActionInvocation, Action.SUCCESS);
+
+        List actionErrors = (List) sessionMap.get(MessageStoreInterceptor.actionErrorsSessionKey);
+        List actionMessages = (List) sessionMap.get(MessageStoreInterceptor.actionMessagesSessionKey);
+        Map fieldErrors = (Map) sessionMap.get(MessageStoreInterceptor.fieldErrorsSessionKey);
+
+        assertEquals(actionErrors.size(), 2);
+        assertEquals(actionMessages.size(), 2);
+        assertEquals(fieldErrors.size(), 2);
+        assertTrue(actionErrors.contains("some action error 1"));
+        assertTrue(actionErrors.contains("some action error 2"));
+        assertTrue(actionMessages.contains("some action message 1"));
+        assertTrue(actionMessages.contains("some action message 2"));
+        assertEquals(((List) fieldErrors.get("field1")).size(), 1);
+        assertEquals(((List) fieldErrors.get("field2")).size(), 1);
+        assertEquals(((List) fieldErrors.get("field1")).get(0), "some field error 1");
+        assertEquals(((List) fieldErrors.get("field2")).get(0), "some field error 2");
+
+        EasyMock.verify(mockActionInvocation);
+    }
+
+    public void testStoreMessage() throws Exception {
+        MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
+        interceptor.setAllowRequestParameterSwitch(true);
+        interceptor.setOperationMode(MessageStoreInterceptor.STORE_MODE);
+
+        MessageStorePreResultListener listener = new MessageStorePreResultListener(interceptor);
+
+        Map paramMap = new LinkedHashMap();
+        Map sessionMap = new LinkedHashMap();
+
+        ActionSupport action = new ActionSupport();
+        action.addActionError("some action error 1");
+        action.addActionError("some action error 2");
+        action.addActionMessage("some action message 1");
+        action.addActionMessage("some action message 2");
+        action.addFieldError("field1", "some field error 1");
+        action.addFieldError("field2", "some field error 2");
+
+        ActionContext actionContext = new ActionContext(new HashMap());
+        actionContext.put(ActionContext.PARAMETERS, paramMap);
+        actionContext.put(ActionContext.SESSION, sessionMap);
+
+        HttpSession mockedSession = EasyMock.createControl().createMock(HttpSession.class);
+        HttpServletRequest mockedRequest = EasyMock.createControl().createMock(HttpServletRequest.class);
+        mockedRequest.getSession(false);
+        EasyMock.expectLastCall().andReturn(mockedSession);
+        EasyMock.expectLastCall().once();
+        ServletActionContext.setRequest(mockedRequest);
+
+        EasyMock.replay(mockedRequest);
+
+        HttpServletResponse mockedResponse = EasyMock.createControl().createMock(HttpServletResponse.class);
+        mockedResponse.isCommitted();
+        EasyMock.expectLastCall().andReturn(false);
+        EasyMock.expectLastCall().once();
+        ServletActionContext.setResponse(mockedResponse);
+
+        EasyMock.replay(mockedResponse);
+
+        // Mock (ActionInvocation)
+        ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
+        mockActionInvocation.getInvocationContext();
+        EasyMock.expectLastCall().andReturn(actionContext);
+        EasyMock.expectLastCall().anyTimes();
+
+        mockActionInvocation.getAction();
+        EasyMock.expectLastCall().andReturn(action);
+
+        mockActionInvocation.getResult();
+        EasyMock.expectLastCall().andReturn(new ServletActionRedirectResult());
+
+        EasyMock.replay(mockActionInvocation);
+
+        interceptor.init();
+        listener.beforeResult(mockActionInvocation, Action.SUCCESS);
+
+        assertEquals(sessionMap.size(), 3);
+        assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionErrorsSessionKey));
+        assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionMessagesSessionKey));
+        assertTrue(sessionMap.containsKey(MessageStoreInterceptor.fieldErrorsSessionKey));
+
+        List actionErrors = (List) sessionMap.get(MessageStoreInterceptor.actionErrorsSessionKey);
+        List actionMessages = (List) sessionMap.get(MessageStoreInterceptor.actionMessagesSessionKey);
+        Map fieldErrors = (Map) sessionMap.get(MessageStoreInterceptor.fieldErrorsSessionKey);
+
+        assertEquals(actionErrors.size(), 2);
+        assertEquals(actionMessages.size(), 2);
+        assertEquals(fieldErrors.size(), 2);
+
+        assertTrue(actionErrors.contains("some action error 1"));
+        assertTrue(actionErrors.contains("some action error 2"));
+        assertTrue(actionMessages.contains("some action message 1"));
+        assertTrue(actionMessages.contains("some action message 2"));
+        assertTrue(fieldErrors.containsKey("field1"));
+        assertTrue(fieldErrors.containsKey("field2"));
+        assertEquals(((List)fieldErrors.get("field1")).size(), 1);
+        assertEquals(((List)fieldErrors.get("field2")).size(), 1);
+        assertEquals(((List)fieldErrors.get("field1")).get(0), "some field error 1");
+        assertEquals(((List)fieldErrors.get("field2")).get(0), "some field error 2");
+
+        EasyMock.verify(mockActionInvocation);
+    }
+
+
+}
\ No newline at end of file