1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.struts2.interceptor;
22
23 import java.util.Collections;
24 import java.util.Map;
25
26 import javax.servlet.http.Cookie;
27
28 import org.easymock.MockControl;
29 import org.springframework.mock.web.MockHttpServletRequest;
30
31 import org.apache.struts2.ServletActionContext;
32 import org.apache.struts2.StrutsTestCase;
33 import com.opensymphony.xwork2.Action;
34 import com.opensymphony.xwork2.ActionContext;
35 import com.opensymphony.xwork2.ActionInvocation;
36 import com.opensymphony.xwork2.ActionSupport;
37
38 public class CookieInterceptorTest extends StrutsTestCase {
39
40
41 public void testIntercepDefault() throws Exception {
42 MockHttpServletRequest request = new MockHttpServletRequest();
43 request.setCookies(new Cookie[] {
44 new Cookie("cookie1", "cookie1value"),
45 new Cookie("cookie2", "cookie2value"),
46 new Cookie("cookie3", "cookie3value")
47 });
48 ServletActionContext.setRequest(request);
49
50 MockActionWithCookieAware action = new MockActionWithCookieAware();
51
52 ActionContext.getContext().getValueStack().push(action);
53
54 MockControl actionInvocationControl = MockControl.createControl(ActionInvocation.class);
55 ActionInvocation invocation = (ActionInvocation) actionInvocationControl.getMock();
56 actionInvocationControl.expectAndDefaultReturn(
57 invocation.getAction(), action);
58 actionInvocationControl.expectAndDefaultReturn(
59 invocation.invoke(), Action.SUCCESS);
60
61 actionInvocationControl.replay();
62
63
64 CookieInterceptor interceptor = new CookieInterceptor();
65 interceptor.intercept(invocation);
66
67 assertTrue(action.getCookiesMap().isEmpty());
68 assertNull(action.getCookie1(), null);
69 assertNull(action.getCookie2(), null);
70 assertNull(action.getCookie3(), null);
71 assertNull(ActionContext.getContext().getValueStack().findValue("cookie1"));
72 assertNull(ActionContext.getContext().getValueStack().findValue("cookie2"));
73 assertNull(ActionContext.getContext().getValueStack().findValue("cookie3"));
74 }
75
76 public void testInterceptAll1() throws Exception {
77 MockHttpServletRequest request = new MockHttpServletRequest();
78 request.setCookies(new Cookie[] {
79 new Cookie("cookie1", "cookie1value"),
80 new Cookie("cookie2", "cookie2value"),
81 new Cookie("cookie3", "cookie3value")
82 });
83 ServletActionContext.setRequest(request);
84
85 MockActionWithCookieAware action = new MockActionWithCookieAware();
86
87 ActionContext.getContext().getValueStack().push(action);
88
89 MockControl actionInvocationControl = MockControl.createControl(ActionInvocation.class);
90 ActionInvocation invocation = (ActionInvocation) actionInvocationControl.getMock();
91 actionInvocationControl.expectAndDefaultReturn(
92 invocation.getAction(), action);
93 actionInvocationControl.expectAndDefaultReturn(
94 invocation.invoke(), Action.SUCCESS);
95
96 actionInvocationControl.replay();
97
98 CookieInterceptor interceptor = new CookieInterceptor();
99 interceptor.setCookiesName("*");
100 interceptor.setCookiesValue("*");
101 interceptor.intercept(invocation);
102
103 assertFalse(action.getCookiesMap().isEmpty());
104 assertEquals(action.getCookiesMap().size(), 3);
105 assertEquals(action.getCookiesMap().get("cookie1"), "cookie1value");
106 assertEquals(action.getCookiesMap().get("cookie2"), "cookie2value");
107 assertEquals(action.getCookiesMap().get("cookie3"), "cookie3value");
108 assertEquals(action.getCookie1(), "cookie1value");
109 assertEquals(action.getCookie2(), "cookie2value");
110 assertEquals(action.getCookie3(), "cookie3value");
111 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie1"), "cookie1value");
112 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie2"), "cookie2value");
113 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie3"), "cookie3value");
114 }
115
116
117 public void testInterceptAll2() throws Exception {
118 MockHttpServletRequest request = new MockHttpServletRequest();
119 request.setCookies(new Cookie[] {
120 new Cookie("cookie1", "cookie1value"),
121 new Cookie("cookie2", "cookie2value"),
122 new Cookie("cookie3", "cookie3value")
123 });
124 ServletActionContext.setRequest(request);
125
126 MockActionWithCookieAware action = new MockActionWithCookieAware();
127
128 ActionContext.getContext().getValueStack().push(action);
129
130 MockControl actionInvocationControl = MockControl.createControl(ActionInvocation.class);
131 ActionInvocation invocation = (ActionInvocation) actionInvocationControl.getMock();
132 actionInvocationControl.expectAndDefaultReturn(
133 invocation.getAction(), action);
134 actionInvocationControl.expectAndDefaultReturn(
135 invocation.invoke(), Action.SUCCESS);
136
137 actionInvocationControl.replay();
138
139 CookieInterceptor interceptor = new CookieInterceptor();
140 interceptor.setCookiesName("cookie1, cookie2, cookie3");
141 interceptor.setCookiesValue("cookie1value, cookie2value, cookie3value");
142 interceptor.intercept(invocation);
143
144 assertFalse(action.getCookiesMap().isEmpty());
145 assertEquals(action.getCookiesMap().size(), 3);
146 assertEquals(action.getCookiesMap().get("cookie1"), "cookie1value");
147 assertEquals(action.getCookiesMap().get("cookie2"), "cookie2value");
148 assertEquals(action.getCookiesMap().get("cookie3"), "cookie3value");
149 assertEquals(action.getCookie1(), "cookie1value");
150 assertEquals(action.getCookie2(), "cookie2value");
151 assertEquals(action.getCookie3(), "cookie3value");
152 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie1"), "cookie1value");
153 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie2"), "cookie2value");
154 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie3"), "cookie3value");
155 }
156
157 public void testInterceptSelectedCookiesNameOnly1() throws Exception {
158 MockHttpServletRequest request = new MockHttpServletRequest();
159 request.setCookies(new Cookie[] {
160 new Cookie("cookie1", "cookie1value"),
161 new Cookie("cookie2", "cookie2value"),
162 new Cookie("cookie3", "cookie3value")
163 });
164 ServletActionContext.setRequest(request);
165
166 MockActionWithCookieAware action = new MockActionWithCookieAware();
167
168 ActionContext.getContext().getValueStack().push(action);
169
170 MockControl actionInvocationControl = MockControl.createControl(ActionInvocation.class);
171 ActionInvocation invocation = (ActionInvocation) actionInvocationControl.getMock();
172 actionInvocationControl.expectAndDefaultReturn(
173 invocation.getAction(), action);
174 actionInvocationControl.expectAndDefaultReturn(
175 invocation.invoke(), Action.SUCCESS);
176
177 actionInvocationControl.replay();
178
179 CookieInterceptor interceptor = new CookieInterceptor();
180 interceptor.setCookiesName("cookie1, cookie3");
181 interceptor.setCookiesValue("cookie1value, cookie2value, cookie3value");
182 interceptor.intercept(invocation);
183
184 assertFalse(action.getCookiesMap().isEmpty());
185 assertEquals(action.getCookiesMap().size(), 2);
186 assertEquals(action.getCookiesMap().get("cookie1"), "cookie1value");
187 assertEquals(action.getCookiesMap().get("cookie2"), null);
188 assertEquals(action.getCookiesMap().get("cookie3"), "cookie3value");
189 assertEquals(action.getCookie1(), "cookie1value");
190 assertEquals(action.getCookie2(), null);
191 assertEquals(action.getCookie3(), "cookie3value");
192 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie1"), "cookie1value");
193 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie2"), null);
194 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie3"), "cookie3value");
195 }
196
197 public void testInterceptSelectedCookiesNameOnly2() throws Exception {
198 MockHttpServletRequest request = new MockHttpServletRequest();
199 request.setCookies(new Cookie[] {
200 new Cookie("cookie1", "cookie1value"),
201 new Cookie("cookie2", "cookie2value"),
202 new Cookie("cookie3", "cookie3value")
203 });
204 ServletActionContext.setRequest(request);
205
206 MockActionWithCookieAware action = new MockActionWithCookieAware();
207
208 ActionContext.getContext().getValueStack().push(action);
209
210 MockControl actionInvocationControl = MockControl.createControl(ActionInvocation.class);
211 ActionInvocation invocation = (ActionInvocation) actionInvocationControl.getMock();
212 actionInvocationControl.expectAndDefaultReturn(
213 invocation.getAction(), action);
214 actionInvocationControl.expectAndDefaultReturn(
215 invocation.invoke(), Action.SUCCESS);
216
217 actionInvocationControl.replay();
218
219 CookieInterceptor interceptor = new CookieInterceptor();
220 interceptor.setCookiesName("cookie1, cookie3");
221 interceptor.setCookiesValue("*");
222 interceptor.intercept(invocation);
223
224 assertFalse(action.getCookiesMap().isEmpty());
225 assertEquals(action.getCookiesMap().size(), 2);
226 assertEquals(action.getCookiesMap().get("cookie1"), "cookie1value");
227 assertEquals(action.getCookiesMap().get("cookie2"), null);
228 assertEquals(action.getCookiesMap().get("cookie3"), "cookie3value");
229 assertEquals(action.getCookie1(), "cookie1value");
230 assertEquals(action.getCookie2(), null);
231 assertEquals(action.getCookie3(), "cookie3value");
232 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie1"), "cookie1value");
233 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie2"), null);
234 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie3"), "cookie3value");
235 }
236
237 public void testInterceptSelectedCookiesNameOnly3() throws Exception {
238 MockHttpServletRequest request = new MockHttpServletRequest();
239 request.setCookies(new Cookie[] {
240 new Cookie("cookie1", "cookie1value"),
241 new Cookie("cookie2", "cookie2value"),
242 new Cookie("cookie3", "cookie3value")
243 });
244 ServletActionContext.setRequest(request);
245
246 MockActionWithCookieAware action = new MockActionWithCookieAware();
247
248 ActionContext.getContext().getValueStack().push(action);
249
250 MockControl actionInvocationControl = MockControl.createControl(ActionInvocation.class);
251 ActionInvocation invocation = (ActionInvocation) actionInvocationControl.getMock();
252 actionInvocationControl.expectAndDefaultReturn(
253 invocation.getAction(), action);
254 actionInvocationControl.expectAndDefaultReturn(
255 invocation.invoke(), Action.SUCCESS);
256
257 actionInvocationControl.replay();
258
259 CookieInterceptor interceptor = new CookieInterceptor();
260 interceptor.setCookiesName("cookie1, cookie3");
261 interceptor.setCookiesValue("");
262 interceptor.intercept(invocation);
263
264 assertFalse(action.getCookiesMap().isEmpty());
265 assertEquals(action.getCookiesMap().size(), 2);
266 assertEquals(action.getCookiesMap().get("cookie1"), "cookie1value");
267 assertEquals(action.getCookiesMap().get("cookie2"), null);
268 assertEquals(action.getCookiesMap().get("cookie3"), "cookie3value");
269 assertEquals(action.getCookie1(), "cookie1value");
270 assertEquals(action.getCookie2(), null);
271 assertEquals(action.getCookie3(), "cookie3value");
272 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie1"), "cookie1value");
273 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie2"), null);
274 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie3"), "cookie3value");
275 }
276
277
278 public void testInterceptSelectedCookiesNameAndValue() throws Exception {
279 MockHttpServletRequest request = new MockHttpServletRequest();
280 request.setCookies(new Cookie[] {
281 new Cookie("cookie1", "cookie1value"),
282 new Cookie("cookie2", "cookie2value"),
283 new Cookie("cookie3", "cookie3value")
284 });
285 ServletActionContext.setRequest(request);
286
287 MockActionWithCookieAware action = new MockActionWithCookieAware();
288
289 ActionContext.getContext().getValueStack().push(action);
290
291 MockControl actionInvocationControl = MockControl.createControl(ActionInvocation.class);
292 ActionInvocation invocation = (ActionInvocation) actionInvocationControl.getMock();
293 actionInvocationControl.expectAndDefaultReturn(
294 invocation.getAction(), action);
295 actionInvocationControl.expectAndDefaultReturn(
296 invocation.invoke(), Action.SUCCESS);
297
298 actionInvocationControl.replay();
299
300 CookieInterceptor interceptor = new CookieInterceptor();
301 interceptor.setCookiesName("cookie1, cookie3");
302 interceptor.setCookiesValue("cookie1value");
303 interceptor.intercept(invocation);
304
305 assertFalse(action.getCookiesMap().isEmpty());
306 assertEquals(action.getCookiesMap().size(), 1);
307 assertEquals(action.getCookiesMap().get("cookie1"), "cookie1value");
308 assertEquals(action.getCookiesMap().get("cookie2"), null);
309 assertEquals(action.getCookiesMap().get("cookie3"), null);
310 assertEquals(action.getCookie1(), "cookie1value");
311 assertEquals(action.getCookie2(), null);
312 assertEquals(action.getCookie3(), null);
313 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie1"), "cookie1value");
314 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie2"), null);
315 assertEquals(ActionContext.getContext().getValueStack().findValue("cookie3"), null);
316 }
317
318
319 public static class MockActionWithCookieAware extends ActionSupport implements CookiesAware {
320
321 private static final long serialVersionUID = -6202290616812813386L;
322
323 private Map cookies = Collections.EMPTY_MAP;
324 private String cookie1;
325 private String cookie2;
326 private String cookie3;
327
328 public void setCookiesMap(Map cookies) {
329 this.cookies = cookies;
330 }
331 public Map getCookiesMap() {
332 return this.cookies;
333 }
334
335 public String getCookie1() { return cookie1; }
336 public void setCookie1(String cookie1) { this.cookie1 = cookie1; }
337
338 public String getCookie2() { return cookie2; }
339 public void setCookie2(String cookie2) { this.cookie2 = cookie2; }
340
341 public String getCookie3() { return cookie3; }
342 public void setCookie3(String cookie3) { this.cookie3 = cookie3; }
343 }
344
345 }