1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.struts2.interceptor;
19
20 import java.util.ArrayList;
21 import java.util.HashMap;
22 import java.util.LinkedHashMap;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.struts2.StrutsTestCase;
27 import org.easymock.EasyMock;
28
29 import com.opensymphony.xwork2.Action;
30 import com.opensymphony.xwork2.ActionContext;
31 import com.opensymphony.xwork2.ActionInvocation;
32 import com.opensymphony.xwork2.ActionSupport;
33
34
35 /***
36 * Test case for MessageStoreInterceptor.
37 *
38 * @version $Date: 2006-09-05 23:34:39 -0400 (Tue, 05 Sep 2006) $ $Id: MessageStoreInterceptorTest.java 440597 2006-09-06 03:34:39Z wsmoak $
39 */
40 public class MessageStoreInterceptorTest extends StrutsTestCase {
41
42 public void testStoreMessage() throws Exception {
43 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
44 interceptor.setAllowRequestParameterSwitch(true);
45 interceptor.setOperationMode(MessageStoreInterceptor.STORE_MODE);
46
47
48 Map paramMap = new LinkedHashMap();
49 Map sessionMap = new LinkedHashMap();
50
51 ActionSupport action = new ActionSupport();
52 action.addActionError("some action error 1");
53 action.addActionError("some action error 2");
54 action.addActionMessage("some action message 1");
55 action.addActionMessage("some action message 2");
56 action.addFieldError("field1", "some field error 1");
57 action.addFieldError("field2", "some field error 2");
58
59 ActionContext actionContext = new ActionContext(new HashMap());
60 actionContext.put(ActionContext.PARAMETERS, paramMap);
61 actionContext.put(ActionContext.SESSION, sessionMap);
62
63
64 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
65 mockActionInvocation.getInvocationContext();
66 EasyMock.expectLastCall().andReturn(actionContext);
67 EasyMock.expectLastCall().anyTimes();
68
69 mockActionInvocation.invoke();
70 EasyMock.expectLastCall().andReturn(Action.SUCCESS);
71
72 mockActionInvocation.getAction();
73 EasyMock.expectLastCall().andReturn(action);
74
75
76 EasyMock.replay(mockActionInvocation);
77
78 interceptor.init();
79 interceptor.intercept(mockActionInvocation);
80 interceptor.destroy();
81
82 assertEquals(sessionMap.size(), 3);
83 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionErrorsSessionKey));
84 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionMessagesSessionKey));
85 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.fieldErrorsSessionKey));
86
87 List actionErrors = (List) sessionMap.get(MessageStoreInterceptor.actionErrorsSessionKey);
88 List actionMessages = (List) sessionMap.get(MessageStoreInterceptor.actionMessagesSessionKey);
89 Map fieldErrors = (Map) sessionMap.get(MessageStoreInterceptor.fieldErrorsSessionKey);
90
91 assertEquals(actionErrors.size(), 2);
92 assertEquals(actionMessages.size(), 2);
93 assertEquals(fieldErrors.size(), 2);
94
95 assertTrue(actionErrors.contains("some action error 1"));
96 assertTrue(actionErrors.contains("some action error 2"));
97 assertTrue(actionMessages.contains("some action message 1"));
98 assertTrue(actionMessages.contains("some action message 2"));
99 assertTrue(fieldErrors.containsKey("field1"));
100 assertTrue(fieldErrors.containsKey("field2"));
101 assertEquals(((List)fieldErrors.get("field1")).size(), 1);
102 assertEquals(((List)fieldErrors.get("field2")).size(), 1);
103 assertEquals(((List)fieldErrors.get("field1")).get(0), "some field error 1");
104 assertEquals(((List)fieldErrors.get("field2")).get(0), "some field error 2");
105
106 EasyMock.verify(mockActionInvocation);
107 }
108
109 public void testRetrieveMessage() throws Exception {
110 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
111 interceptor.setOperationMode(MessageStoreInterceptor.RETRIEVE_MODE);
112 interceptor.setAllowRequestParameterSwitch(true);
113
114
115 ActionSupport action = new ActionSupport();
116
117 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
118 mockActionInvocation.invoke();
119 EasyMock.expectLastCall().andReturn(Action.SUCCESS);
120
121 Map paramsMap = new LinkedHashMap();
122 Map sessionMap = new LinkedHashMap();
123
124 List actionErrors = new ArrayList();
125 List actionMessages = new ArrayList();
126 Map fieldErrors = new LinkedHashMap();
127
128 actionErrors.add("some action error 1");
129 actionErrors.add("some action error 2");
130 actionMessages.add("some action messages 1");
131 actionMessages.add("some action messages 2");
132 List field1Errors = new ArrayList();
133 field1Errors.add("some field error 1");
134 List field2Errors = new ArrayList();
135 field2Errors.add("some field error 2");
136 fieldErrors.put("field1", field1Errors);
137 fieldErrors.put("field2", field2Errors);
138
139 sessionMap.put(MessageStoreInterceptor.actionErrorsSessionKey, actionErrors);
140 sessionMap.put(MessageStoreInterceptor.actionMessagesSessionKey, actionMessages);
141 sessionMap.put(MessageStoreInterceptor.fieldErrorsSessionKey, fieldErrors);
142
143
144 ActionContext actionContext = new ActionContext(new HashMap());
145 actionContext.put(ActionContext.PARAMETERS, paramsMap);
146 actionContext.put(ActionContext.SESSION, sessionMap);
147
148 mockActionInvocation.getInvocationContext();
149 EasyMock.expectLastCall().andReturn(actionContext);
150 EasyMock.expectLastCall().anyTimes();
151
152 mockActionInvocation.getAction();
153 EasyMock.expectLastCall().andReturn(action);
154
155 EasyMock.replay(mockActionInvocation);
156
157 interceptor.init();
158 interceptor.intercept(mockActionInvocation);
159 interceptor.destroy();
160
161 assertEquals(action.getActionErrors().size(), 2);
162 assertEquals(action.getActionMessages().size(), 2);
163 assertEquals(action.getFieldErrors().size(), 2);
164 assertTrue(action.getActionErrors().contains("some action error 1"));
165 assertTrue(action.getActionErrors().contains("some action error 2"));
166 assertTrue(action.getActionMessages().contains("some action messages 1"));
167 assertTrue(action.getActionMessages().contains("some action messages 2"));
168 assertEquals(((List)action.getFieldErrors().get("field1")).size(), 1);
169 assertEquals(((List)action.getFieldErrors().get("field2")).size(), 1);
170 assertEquals(((List)action.getFieldErrors().get("field1")).get(0), "some field error 1");
171 assertEquals(((List)action.getFieldErrors().get("field2")).get(0), "some field error 2");
172
173 EasyMock.verify(mockActionInvocation);
174 }
175
176 public void testRequestOperationMode1() throws Exception {
177
178 Map paramMap = new LinkedHashMap();
179 paramMap.put("operationMode", new String[] { MessageStoreInterceptor.RETRIEVE_MODE });
180
181 ActionContext actionContext = new ActionContext(new HashMap());
182 actionContext.put(ActionContext.PARAMETERS, paramMap);
183
184 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
185 mockActionInvocation.getInvocationContext();
186 EasyMock.expectLastCall().andReturn(actionContext);
187 EasyMock.expectLastCall().anyTimes();
188
189 EasyMock.replay(mockActionInvocation);
190
191 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
192 String operationMode = interceptor.getRequestOperationMode(mockActionInvocation);
193
194 assertEquals(operationMode, MessageStoreInterceptor.RETRIEVE_MODE);
195
196 EasyMock.verify(mockActionInvocation);
197 }
198
199 public void testRequestOperationMode2() throws Exception {
200
201 Map paramMap = new LinkedHashMap();
202 paramMap.put("operationMode", new String[] { MessageStoreInterceptor.STORE_MODE });
203
204 ActionContext actionContext = new ActionContext(new HashMap());
205 actionContext.put(ActionContext.PARAMETERS, paramMap);
206
207 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
208 mockActionInvocation.getInvocationContext();
209 EasyMock.expectLastCall().andReturn(actionContext);
210 EasyMock.expectLastCall().anyTimes();
211
212 EasyMock.replay(mockActionInvocation);
213
214 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
215 String operationMode = interceptor.getRequestOperationMode(mockActionInvocation);
216
217 assertEquals(operationMode, MessageStoreInterceptor.STORE_MODE);
218
219 EasyMock.verify(mockActionInvocation);
220 }
221
222 public void testRequestOperationMode3() throws Exception {
223
224 Map paramMap = new LinkedHashMap();
225
226 ActionContext actionContext = new ActionContext(new HashMap());
227 actionContext.put(ActionContext.PARAMETERS, paramMap);
228
229 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
230 mockActionInvocation.getInvocationContext();
231 EasyMock.expectLastCall().andReturn(actionContext);
232 EasyMock.expectLastCall().anyTimes();
233
234 EasyMock.replay(mockActionInvocation);
235
236 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
237 String operationMode = interceptor.getRequestOperationMode(mockActionInvocation);
238
239 assertEquals(operationMode, MessageStoreInterceptor.NONE);
240
241 EasyMock.verify(mockActionInvocation);
242
243 }
244 }