1
2
3 package org.apache.struts2.impl;
4
5 import static org.easymock.EasyMock.createMock;
6 import static org.easymock.EasyMock.expect;
7 import static org.easymock.EasyMock.replay;
8
9 import java.util.Arrays;
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.concurrent.Callable;
13
14 import javax.servlet.http.Cookie;
15 import javax.servlet.http.HttpServletRequest;
16
17 import junit.framework.TestCase;
18
19 import com.opensymphony.xwork2.ActionContext;
20 import com.opensymphony.xwork2.ActionInvocation;
21
22 public class RequestContextTest extends TestCase {
23
24 public void testFindCookiesForName() {
25 final HttpServletRequest servletRequest = createMock(HttpServletRequest.class);
26 Cookie one = new Cookie("foo", "one");
27 Cookie two = new Cookie("foo", "two");
28 Cookie three = new Cookie("bar", "three");
29 Cookie[] cookies = { one, two, three };
30 expect(servletRequest.getCookies()).andReturn(cookies);
31
32 replay(servletRequest);
33
34 RequestContextImpl requestContext = new RequestContextImpl(null) {
35 public HttpServletRequest getServletRequest() {
36 return servletRequest;
37 }
38 };
39
40 List<Cookie> fooCookies = Arrays.asList(one, two);
41 assertEquals(fooCookies, requestContext.findCookiesForName("foo"));
42 }
43
44 public void testInitialCallInContext() throws Exception {
45 final ActionInvocation invocation = createMock(ActionInvocation.class);
46 final ActionContext actionContext = new ActionContext(new HashMap());
47 expect(invocation.getInvocationContext()).andReturn(actionContext);
48
49 final boolean[] called = new boolean[1];
50 Callable<String> callable = new Callable<String>() {
51 public String call() throws Exception {
52 RequestContextImpl requestContext = RequestContextImpl.get();
53 assertSame(actionContext, requestContext.xworkContext);
54 assertSame(invocation,
55 ((ActionContextImpl) requestContext.getActionContext()).invocation);
56 called[0] = true;
57 return "foo";
58 }
59 };
60
61 replay(invocation);
62
63 assertEquals("foo", RequestContextImpl.callInContext(invocation, callable));
64 assertTrue(called[0]);
65 assertNull(RequestContextImpl.threadLocalRequestContext.get()[0]);
66 }
67
68 public void testNestedCallInContext() throws Exception {
69
70 }
71 }
72