ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/test/jakarta/servlet/annotation/TestServletSecurityMappings.java

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/test/jakarta/servlet/annotation/TestServletSecurityMappings.java
Status
scanned
Type
file
Name
TestServletSecurityMappings.java
Extension
.java
Programming language
Java
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
7435 (7.3 KB)
MD5
6569222d4b1c12588da71f7f0bbc7dd3
SHA1
7318ed2e959eeb002d6f7a841ea83df651eec10f
SHA256
0f176561d4ec25532bfbec07981c758dbd95558a810073df700150d8ff77222e
SHA512

      
    
SHA1_git
22c0ea2811a0f6262cb23954d03c0d4f1559a8db
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
TestServletSecurityMappings.java | 7.3 KB |

/* * 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 jakarta.servlet.annotation; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; import jakarta.servlet.ServletContainerInitializer; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRegistration; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameter; import org.junit.runners.Parameterized.Parameters; import org.apache.catalina.Context; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.startup.TomcatBaseTest; import org.apache.tomcat.util.buf.ByteChunk; @RunWith(Parameterized.class) public class TestServletSecurityMappings extends TomcatBaseTest { @Parameters(name = "{0}, {1}, {2}, {3}") public static Collection<Object[]> inputs() { List<Object[]> result = new ArrayList<>(); result.add(new Object[] { Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, Boolean.FALSE }); result.add(new Object[] { Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE }); result.add(new Object[] { Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, Boolean.FALSE }); result.add(new Object[] { Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, Boolean.TRUE }); result.add(new Object[] { Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, Boolean.FALSE }); result.add(new Object[] { Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, Boolean.TRUE }); result.add(new Object[] { Boolean.FALSE, Boolean.TRUE, Boolean.TRUE, Boolean.FALSE }); result.add(new Object[] { Boolean.FALSE, Boolean.TRUE, Boolean.TRUE, Boolean.TRUE }); result.add(new Object[] { Boolean.TRUE, Boolean.FALSE, Boolean.FALSE, Boolean.FALSE }); result.add(new Object[] { Boolean.TRUE, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE }); result.add(new Object[] { Boolean.TRUE, Boolean.FALSE, Boolean.TRUE, Boolean.FALSE }); result.add(new Object[] { Boolean.TRUE, Boolean.FALSE, Boolean.TRUE, Boolean.TRUE }); result.add(new Object[] { Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, Boolean.FALSE }); result.add(new Object[] { Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, Boolean.TRUE }); result.add(new Object[] { Boolean.TRUE, Boolean.TRUE, Boolean.TRUE, Boolean.FALSE }); result.add(new Object[] { Boolean.TRUE, Boolean.TRUE, Boolean.TRUE, Boolean.TRUE }); return result; } @Parameter(0) public boolean redirectContextRoot; @Parameter(1) public boolean secureRoot; @Parameter(2) public boolean secureDefault; @Parameter(3) public boolean secureFoo; @Test public void doTestSecurityAnnotationsAddServlet() throws Exception { // Setup Tomcat instance Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context ctx = tomcat.addContext("/test", null); ctx.setMapperContextRootRedirectEnabled(redirectContextRoot); ServletContainerInitializer sci = new SCI(secureRoot, secureDefault, secureFoo); ctx.addServletContainerInitializer(sci, null); tomcat.start(); ByteChunk bc = new ByteChunk(); int rc; // Foo rc = getUrl("http://localhost:" + getPort() + "/test/foo", bc, false); if (secureFoo || secureDefault) { Assert.assertEquals(403, rc); } else { Assert.assertEquals(200, rc); } bc.recycle(); // Default rc = getUrl("http://localhost:" + getPort() + "/test/something", bc, false); if (secureDefault) { Assert.assertEquals(403, rc); } else { Assert.assertEquals(200, rc); } bc.recycle(); // Root rc = getUrl("http://localhost:" + getPort() + "/test", bc, false); if (secureRoot || secureDefault) { Assert.assertEquals(403, rc); } else { Assert.assertEquals(200, rc); } } public static class SCI implements ServletContainerInitializer { private final boolean secureRoot; private final boolean secureDefault; private final boolean secureFoo; public SCI(boolean secureRoot, boolean secureDefault, boolean secureFoo) { this.secureRoot = secureRoot; this.secureDefault = secureDefault; this.secureFoo = secureFoo; } @Override public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException { ServletRegistration.Dynamic sr; if (secureRoot) { sr = ctx.addServlet("Root", SecureRoot.class.getName()); } else { sr = ctx.addServlet("Root", Ok.class.getName()); } sr.addMapping(""); if (secureDefault) { sr = ctx.addServlet("Default", SecureDefault.class.getName()); } else { sr = ctx.addServlet("Default", Ok.class.getName()); } sr.addMapping("/"); if (secureFoo) { sr = ctx.addServlet("Foo", SecureFoo.class.getName()); } else { sr = ctx.addServlet("Foo", Ok.class.getName()); } sr.addMapping("/foo"); } } @ServletSecurity(@HttpConstraint(ServletSecurity.EmptyRoleSemantic.DENY)) public static class SecureRoot extends Ok { private static final long serialVersionUID = 1L; } @ServletSecurity(@HttpConstraint(ServletSecurity.EmptyRoleSemantic.DENY)) public static class SecureDefault extends Ok { private static final long serialVersionUID = 1L; } @ServletSecurity(@HttpConstraint(ServletSecurity.EmptyRoleSemantic.DENY)) public static class SecureFoo extends Ok { private static final long serialVersionUID = 1L; } public static class Ok extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().print("OK"); } } }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
15.87
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9