View Javadoc

1   /*
2    * $Id: MessageStoreInterceptorTest.java 651946 2008-04-27 13:41:38Z apetrelli $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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 13:41:38 +0000 (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          // Mock (ActionInvocation)
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         // Mock (ActionInvocation)
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 }