View Javadoc

1   /*
2    * $Id: MessageStoreInterceptorTest.java 440597 2006-09-06 03:34:39Z wsmoak $
3    *
4    * Copyright 2006 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
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  		// Mock (ActionInvocation)
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 }