Author: markt Date: Tue Aug 23 13:22:52 2016 New Revision: 1757363 URL: http://svn.apache.org/viewvc?rev=1757363&view=rev Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=60013 Add a test case
Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1757363&r1=1757362&r2=1757363&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java (original) +++ tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Tue Aug 23 13:22:52 2016 @@ -827,7 +827,7 @@ public final class CorsFilter extends Ge } // RFC6454, section 4. "If uri-scheme is file, the implementation MAY - // return an implementation-defined value.". No limits are okaced on + // return an implementation-defined value.". No limits are placed on // that value so treat all file URIs as valid origins. if (origin.startsWith("file://")) { return true; Modified: tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java?rev=1757363&r1=1757362&r2=1757363&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java (original) +++ tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java Tue Aug 23 13:22:52 2016 @@ -453,12 +453,13 @@ public abstract class TomcatBaseTest ext StringBuilder value; Object attribute; + response.setContentType("text/plain"); + response.setCharacterEncoding("UTF-8"); + ServletContext ctx = this.getServletContext(); HttpSession session = request.getSession(false); PrintWriter out = response.getWriter(); - response.setContentType("text/plain"); - out.println("CONTEXT-NAME: " + ctx.getServletContextName()); out.println("CONTEXT-PATH: " + ctx.getContextPath()); out.println("CONTEXT-MAJOR-VERSION: " + ctx.getMajorVersion()); Modified: tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java?rev=1757363&r1=1757362&r2=1757363&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java (original) +++ tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java Tue Aug 23 13:22:52 2016 @@ -19,6 +19,8 @@ package org.apache.catalina.valves.rewri import org.junit.Assert; import org.junit.Test; +import java.nio.charset.StandardCharsets; + import org.apache.catalina.Context; import org.apache.catalina.servlets.DefaultServlet; import org.apache.catalina.startup.Tomcat; @@ -102,7 +104,28 @@ public class TestRewriteValve extends To } } + // https://bz.apache.org/bugzilla/show_bug.cgi?id=60013 + @Test + public void testRewriteWithEncoding01() throws Exception { + doTestRewrite("RewriteRule ^/b/(.*)$ /c/?param=$1 [L]", + "/b/\u5728\u7EBF\u6D4B\u8BD5", "/c/", "param=\u5728\u7EBF\u6D4B\u8BD5"); + } + + // https://bz.apache.org/bugzilla/show_bug.cgi?id=60013 + // With % encoding + @Test + public void testRewriteWithEncoding02() throws Exception { + doTestRewrite("RewriteRule ^/b/(.*)$ /c/?param=$1 [L]", + "/b/%E5%9C%A8%E7%BA%BF%E6%B5%8B%E8%AF%95", "/c/", "param=\u5728\u7EBF\u6D4B\u8BD5"); + } + private void doTestRewrite(String config, String request, String expectedURI) throws Exception { + doTestRewrite(config, request, expectedURI, null); + } + + private void doTestRewrite(String config, String request, String expectedURI, + String expectedQueryString) throws Exception { + Tomcat tomcat = getTomcatInstance(); // No file system docBase required @@ -124,10 +147,16 @@ public class TestRewriteValve extends To tomcat.start(); ByteChunk res = getUrl("http://localhost:" + getPort() + request); + res.setCharset(StandardCharsets.UTF_8); String body = res.toString(); RequestDescriptor requestDesc = SnoopResult.parse(body); String requestURI = requestDesc.getRequestInfo("REQUEST-URI"); Assert.assertEquals(expectedURI, requestURI); + + if (expectedQueryString != null) { + String queryString = requestDesc.getRequestInfo("REQUEST-QUERY-STRING"); + Assert.assertEquals(expectedQueryString, queryString); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org