1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.interceptor;
23
24 import java.util.HashMap;
25 import java.util.Map;
26
27 import javax.servlet.http.HttpServletRequest;
28 import javax.servlet.http.HttpSession;
29
30 import org.apache.struts2.ServletActionContext;
31 import org.apache.struts2.StrutsTestCase;
32 import org.apache.struts2.TestConfigurationProvider;
33 import org.apache.struts2.util.TokenHelper;
34 import org.apache.struts2.views.jsp.StrutsMockHttpServletRequest;
35 import org.apache.struts2.views.jsp.StrutsMockHttpSession;
36
37 import com.opensymphony.xwork2.Action;
38 import com.opensymphony.xwork2.ActionContext;
39 import com.opensymphony.xwork2.ActionProxy;
40 import com.opensymphony.xwork2.ActionProxyFactory;
41 import com.opensymphony.xwork2.config.ConfigurationManager;
42 import com.opensymphony.xwork2.util.ValueStack;
43 import com.opensymphony.xwork2.util.ValueStackFactory;
44
45
46 /***
47 * TokenInterceptorTest
48 */
49 public class TokenInterceptorTest extends StrutsTestCase {
50
51 ActionContext oldContext;
52 HttpSession httpSession;
53 Map extraContext;
54 Map params;
55 Map session;
56 StrutsMockHttpServletRequest request;
57
58
59 public void testNoTokenInParams() throws Exception {
60 ActionProxy proxy = buildProxy(getActionName());
61 assertEquals(TokenInterceptor.INVALID_TOKEN_CODE, proxy.execute());
62 }
63
64 public void testNoTokenInSession() throws Exception {
65 assertEquals(oldContext, ActionContext.getContext());
66
67 ActionProxy proxy = buildProxy(getActionName());
68 setToken(request);
69 ActionContext.getContext().getSession().clear();
70 assertEquals(TokenInterceptor.INVALID_TOKEN_CODE, proxy.execute());
71 }
72
73 public void testTokenInterceptorSuccess() throws Exception {
74 ActionProxy proxy = buildProxy(getActionName());
75 setToken(request);
76 assertEquals(Action.SUCCESS, proxy.execute());
77 }
78
79 public void testCAllExecute2Times() throws Exception {
80 ActionProxy proxy = buildProxy(getActionName());
81 setToken(request);
82 assertEquals(Action.SUCCESS, proxy.execute());
83
84 ActionProxy proxy2 = buildProxy(getActionName());
85
86
87 assertEquals(TokenInterceptor.INVALID_TOKEN_CODE, proxy2.execute());
88 }
89
90 protected String getActionName() {
91 return TestConfigurationProvider.TOKEN_ACTION_NAME;
92 }
93
94 protected String setToken(HttpServletRequest request) {
95 String token = TokenHelper.setToken();
96 setToken(token);
97
98 return token;
99 }
100
101 protected void setToken(String token) {
102 request.getParameterMap().put(TokenHelper.TOKEN_NAME_FIELD, new String[]{
103 TokenHelper.DEFAULT_TOKEN_NAME
104 });
105 request.getParameterMap().put(TokenHelper.DEFAULT_TOKEN_NAME, new String[]{
106 token
107 });
108 }
109
110 protected void setUp() throws Exception {
111 loadConfigurationProviders(new TestConfigurationProvider());
112
113 session = new HashMap();
114 params = new HashMap();
115 extraContext = new HashMap();
116 extraContext.put(ActionContext.SESSION, session);
117 extraContext.put(ActionContext.PARAMETERS, params);
118
119 request = new StrutsMockHttpServletRequest();
120 httpSession = new StrutsMockHttpSession();
121 request.setSession(httpSession);
122 request.setParameterMap(params);
123 extraContext.put(ServletActionContext.HTTP_REQUEST, request);
124
125 ValueStack stack = ActionContext.getContext().getValueStack();
126 stack.getContext().putAll(extraContext);
127 oldContext = new ActionContext(stack.getContext());
128 ActionContext.setContext(oldContext);
129 }
130
131 protected ActionProxy buildProxy(String actionName) throws Exception {
132 return actionProxyFactory.createActionProxy("", actionName, extraContext, true, true);
133 }
134 }