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