This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 18af2fb4f23b01c7c3ccc24e8d179e2f56dd79bc Author: remm <r...@apache.org> AuthorDate: Wed Nov 6 15:02:59 2024 +0100 Add additional SSI testing --- test/org/apache/catalina/ssi/TestSsiServlet.java | 72 ++++++++++++++++++++++++ test/webapp/index.shtml | 44 +++++++++++++++ test/webapp/subpage.html | 17 ++++++ 3 files changed, 133 insertions(+) diff --git a/test/org/apache/catalina/ssi/TestSsiServlet.java b/test/org/apache/catalina/ssi/TestSsiServlet.java new file mode 100644 index 0000000000..d18f04d87a --- /dev/null +++ b/test/org/apache/catalina/ssi/TestSsiServlet.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.catalina.ssi; + +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jakarta.servlet.http.HttpServletResponse; + +import org.junit.Assert; +import org.junit.Test; + +import org.apache.catalina.Context; +import org.apache.catalina.Wrapper; +import org.apache.catalina.servlets.DefaultServlet; +import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.TomcatBaseTest; +import org.apache.tomcat.util.buf.ByteChunk; + +public class TestSsiServlet extends TomcatBaseTest { + + @Test + public void testServlet() throws Exception { + Tomcat tomcat = getTomcatInstance(); + + File appDir = new File("test/webapp"); + Context ctxt = tomcat.addContext("", appDir.getAbsolutePath()); + + Tomcat.addServlet(ctxt, "default", new DefaultServlet()); + ctxt.addServletMappingDecoded("/", "default"); + + Wrapper ssi = Tomcat.addServlet(ctxt, "ssi", new SSIServlet()); + ssi.addInitParameter("allowExec", "true"); + ctxt.addServletMappingDecoded("*.shtml", "ssi"); + + tomcat.start(); + + Map<String,List<String>> resHeaders= new HashMap<>(); + String path = "http://localhost:" + getPort() + "/index.shtml"; + ByteChunk out = new ByteChunk(); + + int rc = getUrl(path, out, resHeaders); + Assert.assertEquals(HttpServletResponse.SC_OK, rc); + String body = new String(out.getBytes(), StandardCharsets.ISO_8859_1); + Assert.assertTrue(body.contains("should fail[errmsg works!]")); + Assert.assertTrue(body.contains("including works!")); + Assert.assertTrue(body.contains("path is interpreted")); + Assert.assertTrue(body.contains("path is relative")); + Assert.assertTrue(body.contains("path is relative")); + Assert.assertTrue(body.contains("path is relative")); + Assert.assertTrue(body.contains("1k")); + Assert.assertTrue(body.contains("SERVER_PROTOCOL")); + + } +} diff --git a/test/webapp/index.shtml b/test/webapp/index.shtml new file mode 100644 index 0000000000..65524ae574 --- /dev/null +++ b/test/webapp/index.shtml @@ -0,0 +1,44 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You 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. +--> +<html> + <head> + <title>Simple SSI test web application</title> + </head> + <body> + <!--#if expr="true" --> + <!--#set var="testvar" value="set" --> + + <p><!--#exec cmd="echo exec-cmd works!" --></p> + <!--#config errmsg="[errmsg works!]" timefmt="%A %B %d, %Y"--> + <p>todayDT<!--#echo var="DATE_LOCAL" --> </p> + <p><!--#include virtual="subpage.html" -->path is interpreted as a virtual path</p> + <P><!--#include file="subpage.html" -->path is relative to the document</P> + <p>fsize file works!<!--#fsize file="subpage.html" --></p> + <p>fsize virtual works!<!--#fsize virtual="subpage.html" --></p> + <p>flastmod works!<!--#flastmod virtual="index.shtml" --> </p> + <p>should fail<!--#fsize shouldFail="subpage.html" --></p> + <!--#else --> + <strong>DOES NOT WORK.</strong> + <!--#endif --> + + <ul> + <li>Document name: <!--#echo var="DOCUMENT_NAME" --></li> + <li>Testvar content: <!--#echo var="testvar" --></li> + <li>Env variables: <!--#printenv --></li> + </ul> + </body> +</html> diff --git a/test/webapp/subpage.html b/test/webapp/subpage.html new file mode 100644 index 0000000000..64c5ec3e8d --- /dev/null +++ b/test/webapp/subpage.html @@ -0,0 +1,17 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You 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. +--> +<strong>including works!</strong> \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org