1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.interceptor;
23
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.LinkedHashMap;
27 import java.util.List;
28 import java.util.Map;
29
30 import org.apache.struts2.StrutsTestCase;
31 import org.apache.struts2.dispatcher.ServletActionRedirectResult;
32 import org.easymock.EasyMock;
33
34 import com.opensymphony.xwork2.Action;
35 import com.opensymphony.xwork2.ActionContext;
36 import com.opensymphony.xwork2.ActionInvocation;
37 import com.opensymphony.xwork2.ActionSupport;
38
39
40 /***
41 * Test case for MessageStoreInterceptor.
42 *
43 * @version $Date: 2008-04-27 08:41:38 -0500 (Sun, 27 Apr 2008) $ $Id: MessageStoreInterceptorTest.java 651946 2008-04-27 13:41:38Z apetrelli $
44 */
45 public class MessageStoreInterceptorTest extends StrutsTestCase {
46
47 public void testStoreMessage() throws Exception {
48 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
49 interceptor.setAllowRequestParameterSwitch(true);
50 interceptor.setOperationMode(MessageStoreInterceptor.STORE_MODE);
51
52
53 Map paramMap = new LinkedHashMap();
54 Map sessionMap = new LinkedHashMap();
55
56 ActionSupport action = new ActionSupport();
57 action.addActionError("some action error 1");
58 action.addActionError("some action error 2");
59 action.addActionMessage("some action message 1");
60 action.addActionMessage("some action message 2");
61 action.addFieldError("field1", "some field error 1");
62 action.addFieldError("field2", "some field error 2");
63
64 ActionContext actionContext = new ActionContext(new HashMap());
65 actionContext.put(ActionContext.PARAMETERS, paramMap);
66 actionContext.put(ActionContext.SESSION, sessionMap);
67
68
69 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
70 mockActionInvocation.getInvocationContext();
71 EasyMock.expectLastCall().andReturn(actionContext);
72 EasyMock.expectLastCall().anyTimes();
73
74 mockActionInvocation.invoke();
75 EasyMock.expectLastCall().andReturn(Action.SUCCESS);
76
77 mockActionInvocation.getAction();
78 EasyMock.expectLastCall().andReturn(action);
79
80 mockActionInvocation.getResult();
81 EasyMock.expectLastCall().andReturn(new ServletActionRedirectResult());
82
83 EasyMock.replay(mockActionInvocation);
84
85 interceptor.init();
86 interceptor.intercept(mockActionInvocation);
87 interceptor.destroy();
88
89 assertEquals(sessionMap.size(), 3);
90 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionErrorsSessionKey));
91 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionMessagesSessionKey));
92 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.fieldErrorsSessionKey));
93
94 List actionErrors = (List) sessionMap.get(MessageStoreInterceptor.actionErrorsSessionKey);
95 List actionMessages = (List) sessionMap.get(MessageStoreInterceptor.actionMessagesSessionKey);
96 Map fieldErrors = (Map) sessionMap.get(MessageStoreInterceptor.fieldErrorsSessionKey);
97
98 assertEquals(actionErrors.size(), 2);
99 assertEquals(actionMessages.size(), 2);
100 assertEquals(fieldErrors.size(), 2);
101
102 assertTrue(actionErrors.contains("some action error 1"));
103 assertTrue(actionErrors.contains("some action error 2"));
104 assertTrue(actionMessages.contains("some action message 1"));
105 assertTrue(actionMessages.contains("some action message 2"));
106 assertTrue(fieldErrors.containsKey("field1"));
107 assertTrue(fieldErrors.containsKey("field2"));
108 assertEquals(((List)fieldErrors.get("field1")).size(), 1);
109 assertEquals(((List)fieldErrors.get("field2")).size(), 1);
110 assertEquals(((List)fieldErrors.get("field1")).get(0), "some field error 1");
111 assertEquals(((List)fieldErrors.get("field2")).get(0), "some field error 2");
112
113 EasyMock.verify(mockActionInvocation);
114 }
115
116 public void testRetrieveMessage() throws Exception {
117 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
118 interceptor.setOperationMode(MessageStoreInterceptor.RETRIEVE_MODE);
119 interceptor.setAllowRequestParameterSwitch(true);
120
121
122 ActionSupport action = new ActionSupport();
123
124 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
125 mockActionInvocation.invoke();
126 EasyMock.expectLastCall().andReturn(Action.SUCCESS);
127
128 Map paramsMap = new LinkedHashMap();
129 Map sessionMap = new LinkedHashMap();
130
131 List actionErrors = new ArrayList();
132 List actionMessages = new ArrayList();
133 Map fieldErrors = new LinkedHashMap();
134
135 actionErrors.add("some action error 1");
136 actionErrors.add("some action error 2");
137 actionMessages.add("some action messages 1");
138 actionMessages.add("some action messages 2");
139 List field1Errors = new ArrayList();
140 field1Errors.add("some field error 1");
141 List field2Errors = new ArrayList();
142 field2Errors.add("some field error 2");
143 fieldErrors.put("field1", field1Errors);
144 fieldErrors.put("field2", field2Errors);
145
146 sessionMap.put(MessageStoreInterceptor.actionErrorsSessionKey, actionErrors);
147 sessionMap.put(MessageStoreInterceptor.actionMessagesSessionKey, actionMessages);
148 sessionMap.put(MessageStoreInterceptor.fieldErrorsSessionKey, fieldErrors);
149
150
151 ActionContext actionContext = new ActionContext(new HashMap());
152 actionContext.put(ActionContext.PARAMETERS, paramsMap);
153 actionContext.put(ActionContext.SESSION, sessionMap);
154
155 mockActionInvocation.getInvocationContext();
156 EasyMock.expectLastCall().andReturn(actionContext);
157 EasyMock.expectLastCall().anyTimes();
158
159 mockActionInvocation.getAction();
160 EasyMock.expectLastCall().andReturn(action);
161 EasyMock.expectLastCall().anyTimes();
162
163 mockActionInvocation.getResult();
164 EasyMock.expectLastCall().andReturn(new ServletActionRedirectResult());
165
166 EasyMock.replay(mockActionInvocation);
167
168 interceptor.init();
169 interceptor.intercept(mockActionInvocation);
170 interceptor.destroy();
171
172 assertEquals(action.getActionErrors().size(), 2);
173 assertEquals(action.getActionMessages().size(), 2);
174 assertEquals(action.getFieldErrors().size(), 2);
175 assertTrue(action.getActionErrors().contains("some action error 1"));
176 assertTrue(action.getActionErrors().contains("some action error 2"));
177 assertTrue(action.getActionMessages().contains("some action messages 1"));
178 assertTrue(action.getActionMessages().contains("some action messages 2"));
179 assertEquals(((List)action.getFieldErrors().get("field1")).size(), 1);
180 assertEquals(((List)action.getFieldErrors().get("field2")).size(), 1);
181 assertEquals(((List)action.getFieldErrors().get("field1")).get(0), "some field error 1");
182 assertEquals(((List)action.getFieldErrors().get("field2")).get(0), "some field error 2");
183
184 EasyMock.verify(mockActionInvocation);
185 }
186
187 public void testAutomatic() throws Exception {
188 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
189 interceptor.setAllowRequestParameterSwitch(true);
190 interceptor.setOperationMode(MessageStoreInterceptor.AUTOMATIC_MODE);
191
192
193 Map paramMap = new LinkedHashMap();
194 Map sessionMap = new LinkedHashMap();
195
196 ActionSupport action = new ActionSupport();
197 action.addActionError("some action error 1");
198 action.addActionError("some action error 2");
199 action.addActionMessage("some action message 1");
200 action.addActionMessage("some action message 2");
201 action.addFieldError("field1", "some field error 1");
202 action.addFieldError("field2", "some field error 2");
203
204 ActionContext actionContext = new ActionContext(new HashMap());
205 actionContext.put(ActionContext.PARAMETERS, paramMap);
206 actionContext.put(ActionContext.SESSION, sessionMap);
207
208
209 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
210 mockActionInvocation.getInvocationContext();
211 EasyMock.expectLastCall().andReturn(actionContext);
212 EasyMock.expectLastCall().anyTimes();
213
214 mockActionInvocation.invoke();
215 EasyMock.expectLastCall().andReturn(Action.SUCCESS);
216
217 mockActionInvocation.getAction();
218 EasyMock.expectLastCall().andReturn(action);
219 EasyMock.expectLastCall().anyTimes();
220
221 mockActionInvocation.getResult();
222 EasyMock.expectLastCall().andReturn(new ServletActionRedirectResult());
223
224 EasyMock.replay(mockActionInvocation);
225
226 interceptor.init();
227 interceptor.intercept(mockActionInvocation);
228 interceptor.destroy();
229
230 assertEquals(3, sessionMap.size());
231 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionErrorsSessionKey));
232 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionMessagesSessionKey));
233 assertTrue(sessionMap.containsKey(MessageStoreInterceptor.fieldErrorsSessionKey));
234
235 List actionErrors = (List) sessionMap.get(MessageStoreInterceptor.actionErrorsSessionKey);
236 List actionMessages = (List) sessionMap.get(MessageStoreInterceptor.actionMessagesSessionKey);
237 Map fieldErrors = (Map) sessionMap.get(MessageStoreInterceptor.fieldErrorsSessionKey);
238
239 assertEquals(2, actionErrors.size());
240 assertEquals(2, actionMessages.size());
241 assertEquals(2, fieldErrors.size());
242
243 assertTrue(actionErrors.contains("some action error 1"));
244 assertTrue(actionErrors.contains("some action error 2"));
245 assertTrue(actionMessages.contains("some action message 1"));
246 assertTrue(actionMessages.contains("some action message 2"));
247 assertTrue(fieldErrors.containsKey("field1"));
248 assertTrue(fieldErrors.containsKey("field2"));
249 assertEquals(((List)fieldErrors.get("field1")).size(), 1);
250 assertEquals(((List)fieldErrors.get("field2")).size(), 1);
251 assertEquals(((List)fieldErrors.get("field1")).get(0), "some field error 1");
252 assertEquals(((List)fieldErrors.get("field2")).get(0), "some field error 2");
253
254 EasyMock.verify(mockActionInvocation);
255
256 action = new ActionSupport();
257
258 mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
259 mockActionInvocation.invoke();
260 EasyMock.expectLastCall().andReturn(Action.SUCCESS);
261
262 sessionMap.put(MessageStoreInterceptor.actionErrorsSessionKey, actionErrors);
263 sessionMap.put(MessageStoreInterceptor.actionMessagesSessionKey, actionMessages);
264 sessionMap.put(MessageStoreInterceptor.fieldErrorsSessionKey, fieldErrors);
265
266
267 actionContext = new ActionContext(new HashMap());
268 actionContext.put(ActionContext.PARAMETERS, paramMap);
269 actionContext.put(ActionContext.SESSION, sessionMap);
270
271 mockActionInvocation.getInvocationContext();
272 EasyMock.expectLastCall().andReturn(actionContext);
273 EasyMock.expectLastCall().anyTimes();
274
275 mockActionInvocation.getAction();
276 EasyMock.expectLastCall().andReturn(action);
277 EasyMock.expectLastCall().anyTimes();
278
279 mockActionInvocation.getResult();
280 EasyMock.expectLastCall().andReturn(new ServletActionRedirectResult());
281
282 EasyMock.replay(mockActionInvocation);
283
284 interceptor.init();
285 interceptor.intercept(mockActionInvocation);
286 interceptor.destroy();
287
288 assertEquals(action.getActionErrors().size(), 2);
289 assertEquals(action.getActionMessages().size(), 2);
290 assertEquals(action.getFieldErrors().size(), 2);
291 assertTrue(action.getActionErrors().contains("some action error 1"));
292 assertTrue(action.getActionErrors().contains("some action error 2"));
293 assertTrue(action.getActionMessages().contains("some action message 1"));
294 assertTrue(action.getActionMessages().contains("some action message 2"));
295 assertEquals(((List)action.getFieldErrors().get("field1")).size(), 1);
296 assertEquals(((List)action.getFieldErrors().get("field2")).size(), 1);
297 assertEquals(((List)action.getFieldErrors().get("field1")).get(0), "some field error 1");
298 assertEquals(((List)action.getFieldErrors().get("field2")).get(0), "some field error 2");
299
300 EasyMock.verify(mockActionInvocation);
301 }
302
303 public void testRequestOperationMode1() throws Exception {
304
305 Map paramMap = new LinkedHashMap();
306 paramMap.put("operationMode", new String[] { MessageStoreInterceptor.RETRIEVE_MODE });
307
308 ActionContext actionContext = new ActionContext(new HashMap());
309 actionContext.put(ActionContext.PARAMETERS, paramMap);
310
311 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
312 mockActionInvocation.getInvocationContext();
313 EasyMock.expectLastCall().andReturn(actionContext);
314 EasyMock.expectLastCall().anyTimes();
315
316 EasyMock.replay(mockActionInvocation);
317
318 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
319 String operationMode = interceptor.getRequestOperationMode(mockActionInvocation);
320
321 assertEquals(operationMode, MessageStoreInterceptor.RETRIEVE_MODE);
322
323 EasyMock.verify(mockActionInvocation);
324 }
325
326 public void testRequestOperationMode2() throws Exception {
327
328 Map paramMap = new LinkedHashMap();
329 paramMap.put("operationMode", new String[] { MessageStoreInterceptor.STORE_MODE });
330
331 ActionContext actionContext = new ActionContext(new HashMap());
332 actionContext.put(ActionContext.PARAMETERS, paramMap);
333
334 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
335 mockActionInvocation.getInvocationContext();
336 EasyMock.expectLastCall().andReturn(actionContext);
337 EasyMock.expectLastCall().anyTimes();
338
339 EasyMock.replay(mockActionInvocation);
340
341 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
342 String operationMode = interceptor.getRequestOperationMode(mockActionInvocation);
343
344 assertEquals(operationMode, MessageStoreInterceptor.STORE_MODE);
345
346 EasyMock.verify(mockActionInvocation);
347 }
348
349 public void testRequestOperationMode3() throws Exception {
350
351 Map paramMap = new LinkedHashMap();
352
353 ActionContext actionContext = new ActionContext(new HashMap());
354 actionContext.put(ActionContext.PARAMETERS, paramMap);
355
356 ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class);
357 mockActionInvocation.getInvocationContext();
358 EasyMock.expectLastCall().andReturn(actionContext);
359 EasyMock.expectLastCall().anyTimes();
360
361 EasyMock.replay(mockActionInvocation);
362
363 MessageStoreInterceptor interceptor = new MessageStoreInterceptor();
364 String operationMode = interceptor.getRequestOperationMode(mockActionInvocation);
365
366 assertEquals(operationMode, MessageStoreInterceptor.NONE);
367
368 EasyMock.verify(mockActionInvocation);
369
370 }
371 }