Author: markt Date: Wed Jan 23 21:39:11 2019 New Revision: 1851985 URL: http://svn.apache.org/viewvc?rev=1851985&view=rev Log: Add a test case for BZ 62912
Modified: tomcat/trunk/test/org/apache/coyote/TestResponse.java Modified: tomcat/trunk/test/org/apache/coyote/TestResponse.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/TestResponse.java?rev=1851985&r1=1851984&r2=1851985&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/coyote/TestResponse.java (original) +++ tomcat/trunk/test/org/apache/coyote/TestResponse.java Wed Jan 23 21:39:11 2019 @@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletReq import javax.servlet.http.HttpServletResponse; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import org.apache.catalina.Context; @@ -77,5 +78,73 @@ public class TestResponse extends Tomcat resp.getWriter().print("OK"); } + } + + + @Test + public void testContentTypeWithSpace() throws Exception { + doTestContentTypeSpacing(true); + } + + + @Ignore // Disabled until Bug 62912 is addressed + @Test + public void testContentTypeWithoutSpace() throws Exception { + doTestContentTypeSpacing(false); + } + + + private void doTestContentTypeSpacing(boolean withSpace) throws Exception { + Tomcat tomcat = getTomcatInstance(); + + // No file system docBase required + Context ctx = tomcat.addContext("", null); + + // Add servlet + Tomcat.addServlet(ctx, "ContentTypeServlet", new ContentTypeServlet()); + ctx.addServletMappingDecoded("/*", "ContentTypeServlet"); + + tomcat.start(); + + ByteChunk responseBody = new ByteChunk(); + Map<String,List<String>> responseHeaders = new HashMap<>(); + StringBuilder uri = new StringBuilder("http://localhost:"); + uri.append(getPort()); + uri.append("/test"); + if (withSpace) { + uri.append("?withSpace=true"); + } + int rc = getUrl(uri.toString(), responseBody, responseHeaders); + + Assert.assertEquals(HttpServletResponse.SC_OK, rc); + Assert.assertTrue(responseHeaders.containsKey("Content-Type")); + List<String> contentType = responseHeaders.get("Content-Type"); + Assert.assertEquals(1, contentType.size()); + StringBuilder expected = new StringBuilder("text/plain;"); + if (withSpace) { + expected.append(" "); + } + expected.append("v=1;charset=UTF-8"); + Assert.assertEquals(expected.toString() , contentType.get(0)); + } + + + private static class ContentTypeServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + + if (req.getParameter("withSpace") == null) { + resp.setContentType("text/plain;v=1"); + } else { + resp.setContentType("text/plain; v=1"); + } + resp.setCharacterEncoding("UTF-8"); + + resp.getWriter().print("OK"); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org