/common/util/src/test/java/com/alibaba/citrus/util/ServletUtilTests.java
https://github.com/webx/citrus · Java · 245 lines · 176 code · 45 blank · 24 comment · 1 complexity · 4823aaf27dfd1fe19e1ffa778d960cbc MD5 · raw file
- /*
- * Copyright (c) 2002-2012 Alibaba Group Holding Limited.
- * All rights reserved.
- *
- * 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.alibaba.citrus.util;
-
- import static com.alibaba.citrus.util.CollectionUtil.*;
- import static com.alibaba.citrus.util.ServletUtil.*;
- import static org.easymock.EasyMock.*;
- import static org.junit.Assert.*;
-
- import java.util.Collection;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
-
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.junit.runners.Parameterized;
- import org.junit.runners.Parameterized.Parameters;
-
- @RunWith(Parameterized.class)
- public class ServletUtilTests implements Cloneable {
- private HttpServletRequest request;
- private final boolean isPrefixServletMapping;
- private final String servletPath;
- private final String pathInfo;
- private final String resourcePath;
- private final String baseURL;
- private final String servletResourcePath;
- private final String servletBaseURL;
- private final String fullURL;
-
- public ServletUtilTests(boolean isPrefixServletMapping, String servletPath, String pathInfo, String resourcePath,
- String baseURL, String servletResourcePath, String servletBaseURL, String fullURL) {
- this.isPrefixServletMapping = isPrefixServletMapping;
- this.servletPath = servletPath;
- this.pathInfo = pathInfo;
- this.resourcePath = resourcePath;
- this.baseURL = baseURL;
- this.servletResourcePath = servletResourcePath;
- this.servletBaseURL = servletBaseURL;
- this.fullURL = fullURL;
- }
-
- @Parameters
- public static Collection<Object[]> data() {
- List<Object[]> data = createLinkedList();
-
- // 前缀映射,pathInfo不为空
- add(data, true, "/turbine", "/aaa/bbb", //
- "/turbine/aaa/bbb", "http://localhost:8080/myapp", //
- "/aaa/bbb", "http://localhost:8080/myapp/turbine", //
- "http://localhost:8080/myapp/turbine/aaa/bbb");
-
- add(data, true, "/hello.world", "/turbine", //
- "/hello.world/turbine", "http://localhost:8080/myapp", //
- "/turbine", "http://localhost:8080/myapp/hello.world", //
- "http://localhost:8080/myapp/hello.world/turbine");
-
- add(data, true, " hello.world ", " turbine/ ", //
- "/hello.world/turbine/", "http://localhost:8080/myapp", //
- "/turbine/", "http://localhost:8080/myapp/hello.world", //
- "http://localhost:8080/myapp/hello.world/turbine/");
-
- add(data, true, null, " / ", //
- "/", "http://localhost:8080/myapp", //
- "/", "http://localhost:8080/myapp", //
- "http://localhost:8080/myapp/");
-
- // 前缀映射,但pathInfo为空
- add(data, true, "/turbine", null, //
- "/turbine", "http://localhost:8080/myapp", //
- "", "http://localhost:8080/myapp/turbine", //
- "http://localhost:8080/myapp/turbine");
-
- add(data, true, "/turbine", "", //
- "/turbine", "http://localhost:8080/myapp", //
- "", "http://localhost:8080/myapp/turbine", //
- "http://localhost:8080/myapp/turbine");
-
- add(data, true, "/hello.world/turbine", null, //
- "/hello.world/turbine", "http://localhost:8080/myapp", //
- "", "http://localhost:8080/myapp/hello.world/turbine", //
- "http://localhost:8080/myapp/hello.world/turbine");
-
- add(data, true, "/hello.world/turbine", "", //
- "/hello.world/turbine", "http://localhost:8080/myapp", //
- "", "http://localhost:8080/myapp/hello.world/turbine", //
- "http://localhost:8080/myapp/hello.world/turbine");
-
- add(data, true, " hello.world/turbine/ ", " ", //
- "/hello.world/turbine/", "http://localhost:8080/myapp", //
- "", "http://localhost:8080/myapp/hello.world/turbine", //
- "http://localhost:8080/myapp/hello.world/turbine/");
-
- // 后缀映射
- add(data, false, "/aaa/bbb.htm", null, //
- "/aaa/bbb.htm", "http://localhost:8080/myapp", //
- "/aaa/bbb.htm", "http://localhost:8080/myapp", //
- "http://localhost:8080/myapp/aaa/bbb.htm");
-
- add(data, false, "/aaa/bbb.htm", "", //
- "/aaa/bbb.htm", "http://localhost:8080/myapp", //
- "/aaa/bbb.htm", "http://localhost:8080/myapp", //
- "http://localhost:8080/myapp/aaa/bbb.htm");
-
- add(data, false, " aaa/bbb.htm ", " ", //
- "/aaa/bbb.htm", "http://localhost:8080/myapp", //
- "/aaa/bbb.htm", "http://localhost:8080/myapp", //
- "http://localhost:8080/myapp/aaa/bbb.htm");
-
- return data;
- }
-
- private static void add(List<Object[]> data, Object... values) {
- data.add(values);
- }
-
- @Before
- public void init() {
- request = createMock(HttpServletRequest.class);
-
- expect(request.getRequestURL()).andReturn(new StringBuffer("http://localhost:8080/test")).anyTimes();
- expect(request.getContextPath()).andReturn(" myapp ").anyTimes();
- expect(request.getServletPath()).andReturn(servletPath).anyTimes();
- expect(request.getPathInfo()).andReturn(pathInfo).anyTimes();
-
- replay(request);
- }
-
- @Test
- public void isPrefixServletMapping_() {
- assertEquals(isPrefixServletMapping, isPrefixServletMapping(request));
- }
-
- @Test
- public void getResourcePath_() {
- assertEquals(resourcePath, getResourcePath(request));
- }
-
- @Test
- public void getBaseURL_() {
- assertEquals(baseURL, getBaseURL(request));
- }
-
- @Test
- public void getServletResourcePath_() {
- assertEquals(servletResourcePath, getServletResourcePath(request));
- }
-
- @Test
- public void getServletBaseURL_() {
- assertEquals(servletBaseURL, getServletBaseURL(request));
- }
-
- @Test
- public void getFullURL_() {
- assertEquals(fullURL, getBaseURL(request) + getResourcePath(request));
-
- String servletFullURL = getServletBaseURL(request) + getServletResourcePath(request);
- assertTrue(fullURL.equals(servletFullURL) || fullURL.equals(servletFullURL + "/"));
- }
-
- @Test
- public void normalizePath_() {
- assertEquals("", normalizePath(null));
- assertEquals("", normalizePath(" "));
- assertEquals("/aa/bb", normalizePath(" //aa/bb "));
-
- assertEquals("/", normalizePath(" /"));
- assertEquals("/", normalizePath(" // "));
- assertEquals("/aa/bb/", normalizePath(" //aa/bb/ "));
- assertEquals("/aa/bb/", normalizePath(" //aa/bb/ "));
- }
-
- @Test
- public void normalizePath_removeTrailingSlash() {
- assertEquals("", normalizePath(null, false));
- assertEquals("", normalizePath(" ", false));
- assertEquals("/aa/bb", normalizePath(" //aa/bb ", false));
-
- assertEquals("", normalizePath(" /", false));
- assertEquals("", normalizePath(" // ", false));
- assertEquals("/aa/bb", normalizePath(" //aa/bb/ ", false));
- }
-
- private String normalizePath(String path) {
- return FileUtil.normalizeAbsolutePath(path, false);
- }
-
- private String normalizePath(String path, boolean reserveTrailingSlash) {
- return FileUtil.normalizeAbsolutePath(path, !reserveTrailingSlash);
- }
-
- @Test
- public void normalizeURI_() {
- assertEquals("", normalizeURI(null));
- assertEquals("", normalizeURI(" "));
-
- assertEquals("aaa/bbb/ccc", normalizeURI("aaa/bbb/ccc"));
- assertEquals("aaa/ccc", normalizeURI("aaa///bbb/../ccc"));
- assertEquals("/aaa/bbb/ccc", normalizeURI("/aaa/bbb/ccc"));
- assertEquals("/aaa/bbb/ccc/", normalizeURI("/aaa/bbb/ccc/"));
-
- assertEquals("http://localhost:8080/bbb/ccc/", normalizeURI("http://localhost:8080//aaa//../bbb/ccc/"));
- }
-
- @Test
- public void startsWithPath_() {
- // null
- assertFalse(startsWithPath(null, "aa"));
- assertFalse(startsWithPath("aa", null));
- assertFalse(startsWithPath(null, null));
-
- // path/
- assertTrue(startsWithPath("path/", "path/index"));
- assertFalse(startsWithPath("path/", "path2/index"));
-
- // path
- assertTrue(startsWithPath("path", "path/index"));
- assertFalse(startsWithPath("path", "path2/index"));
-
- // equals
- assertTrue(startsWithPath("path", "path"));
- assertTrue(startsWithPath("path/", "path/"));
-
- // fullpath is shorter
- assertFalse(startsWithPath("path", "pat"));
- assertFalse(startsWithPath("path/", "pat"));
- }
- }