View Javadoc

1   // Copyright 2006 Google Inc. All Rights Reserved.
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          // TODO: After we implement ActionContext.getNext(), getPrevious().
70      }
71  }
72