/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.server; import javax.servlet.http.HttpServletRequest; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; public class VaadinServletTest { @Test public void testGetLastPathParameter() { Assert.assertEquals("", VaadinServlet.getLastPathParameter("http://myhost.com")); Assert.assertEquals(";a", VaadinServlet.getLastPathParameter("http://myhost.com;a")); Assert.assertEquals("", VaadinServlet.getLastPathParameter("http://myhost.com/hello")); Assert.assertEquals(";b=c", VaadinServlet .getLastPathParameter("http://myhost.com/hello;b=c")); Assert.assertEquals("", VaadinServlet.getLastPathParameter("http://myhost.com/hello/")); Assert.assertEquals("", VaadinServlet .getLastPathParameter("http://myhost.com/hello;a/")); Assert.assertEquals("", VaadinServlet .getLastPathParameter("http://myhost.com/hello;a=1/")); Assert.assertEquals(";b", VaadinServlet .getLastPathParameter("http://myhost.com/hello/;b")); Assert.assertEquals(";b=1", VaadinServlet .getLastPathParameter("http://myhost.com/hello/;b=1")); Assert.assertEquals(";b=1,c=2", VaadinServlet .getLastPathParameter("http://myhost.com/hello/;b=1,c=2")); Assert.assertEquals("", VaadinServlet .getLastPathParameter("http://myhost.com/hello/;b=1,c=2/")); Assert.assertEquals("", VaadinServlet .getLastPathParameter("http://myhost.com/a;hello/;a/")); Assert.assertEquals("", VaadinServlet .getLastPathParameter("http://myhost.com/a;hello/;a=1/")); Assert.assertEquals(";b", VaadinServlet .getLastPathParameter("http://myhost.com/a;hello/;b")); Assert.assertEquals(";b=1", VaadinServlet .getLastPathParameter("http://myhost.com/a;hello/;b=1")); Assert.assertEquals(";b=1,c=2", VaadinServlet .getLastPathParameter("http://myhost.com/a;hello/;b=1,c=2")); Assert.assertEquals("", VaadinServlet .getLastPathParameter("http://myhost.com/a;hello/;b=1,c=2/")); } @Test public void getStaticFilePath() { VaadinServlet servlet = new VaadinServlet(); // Mapping: /VAADIN/* // /VAADIN Assert.assertNull(servlet .getStaticFilePath(createServletRequest("/VAADIN", null))); // /VAADIN/ - not really sensible but still interpreted as a resource // request Assert.assertEquals("/VAADIN/", servlet .getStaticFilePath(createServletRequest("/VAADIN", "/"))); // /VAADIN/vaadinBootstrap.js Assert.assertEquals("/VAADIN/vaadinBootstrap.js", servlet.getStaticFilePath(createServletRequest("/VAADIN", "/vaadinBootstrap.js"))); // /VAADIN/foo bar.js Assert.assertEquals("/VAADIN/foo bar.js", servlet.getStaticFilePath( createServletRequest("/VAADIN", "/foo bar.js"))); // /VAADIN/.. - not normalized and disallowed in this method Assert.assertEquals("/VAADIN/..", servlet .getStaticFilePath(createServletRequest("/VAADIN", "/.."))); // Mapping: /* // / Assert.assertNull( servlet.getStaticFilePath(createServletRequest("", null))); // /VAADIN Assert.assertNull( servlet.getStaticFilePath(createServletRequest("", "/VAADIN"))); // /VAADIN/ Assert.assertEquals("/VAADIN/", servlet .getStaticFilePath(createServletRequest("", "/VAADIN/"))); // /VAADIN/foo bar.js Assert.assertEquals("/VAADIN/foo bar.js", servlet.getStaticFilePath( createServletRequest("", "/VAADIN/foo bar.js"))); // /VAADIN/.. - not normalized and disallowed in this method Assert.assertEquals("/VAADIN/..", servlet .getStaticFilePath(createServletRequest("", "/VAADIN/.."))); // /BAADIN/foo.js Assert.assertNull(servlet .getStaticFilePath(createServletRequest("", "/BAADIN/foo.js"))); // Mapping: /myservlet/* // /myservlet Assert.assertNull(servlet .getStaticFilePath(createServletRequest("/myservlet", null))); // /myservlet/VAADIN Assert.assertNull(servlet.getStaticFilePath( createServletRequest("/myservlet", "/VAADIN"))); // /myservlet/VAADIN/ Assert.assertEquals("/VAADIN/", servlet.getStaticFilePath( createServletRequest("/myservlet", "/VAADIN/"))); // /myservlet/VAADIN/foo bar.js Assert.assertEquals("/VAADIN/foo bar.js", servlet.getStaticFilePath( createServletRequest("/myservlet", "/VAADIN/foo bar.js"))); // /myservlet/VAADIN/.. - not normalized and disallowed in this method Assert.assertEquals("/VAADIN/..", servlet.getStaticFilePath( createServletRequest("/myservlet", "/VAADIN/.."))); // /myservlet/BAADIN/foo.js Assert.assertNull(servlet.getStaticFilePath( createServletRequest("/myservlet", "/BAADIN/foo.js"))); } private HttpServletRequest createServletRequest(String servletPath, String pathInfo) { HttpServletRequest request = Mockito.mock(HttpServletRequest.class); Mockito.when(request.getServletPath()).thenReturn(servletPath); Mockito.when(request.getPathInfo()).thenReturn(pathInfo); return request; } }