Author: markt
Date: Tue Jun 18 13:49:50 2013
New Revision: 1494136

URL: http://svn.apache.org/r1494136
Log:
Expand the Realm tests to cover the special '*' all roles role.

Modified:
    tomcat/trunk/test/org/apache/catalina/core/TesterContext.java
    tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java

Modified: tomcat/trunk/test/org/apache/catalina/core/TesterContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TesterContext.java?rev=1494136&r1=1494135&r2=1494136&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/core/TesterContext.java (original)
+++ tomcat/trunk/test/org/apache/catalina/core/TesterContext.java Tue Jun 18 
13:49:50 2013
@@ -19,6 +19,8 @@ package org.apache.catalina.core;
 import java.beans.PropertyChangeListener;
 import java.io.File;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
@@ -65,6 +67,23 @@ import org.apache.tomcat.JarScanner;
  */
 public class TesterContext implements Context {
 
+    private List<String> securityRoles = new ArrayList<>();
+    @Override
+    public void addSecurityRole(String role) {
+        securityRoles.add(role);
+    }
+
+    @Override
+    public boolean findSecurityRole(String role) {
+        return securityRoles.contains(role);
+    }
+
+    @Override
+    public String[] findSecurityRoles() {
+        return securityRoles.toArray(new String[securityRoles.size()]);
+    }
+
+
     @Override
     public Log getLogger() {
         return null;
@@ -699,11 +718,6 @@ public class TesterContext implements Co
     }
 
     @Override
-    public void addSecurityRole(String role) {
-        // NO-OP
-    }
-
-    @Override
     public void addServletMapping(String pattern, String name) {
         // NO-OP
     }
@@ -815,16 +829,6 @@ public class TesterContext implements Co
     }
 
     @Override
-    public boolean findSecurityRole(String role) {
-        return false;
-    }
-
-    @Override
-    public String[] findSecurityRoles() {
-        return null;
-    }
-
-    @Override
     public String findServletMapping(String pattern) {
         return null;
     }

Modified: tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java?rev=1494136&r1=1494135&r2=1494136&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java (original)
+++ tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java Tue Jun 18 
13:49:50 2013
@@ -16,15 +16,18 @@
  */
 package org.apache.catalina.realm;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.junit.Assert;
 import org.junit.Test;
 
+import org.apache.catalina.Context;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
 import org.apache.catalina.connector.TesterResponse;
+import org.apache.catalina.core.TesterContext;
 import org.apache.catalina.deploy.SecurityCollection;
 import org.apache.catalina.deploy.SecurityConstraint;
 import org.apache.catalina.startup.TesterMapRealm;
@@ -36,14 +39,92 @@ public class TestRealmBase {
     private static final String ROLE1 = "role1";
 
     @Test
-    public void testSingleRole() throws Exception {
+    public void testUserWithSingleRole() throws IOException {
+        List<String> userRoles = new ArrayList<>();
+        List<String> constraintRoles = new ArrayList<>();
+        List<String> applicationRoles = new ArrayList<>();
+
+        // Configure this test
+        userRoles.add(ROLE1);
+        constraintRoles.add(ROLE1);
+        applicationRoles.add(ROLE1);
+
+        doRoleTest(userRoles, constraintRoles, applicationRoles, true);
+    }
+
+
+    @Test
+    public void testUserWithNoRoles() throws IOException {
+        List<String> userRoles = new ArrayList<>();
+        List<String> constraintRoles = new ArrayList<>();
+        List<String> applicationRoles = new ArrayList<>();
+
+        // Configure this test
+        constraintRoles.add(ROLE1);
+        applicationRoles.add(ROLE1);
+
+        doRoleTest(userRoles, constraintRoles, applicationRoles, false);
+    }
+
+
+    @Test
+    public void testUserWithSingleRoleAndAllRoles() throws IOException {
+        List<String> userRoles = new ArrayList<>();
+        List<String> constraintRoles = new ArrayList<>();
+        List<String> applicationRoles = new ArrayList<>();
+
+        // Configure this test
+        userRoles.add(ROLE1);
+        applicationRoles.add(ROLE1);
+        constraintRoles.add(SecurityConstraint.ROLE_ALL_ROLES);
+
+        doRoleTest(userRoles, constraintRoles, applicationRoles, true);
+    }
+
+
+    @Test
+    public void testUserWithoutNoRolesAndAllRoles() throws IOException {
+        List<String> userRoles = new ArrayList<>();
+        List<String> constraintRoles = new ArrayList<>();
+        List<String> applicationRoles = new ArrayList<>();
+
+        // Configure this test
+        constraintRoles.add(SecurityConstraint.ROLE_ALL_ROLES);
+        applicationRoles.add(ROLE1);
+
+        doRoleTest(userRoles, constraintRoles, applicationRoles, false);
+    }
+
+
+    @Test
+    public void testAllRolesWithNoAppRole() throws IOException {
+        List<String> userRoles = new ArrayList<>();
+        List<String> constraintRoles = new ArrayList<>();
+        List<String> applicationRoles = new ArrayList<>();
+
+        // Configure this test
+        userRoles.add(ROLE1);
+        constraintRoles.add(SecurityConstraint.ROLE_ALL_ROLES);
+
+        doRoleTest(userRoles, constraintRoles, applicationRoles, false);
+    }
+
+
+    private void doRoleTest(List<String> userRoles,
+            List<String> constraintRoles, List<String> applicationRoles,
+            boolean expected) throws IOException {
+
         // Configure the users in the Realm
         TesterMapRealm mapRealm = new TesterMapRealm();
-        mapRealm.addUser("user", ROLE1);
+        for (String userRole : userRoles) {
+            mapRealm.addUser(USER1, userRole);
+        }
 
-        // Configure the security constraints for the resourc
+        // Configure the security constraints for the resource
         SecurityConstraint constraint = new SecurityConstraint();
-        constraint.addAuthRole(ROLE1);
+        for (String constraintRole : constraintRoles) {
+            constraint.addAuthRole(constraintRole);
+        }
         SecurityCollection collection = new SecurityCollection();
         collection.addPattern("/*");
         SecurityConstraint[] constraints =
@@ -52,16 +133,20 @@ public class TestRealmBase {
         // Set up the mock request and response
         Request request = new Request();
         Response response = new TesterResponse();
+        Context context = new TesterContext();
+        for (String applicationRole : applicationRoles) {
+            context.addSecurityRole(applicationRole);
+        }
+        request.setContext(context);
 
         // Set up an authenticated user
-        List<String> userRoles = new ArrayList<>();
-        userRoles.add(ROLE1);
         GenericPrincipal gp = new GenericPrincipal(USER1, PWD1, userRoles);
         request.setUserPrincipal(gp);
 
+        // Check if user meets constaints
         boolean result = mapRealm.hasResourcePermission(
                 request, response, constraints, null);
 
-        Assert.assertTrue(result);
+        Assert.assertEquals(Boolean.valueOf(expected), 
Boolean.valueOf(result));
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to