package org.springframework.webflow.context.servlet; import java.util.LinkedHashMap; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.core.collection.LocalAttributeMap; public class DefaultFlowUrlHandlerTests extends TestCase { private DefaultFlowUrlHandler urlHandler = new DefaultFlowUrlHandler(); private MockHttpServletRequest request = new MockHttpServletRequest(); public void testGetFlowId() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); assertEquals("foo", urlHandler.getFlowId(request)); } public void testGetFlowIdNoPathInfo() { request.setContextPath("/springtravel"); request.setServletPath("/app/foo.htm"); request.setPathInfo(null); request.setRequestURI("/springtravel/app/foo.htm"); assertEquals("app/foo", urlHandler.getFlowId(request)); } public void testGetFlowIdOnlyContextPath() { request.setContextPath("/springtravel"); request.setRequestURI("/springtravel"); assertEquals("springtravel", urlHandler.getFlowId(request)); } public void testGetFlowExecutionKey() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.addParameter("execution", "12345"); assertEquals("12345", urlHandler.getFlowExecutionKey(request)); } public void testCreateFlowDefinitionUrl() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowDefinitionUrl("bookHotel", null, request); assertEquals("/springtravel/app/bookHotel", url); } public void testCreateFlowDefinitionUrlNoPathInfo() { request.setContextPath("/springtravel"); request.setServletPath("/app/foo.htm"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowDefinitionUrl("app/foo", null, request); assertEquals("/springtravel/app/foo.htm", url); } public void testCreateFlowDefinitionUrlContextPathOnly() { request.setContextPath("/springtravel"); request.setRequestURI("/springtravel"); String url = urlHandler.createFlowDefinitionUrl("springtravel", null, request); assertEquals("/springtravel", url); } public void testCreateFlowDefinitionUrlEmptyInput() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowDefinitionUrl("bookHotel", CollectionUtils.EMPTY_ATTRIBUTE_MAP, request); assertEquals("/springtravel/app/bookHotel", url); } public void testCreateFlowDefinitionUrlWithFlowInput() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); LocalAttributeMap<Object> input = new LocalAttributeMap<Object>(new LinkedHashMap<String, Object>()); input.put("foo", "bar"); input.put("bar", "needs encoding"); input.put("baz", 1); input.put("boop", null); String url = urlHandler.createFlowDefinitionUrl("bookHotel", input, request); assertEquals("/springtravel/app/bookHotel?foo=bar&bar=needs+encoding&baz=1&boop=", url); } public void testCreateFlowExecutionUrl() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowExecutionUrl("foo", "12345", request); assertEquals("/springtravel/app/foo?execution=12345", url); } }