1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.struts2.dispatcher.mapper;
19
20 import java.util.HashMap;
21 import java.util.Map;
22
23 import org.apache.struts2.StrutsConstants;
24 import org.apache.struts2.StrutsTestCase;
25 import org.apache.struts2.dispatcher.ServletRedirectResult;
26 import org.apache.struts2.views.jsp.StrutsMockHttpServletRequest;
27
28 import com.mockobjects.servlet.MockHttpServletRequest;
29 import com.opensymphony.xwork2.Result;
30 import com.opensymphony.xwork2.config.Configuration;
31 import com.opensymphony.xwork2.config.ConfigurationManager;
32 import com.opensymphony.xwork2.config.entities.PackageConfig;
33 import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
34
35 /***
36 * DefaultActionMapper test case.
37 *
38 */
39 public class DefaultActionMapperTest extends StrutsTestCase {
40
41 private MockHttpServletRequest req;
42 private ConfigurationManager configManager;
43 private Configuration config;
44
45 protected void setUp() throws Exception {
46 super.setUp();
47 req = new MockHttpServletRequest();
48 req.setupGetParameterMap(new HashMap());
49 req.setupGetContextPath("/my/namespace");
50
51 config = new DefaultConfiguration();
52 PackageConfig pkg = new PackageConfig("myns", "/my/namespace", false, null);
53 PackageConfig pkg2 = new PackageConfig("my", "/my", false, null);
54 config.addPackageConfig("mvns", pkg);
55 config.addPackageConfig("my", pkg2);
56 configManager = new ConfigurationManager() {
57 public Configuration getConfiguration() {
58 return config;
59 }
60 };
61 }
62
63 public void testGetMapping() throws Exception {
64 setUp();
65 req.setupGetRequestURI("/my/namespace/actionName.action");
66 req.setupGetServletPath("/my/namespace/actionName.action");
67 req.setupGetAttribute(null);
68 req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
69
70 DefaultActionMapper mapper = new DefaultActionMapper();
71 ActionMapping mapping = mapper.getMapping(req, configManager);
72
73 assertEquals("/my/namespace", mapping.getNamespace());
74 assertEquals("actionName", mapping.getName());
75 assertNull(mapping.getMethod());
76 }
77
78 public void testGetMappingWithMethod() throws Exception {
79 req.setupGetParameterMap(new HashMap());
80 req.setupGetRequestURI("/my/namespace/actionName!add.action");
81 req.setupGetServletPath("/my/namespace/actionName!add.action");
82 req.setupGetAttribute(null);
83 req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
84
85 DefaultActionMapper mapper = new DefaultActionMapper();
86 ActionMapping mapping = mapper.getMapping(req, configManager);
87
88 assertEquals("/my/namespace", mapping.getNamespace());
89 assertEquals("actionName", mapping.getName());
90 assertEquals("add", mapping.getMethod());
91 }
92
93 public void testGetMappingWithSlashedName() throws Exception {
94 setUp();
95 req.setupGetRequestURI("/my/foo/actionName.action");
96 req.setupGetServletPath("/my/foo/actionName.action");
97 req.setupGetAttribute(null);
98 req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
99
100 DefaultActionMapper mapper = new DefaultActionMapper();
101 ActionMapping mapping = mapper.getMapping(req, configManager);
102
103 assertEquals("/my", mapping.getNamespace());
104 assertEquals("foo/actionName", mapping.getName());
105 assertNull(mapping.getMethod());
106 }
107
108 public void testGetMappingWithUnknownNamespace() throws Exception {
109 setUp();
110 req.setupGetRequestURI("/bo/foo/actionName.action");
111 req.setupGetServletPath("/bo/foo/actionName.action");
112 req.setupGetAttribute(null);
113 req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
114
115 DefaultActionMapper mapper = new DefaultActionMapper();
116 ActionMapping mapping = mapper.getMapping(req, configManager);
117
118 assertEquals("", mapping.getNamespace());
119 assertEquals("bo/foo/actionName", mapping.getName());
120 assertNull(mapping.getMethod());
121 }
122
123 public void testGetUri() throws Exception {
124 req.setupGetParameterMap(new HashMap());
125 req.setupGetRequestURI("/my/namespace/actionName.action");
126 req.setupGetServletPath("/my/namespace/actionName.action");
127 req.setupGetAttribute(null);
128 req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
129
130 DefaultActionMapper mapper = new DefaultActionMapper();
131 ActionMapping mapping = mapper.getMapping(req, configManager);
132 assertEquals("/my/namespace/actionName.action", mapper.getUriFromActionMapping(mapping));
133 }
134
135 public void testGetUriWithMethod() throws Exception {
136 req.setupGetParameterMap(new HashMap());
137 req.setupGetRequestURI("/my/namespace/actionName!add.action");
138 req.setupGetServletPath("/my/namespace/actionName!add.action");
139 req.setupGetAttribute(null);
140 req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
141
142 DefaultActionMapper mapper = new DefaultActionMapper();
143 ActionMapping mapping = mapper.getMapping(req, configManager);
144
145 assertEquals("/my/namespace/actionName!add.action", mapper.getUriFromActionMapping(mapping));
146 }
147
148 public void testGetMappingWithNoExtension() throws Exception {
149 String old = org.apache.struts2.config.Settings.get(StrutsConstants.STRUTS_ACTION_EXTENSION);
150 org.apache.struts2.config.Settings.set(StrutsConstants.STRUTS_ACTION_EXTENSION, "");
151 try {
152 req.setupGetParameterMap(new HashMap());
153 req.setupGetRequestURI("/my/namespace/actionName");
154 req.setupGetServletPath("/my/namespace/actionName");
155 req.setupGetAttribute(null);
156 req.addExpectedGetAttributeName("javax.servlet.include.servlet_path");
157
158 DefaultActionMapper mapper = new DefaultActionMapper();
159 ActionMapping mapping = mapper.getMapping(req, configManager);
160
161 assertEquals("/my/namespace", mapping.getNamespace());
162 assertEquals("actionName", mapping.getName());
163 assertNull(mapping.getMethod());
164 }
165 finally {
166 org.apache.struts2.config.Settings.set(StrutsConstants.STRUTS_ACTION_EXTENSION, old);
167 }
168 }
169
170
171
172
173
174 public void testParseNameAndNamespace1() throws Exception {
175 ActionMapping actionMapping = new ActionMapping();
176
177 DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
178 defaultActionMapper.parseNameAndNamespace("someAction", actionMapping, config);
179
180 assertEquals(actionMapping.getName(), "someAction");
181 assertEquals(actionMapping.getNamespace(), "");
182 }
183
184 public void testParseNameAndNamespace2() throws Exception {
185 ActionMapping actionMapping = new ActionMapping();
186
187 DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
188 defaultActionMapper.parseNameAndNamespace("/someAction", actionMapping, config);
189
190 assertEquals(actionMapping.getName(), "someAction");
191 assertEquals(actionMapping.getNamespace(), "/");
192 }
193
194 public void testParseNameAndNamespace3() throws Exception {
195 ActionMapping actionMapping = new ActionMapping();
196
197 DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
198 defaultActionMapper.parseNameAndNamespace("/my/someAction", actionMapping, config);
199
200 assertEquals(actionMapping.getName(), "someAction");
201 assertEquals(actionMapping.getNamespace(), "/my");
202 }
203
204
205
206
207
208
209 public void testActionPrefix() throws Exception {
210 Map parameterMap = new HashMap();
211 parameterMap.put(DefaultActionMapper.ACTION_PREFIX + "myAction", "");
212
213 StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
214 request.setParameterMap(parameterMap);
215 request.setupGetServletPath("/someServletPath.action");
216
217 DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
218 ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
219
220 assertEquals(actionMapping.getName(), "myAction");
221 }
222
223 public void testRedirectPrefix() throws Exception {
224 Map parameterMap = new HashMap();
225 parameterMap.put(DefaultActionMapper.REDIRECT_PREFIX + "www.google.com", "");
226
227 StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
228 request.setupGetServletPath("/someServletPath.action");
229 request.setParameterMap(parameterMap);
230
231 DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
232 ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
233
234 Result result = actionMapping.getResult();
235 assertNotNull(result);
236 assertTrue(result instanceof ServletRedirectResult);
237
238
239 }
240
241 public void testRedirectActionPrefix() throws Exception {
242 Map parameterMap = new HashMap();
243 parameterMap.put(DefaultActionMapper.REDIRECT_ACTION_PREFIX + "myAction", "");
244
245 StrutsMockHttpServletRequest request = new StrutsMockHttpServletRequest();
246 request.setupGetServletPath("/someServletPath.action");
247 request.setParameterMap(parameterMap);
248
249 DefaultActionMapper defaultActionMapper = new DefaultActionMapper();
250 ActionMapping actionMapping = defaultActionMapper.getMapping(request, configManager);
251
252 Result result = actionMapping.getResult();
253 assertNotNull(result);
254 assertTrue(result instanceof ServletRedirectResult);
255
256
257 }
258
259 public void testDropExtension() throws Exception {
260 DefaultActionMapper mapper = new DefaultActionMapper();
261 String name = mapper.dropExtension("foo.action");
262 assertTrue("Name not right: "+name, "foo".equals(name));
263
264 name = mapper.dropExtension("foo.action.action");
265 assertTrue("Name not right: "+name, "foo.action".equals(name));
266
267 }
268
269 public void testGetUriFromActionMapper1() throws Exception {
270 DefaultActionMapper mapper = new DefaultActionMapper();
271 ActionMapping actionMapping = new ActionMapping();
272 actionMapping.setMethod("myMethod");
273 actionMapping.setName("myActionName");
274 actionMapping.setNamespace("/myNamespace");
275 String uri = mapper.getUriFromActionMapping(actionMapping);
276
277 assertEquals("/myNamespace/myActionName!myMethod.action", uri);
278 }
279
280 public void testGetUriFromActionMapper2() throws Exception {
281 DefaultActionMapper mapper = new DefaultActionMapper();
282 ActionMapping actionMapping = new ActionMapping();
283 actionMapping.setMethod("myMethod");
284 actionMapping.setName("myActionName");
285 actionMapping.setNamespace("/");
286 String uri = mapper.getUriFromActionMapping(actionMapping);
287
288 assertEquals("/myActionName!myMethod.action", uri);
289 }
290
291 public void testGetUriFromActionMapper3() throws Exception {
292 DefaultActionMapper mapper = new DefaultActionMapper();
293 ActionMapping actionMapping = new ActionMapping();
294 actionMapping.setMethod("myMethod");
295 actionMapping.setName("myActionName");
296 actionMapping.setNamespace("");
297 String uri = mapper.getUriFromActionMapping(actionMapping);
298
299 assertEquals("/myActionName!myMethod.action", uri);
300 }
301
302
303 public void testGetUriFromActionMapper4() throws Exception {
304 DefaultActionMapper mapper = new DefaultActionMapper();
305 ActionMapping actionMapping = new ActionMapping();
306 actionMapping.setName("myActionName");
307 actionMapping.setNamespace("");
308 String uri = mapper.getUriFromActionMapping(actionMapping);
309
310 assertEquals("/myActionName.action", uri);
311 }
312
313 public void testGetUriFromActionMapper5() throws Exception {
314 DefaultActionMapper mapper = new DefaultActionMapper();
315 ActionMapping actionMapping = new ActionMapping();
316 actionMapping.setName("myActionName");
317 actionMapping.setNamespace("/");
318 String uri = mapper.getUriFromActionMapping(actionMapping);
319
320 assertEquals("/myActionName.action", uri);
321 }
322
323
324 public void testGetUriFromActionMapper6() throws Exception {
325 DefaultActionMapper mapper = new DefaultActionMapper();
326 ActionMapping actionMapping = new ActionMapping();
327 actionMapping.setMethod("myMethod");
328 actionMapping.setName("myActionName?test=bla");
329 actionMapping.setNamespace("/myNamespace");
330 String uri = mapper.getUriFromActionMapping(actionMapping);
331
332 assertEquals("/myNamespace/myActionName!myMethod.action?test=bla", uri);
333 }
334
335 public void testGetUriFromActionMapper7() throws Exception {
336 DefaultActionMapper mapper = new DefaultActionMapper();
337 ActionMapping actionMapping = new ActionMapping();
338 actionMapping.setMethod("myMethod");
339 actionMapping.setName("myActionName?test=bla");
340 actionMapping.setNamespace("/");
341 String uri = mapper.getUriFromActionMapping(actionMapping);
342
343 assertEquals("/myActionName!myMethod.action?test=bla", uri);
344 }
345
346 public void testGetUriFromActionMapper8() throws Exception {
347 DefaultActionMapper mapper = new DefaultActionMapper();
348 ActionMapping actionMapping = new ActionMapping();
349 actionMapping.setMethod("myMethod");
350 actionMapping.setName("myActionName?test=bla");
351 actionMapping.setNamespace("");
352 String uri = mapper.getUriFromActionMapping(actionMapping);
353
354 assertEquals("/myActionName!myMethod.action?test=bla", uri);
355 }
356
357
358 public void testGetUriFromActionMapper9() throws Exception {
359 DefaultActionMapper mapper = new DefaultActionMapper();
360 ActionMapping actionMapping = new ActionMapping();
361 actionMapping.setName("myActionName?test=bla");
362 actionMapping.setNamespace("");
363 String uri = mapper.getUriFromActionMapping(actionMapping);
364
365 assertEquals("/myActionName.action?test=bla", uri);
366 }
367
368 public void testGetUriFromActionMapper10() throws Exception {
369 DefaultActionMapper mapper = new DefaultActionMapper();
370 ActionMapping actionMapping = new ActionMapping();
371 actionMapping.setName("myActionName?test=bla");
372 actionMapping.setNamespace("/");
373 String uri = mapper.getUriFromActionMapping(actionMapping);
374
375 assertEquals("/myActionName.action?test=bla", uri);
376 }
377
378 public void testGetUriFromActionMapper11() throws Exception {
379 DefaultActionMapper mapper = new DefaultActionMapper();
380 ActionMapping actionMapping = new ActionMapping();
381 actionMapping.setName("myActionName.action");
382 actionMapping.setNamespace("/");
383 String uri = mapper.getUriFromActionMapping(actionMapping);
384
385 assertEquals("/myActionName.action", uri);
386 }
387
388 public void testGetUriFromActionMapper12() throws Exception {
389 DefaultActionMapper mapper = new DefaultActionMapper();
390 ActionMapping actionMapping = new ActionMapping();
391 actionMapping.setName("myActionName.action");
392 actionMapping.setNamespace("/");
393 String uri = mapper.getUriFromActionMapping(actionMapping);
394
395 assertEquals("/myActionName.action", uri);
396 }
397
398 }