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]