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

Reply via email to