Author: rjung
Date: Mon Jan 25 16:52:10 2016
New Revision: 1726654

URL: http://svn.apache.org/viewvc?rev=1726654&view=rev
Log:
Add unit tests for class loader filtering.

Modified:
    tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoader.java

Modified: 
tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoader.java?rev=1726654&r1=1726653&r2=1726654&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoader.java 
(original)
+++ tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoader.java Mon 
Jan 25 16:52:10 2016
@@ -59,4 +59,94 @@ public class TestWebappClassLoader exten
             Assert.assertArrayEquals(expected, actual);
         }
     }
+
+    @Test
+    public void testFilter() {
+
+        String[] classSuffixes = new String[]{
+            "some.package.Example"
+        };
+
+        String[] resourceSuffixes = new String[]{
+            "some/path/test.properties",
+            "some/path/test"
+        };
+
+        String[] prefixesPermit = new String[]{
+            "",
+            "resources",
+            "WEB-INF",
+            "WEB-INF.classes",
+            "WEB-INF.lib",
+            "org",
+            "org.apache",
+            "org.apache.tomcat.jdbc",
+            "javax",
+            "javax.jsp.jstl",
+            "com.mycorp"
+        };
+
+        String[] prefixesDeny = new String[]{
+            "org.apache.catalina",
+            "org.apache.coyote",
+            "org.apache.el",
+            "org.apache.jasper",
+            "org.apache.juli",
+            "org.apache.naming",
+            "org.apache.tomcat",
+            "javax.el",
+            "javax.servlet",
+            "javax.websocket",
+            "javax.security.auth.message"
+        };
+
+        WebappClassLoader loader = new WebappClassLoader();
+        String name;
+
+        for (String prefix : prefixesPermit) {
+            for (String suffix : classSuffixes) {
+                name = prefix + "." + suffix;
+                Assert.assertTrue("Class '" + name + "' failed permit filter",
+                           !loader.filter(name, true));
+                if (prefix.equals("")) {
+                    name = suffix;
+                    Assert.assertTrue("Class '" + name + "' failed permit 
filter",
+                               !loader.filter(name, true));
+                }
+            }
+            prefix = prefix.replace('.', '/');
+            for (String suffix : resourceSuffixes) {
+                name = prefix + "/" + suffix;
+                Assert.assertTrue("Resource '" + name + "' failed permit 
filter",
+                           !loader.filter(name, false));
+                if (prefix.equals("")) {
+                    name = suffix;
+                    Assert.assertTrue("Resource '" + name + "' failed permit 
filter",
+                               !loader.filter(name, false));
+                }
+            }
+        }
+
+        for (String prefix : prefixesDeny) {
+            for (String suffix : classSuffixes) {
+                if (prefix.equals("")) {
+                    name = suffix;
+                } else {
+                    name = prefix + "." + suffix;
+                }
+                Assert.assertTrue("Class '" + name + "' failed deny filter",
+                           loader.filter(name, true));
+            }
+            prefix = prefix.replace('.', '/');
+            for (String suffix : resourceSuffixes) {
+                if (prefix.equals("")) {
+                    name = suffix;
+                } else {
+                    name = prefix + "/" + suffix;
+                }
+                Assert.assertTrue("Resource '" + name + "' failed deny filter",
+                           loader.filter(name, false));
+            }
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to