[jboss-svn-commits] JBL Code SVN: r21427 - in labs/jbossrules/trunk/drools-guvnor/src: main/java/org/jboss/seam and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 11 07:11:52 EDT 2008


Author: jervisliu
Date: 2008-08-11 07:11:52 -0400 (Mon, 11 Aug 2008)
New Revision: 21427

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/jboss/seam/security/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/jboss/seam/security/permission/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/jboss/seam/security/permission/RoleBasedPermissionResolver.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/jboss/seam/security/
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/jboss/seam/security/permission/
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/jboss/seam/security/permission/RoleBasedPermissionResolverTest.java
Removed:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/RoleBasedPermissionResolver.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/RoleBasedPermissionResolverTest.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CategoryPathType.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageNameType.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageUUIDType.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
Log:
Be able to enable/disable RoleBasedPermission check from config: <security:role-based-permission-resolver enable-role-based-authorization="true"/>. By default it is disabled.

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CategoryPathType.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CategoryPathType.java	2008-08-11 10:53:32 UTC (rev 21426)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CategoryPathType.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -12,7 +12,7 @@
 		this.categoryPath = categoryPath;
 	}
 	
-	String getCategoryPath() {
+	public String getCategoryPath() {
 		return categoryPath;
 	}
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageNameType.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageNameType.java	2008-08-11 10:53:32 UTC (rev 21426)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageNameType.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -13,7 +13,7 @@
 		this.packageName = packageName;
 	}
 	
-	String getPackageName() {
+	public String getPackageName() {
 		return packageName;
 	}
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageUUIDType.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageUUIDType.java	2008-08-11 10:53:32 UTC (rev 21426)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/PackageUUIDType.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -13,7 +13,7 @@
 		this.uuid = uuid;
 	}
 	
-	String getUUID() {
+	public String getUUID() {
 		return uuid;
 	}
 

Deleted: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/RoleBasedPermissionResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/RoleBasedPermissionResolver.java	2008-08-11 10:53:32 UTC (rev 21426)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/RoleBasedPermissionResolver.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -1,209 +0,0 @@
-package org.drools.guvnor.server.security;
-
-import static org.jboss.seam.ScopeType.APPLICATION;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Set;
-
-import org.drools.guvnor.server.ServiceImplementation;
-import org.drools.repository.PackageItem;
-import org.drools.repository.RulesRepositoryException;
-import org.jboss.seam.Component;
-import org.jboss.seam.annotations.Create;
-import org.jboss.seam.annotations.Install;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Scope;
-import org.jboss.seam.annotations.Startup;
-import org.jboss.seam.annotations.intercept.BypassInterceptors;
-import org.jboss.seam.contexts.Contexts;
-import org.jboss.seam.security.Identity;
-import org.jboss.seam.security.permission.PermissionResolver;
-
-/**
- * PermissionResolvers are chained together to resolve permission check, the check returns true if
- * one of the PermissionResolvers in the chain returns true.
- *
- * This PermissionResolver resolves category-based permissions and package-based permissions. 
- * 
- * If the input is category-based request, it returns true under following situations:
- * 
- * For category-based permissions:
- * 1. The user is admin
- * Or
- * 2. The user has at least one analyst role, and at least one of the analyst role has access to requested category path.
- * Or
- * 3. The user does not have any Analyst role(eg, the user only has other roles like package.admin|package.developer|package.readonly)
- *
- * If the input is package-based request, it returns true under following situations:
- * 1. The user is admin
- * Or
- * 2. The user has one of the following roles package.admin|package.developer|package.readonly on the requested
- * package, and requested role requires lower privilege than assigned role(I.e., package.admin>package.developer>package.readonly)
- * Or
- * 3. The user is Analyst
- *
- *
-
- * @author Jervis Liu
- */
- at Name("org.drools.guvnor.server.security.roleBasedPermissionResolver")
- at Scope(APPLICATION)
- at BypassInterceptors
- at Install(precedence = org.jboss.seam.annotations.Install.APPLICATION)
- at Startup
-public class RoleBasedPermissionResolver implements PermissionResolver,
-		Serializable {
-	
-	private boolean enableRoleBasedAuthorization = false;
-
-	@Create
-	public void create() {
-	}
-
-	/**
-     * check permission
-     *
-     * @param requestedObject
-     *            the requestedObject must be an instance of CategoryPathType,
-     *            or PackageNameType or PackageUUIDType.
-     *            Otherwise return false;
-     * @param requestedRole
-     *            the requestedRole must be an instance of String, its value has to be one of the
-     *            followings: admin|analyst|package.admin|package.developer|package.readonly,
-     *            otherwise return false;
-     * @return true if the permission can be granted on the requested object with the
-     * requested role; return false otherwise.
-     *
-     */
-	public boolean hasPermission(Object requestedObject, String requestedRole) {
-		if (!((requestedObject instanceof CategoryPathType)
-				|| (requestedObject instanceof PackageNameType)
-				|| (requestedObject instanceof PackageUUIDType))) {
-			return false;
-		}
-		
-		if (!enableRoleBasedAuthorization) {
-			return true;
-		}
-		
-        RoleBasedPermissionStore pbps = (RoleBasedPermissionStore) Component
-				.getInstance("org.drools.guvnor.server.security.RoleBasedPermissionStore");
-		List<RoleBasedPermission> permissions = pbps
-				.getRoleBasedPermissionsByUserName(Identity.instance()
-						.getCredentials().getUsername());
-
-		for (RoleBasedPermission p : permissions) {
-			if (RoleTypes.ADMIN.equalsIgnoreCase(p.getRole())) {
-				return true;
-			}
-		}    	
-    	
-		if (requestedObject instanceof CategoryPathType) {
-			String requestedPath = ((CategoryPathType) requestedObject)
-					.getCategoryPath();
-
-			//category path based permission check only applies to analyst role. If there is no Analyst
-			//role (e.g, only other roles like admin|package.admin|package.dev|package.readonly) we always grant permisssion.
-			boolean isPermitted = true;
-			//return true when there is no analyst role, or one of the analyst role has permission to access this category
-			for (RoleBasedPermission pbp : permissions) {
-				if (RoleTypes.ANALYST.equals(pbp.getRole())) {
-					isPermitted = false;
-					if(isPermittedCategoryPath(requestedPath, pbp.getCategoryPath())) {
-						return true;
-					}
-				}
-			}
-
-			return isPermitted;
-		} else {
-			String targetUUDI = "";
-
-			if (requestedObject instanceof PackageUUIDType) {
-				targetUUDI = ((PackageUUIDType) requestedObject).getUUID();
-
-			} else if (requestedObject instanceof PackageNameType) {
-				try {
-					ServiceImplementation si = (ServiceImplementation) Component
-							.getInstance("org.drools.guvnor.client.rpc.RepositoryService");
-					PackageItem source = si.repository
-							.loadPackage(((PackageNameType) requestedObject)
-									.getPackageName());
-					targetUUDI = source.getUUID();
-				} catch (RulesRepositoryException e) {
-					return false;
-				}
-			}			
-
-			//package based permission check only applies to admin|package.admin|package.dev|package.readonly role.
-			//For Analyst we always grant permission.
-			for (RoleBasedPermission pbp : permissions) {
-				if (RoleTypes.ANALYST.equals(pbp.getRole())) {
-					return true;
-				} else if (targetUUDI.equalsIgnoreCase(pbp.getPackageUUID())
-						&& isPermittedPackage(requestedRole, pbp.getRole())) {
-					return true;
-				}
-			}
-
-			return false;
-		} 
-	}
-
-	private boolean isPermittedCategoryPath(String requestedPath, String allowedPath) {
-		if(requestedPath == null || allowedPath == null) {
-			return false;
-		}
-		return requestedPath.equals(allowedPath) || isSubPath(allowedPath, requestedPath);
-	}
-	
-
-	private boolean isPermittedPackage(String requestedAction, String role) {
-		if (RoleTypes.PACKAGE_ADMIN.equalsIgnoreCase(role)) {
-			return true;
-		} else if (RoleTypes.PACKAGE_DEVELOPER.equalsIgnoreCase(role)) {
-			if (RoleTypes.PACKAGE_ADMIN.equalsIgnoreCase(requestedAction)) {
-				return false;
-			} else if (RoleTypes.PACKAGE_DEVELOPER.equalsIgnoreCase(requestedAction)) {
-				return true;
-			} else if (RoleTypes.PACKAGE_READONLY.equalsIgnoreCase(requestedAction)) {
-				return true;
-			}
-		} else if (RoleTypes.PACKAGE_READONLY.equalsIgnoreCase(role)) {
-			if (RoleTypes.PACKAGE_ADMIN.equalsIgnoreCase(requestedAction)) {
-				return false;
-			} else if (RoleTypes.PACKAGE_DEVELOPER.equalsIgnoreCase(requestedAction)) {
-				return false;
-			} else if (RoleTypes.PACKAGE_READONLY.equalsIgnoreCase(requestedAction)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	boolean isSubPath(String parentPath, String subPath) {
-		parentPath = (parentPath.startsWith("/")) ? parentPath.substring(1) : parentPath;
-		subPath = (subPath.startsWith("/")) ? subPath.substring(1) : subPath;
-		String[] parentTags = parentPath.split("/");
-		String[] subTags = subPath.split("/");
-		if (parentTags.length > subTags.length) return false;
-		for (int i = 0; i < parentTags.length; i++) {
-			if (!parentTags[i].equals(subTags[i])) return false;
-		}
-
-		return true;
-	}
-
-	public void filterSetByAction(Set<Object> targets, String action) {
-	}
-
-	public boolean isEnableRoleBasedAuthorization() {
-		return enableRoleBasedAuthorization;
-	}
-
-	public void setEnableRoleBasedAuthorization(boolean enableRoleBasedAuthorization) {
-		this.enableRoleBasedAuthorization = enableRoleBasedAuthorization;
-	}
-}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/jboss/seam/security/permission/RoleBasedPermissionResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/jboss/seam/security/permission/RoleBasedPermissionResolver.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/jboss/seam/security/permission/RoleBasedPermissionResolver.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -0,0 +1,215 @@
+package org.jboss.seam.security.permission;
+
+import static org.jboss.seam.ScopeType.APPLICATION;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
+
+import org.drools.guvnor.server.ServiceImplementation;
+import org.drools.guvnor.server.security.CategoryPathType;
+import org.drools.guvnor.server.security.PackageNameType;
+import org.drools.guvnor.server.security.PackageUUIDType;
+import org.drools.guvnor.server.security.RoleBasedPermission;
+import org.drools.guvnor.server.security.RoleBasedPermissionStore;
+import org.drools.guvnor.server.security.RoleTypes;
+import org.drools.repository.PackageItem;
+import org.drools.repository.RulesRepositoryException;
+import org.jboss.seam.Component;
+import org.jboss.seam.annotations.Create;
+import org.jboss.seam.annotations.Install;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.Startup;
+import org.jboss.seam.annotations.intercept.BypassInterceptors;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.security.Identity;
+import org.jboss.seam.security.permission.PermissionResolver;
+
+/**
+ * PermissionResolvers are chained together to resolve permission check, the check returns true if
+ * one of the PermissionResolvers in the chain returns true.
+ *
+ * This PermissionResolver resolves category-based permissions and package-based permissions.
+ *
+ * If the input is category-based request, it returns true under following situations:
+ *
+ * For category-based permissions:
+ * 1. The user is admin
+ * Or
+ * 2. The user has at least one analyst role, and at least one of the analyst role has access to requested category path.
+ * Or
+ * 3. The user does not have any Analyst role(eg, the user only has other roles like package.admin|package.developer|package.readonly)
+ *
+ * If the input is package-based request, it returns true under following situations:
+ * 1. The user is admin
+ * Or
+ * 2. The user has one of the following roles package.admin|package.developer|package.readonly on the requested
+ * package, and requested role requires lower privilege than assigned role(I.e., package.admin>package.developer>package.readonly)
+ * Or
+ * 3. The user is Analyst
+ *
+ *
+
+ * @author Jervis Liu
+ */
+ at Name("org.jboss.seam.security.roleBasedPermissionResolver")
+ at Scope(APPLICATION)
+ at BypassInterceptors
+ at Install(precedence = org.jboss.seam.annotations.Install.APPLICATION)
+ at Startup
+public class RoleBasedPermissionResolver implements PermissionResolver,
+		Serializable {
+
+	private boolean enableRoleBasedAuthorization = false;
+
+	@Create
+	public void create() {
+	}
+
+	/**
+     * check permission
+     *
+     * @param requestedObject
+     *            the requestedObject must be an instance of CategoryPathType,
+     *            or PackageNameType or PackageUUIDType.
+     *            Otherwise return false;
+     * @param requestedRole
+     *            the requestedRole must be an instance of String, its value has to be one of the
+     *            followings: admin|analyst|package.admin|package.developer|package.readonly,
+     *            otherwise return false;
+     * @return true if the permission can be granted on the requested object with the
+     * requested role; return false otherwise.
+     *
+     */
+	public boolean hasPermission(Object requestedObject, String requestedRole) {
+		if (!((requestedObject instanceof CategoryPathType)
+				|| (requestedObject instanceof PackageNameType)
+				|| (requestedObject instanceof PackageUUIDType))) {
+			return false;
+		}
+
+		if (!enableRoleBasedAuthorization) {
+			return true;
+		}
+
+        RoleBasedPermissionStore pbps = (RoleBasedPermissionStore) Component
+				.getInstance("org.drools.guvnor.server.security.RoleBasedPermissionStore");
+		List<RoleBasedPermission> permissions = pbps
+				.getRoleBasedPermissionsByUserName(Identity.instance()
+						.getCredentials().getUsername());
+
+		for (RoleBasedPermission p : permissions) {
+			if (RoleTypes.ADMIN.equalsIgnoreCase(p.getRole())) {
+				return true;
+			}
+		}
+
+		if (requestedObject instanceof CategoryPathType) {
+			String requestedPath = ((CategoryPathType) requestedObject)
+					.getCategoryPath();
+
+			//category path based permission check only applies to analyst role. If there is no Analyst
+			//role (e.g, only other roles like admin|package.admin|package.dev|package.readonly) we always grant permisssion.
+			boolean isPermitted = true;
+			//return true when there is no analyst role, or one of the analyst role has permission to access this category
+			for (RoleBasedPermission pbp : permissions) {
+				if (RoleTypes.ANALYST.equals(pbp.getRole())) {
+					isPermitted = false;
+					if(isPermittedCategoryPath(requestedPath, pbp.getCategoryPath())) {
+						return true;
+					}
+				}
+			}
+
+			return isPermitted;
+		} else {
+			String targetUUDI = "";
+
+			if (requestedObject instanceof PackageUUIDType) {
+				targetUUDI = ((PackageUUIDType) requestedObject).getUUID();
+
+			} else if (requestedObject instanceof PackageNameType) {
+				try {
+					ServiceImplementation si = (ServiceImplementation) Component
+							.getInstance("org.drools.guvnor.client.rpc.RepositoryService");
+					PackageItem source = si.repository
+							.loadPackage(((PackageNameType) requestedObject)
+									.getPackageName());
+					targetUUDI = source.getUUID();
+				} catch (RulesRepositoryException e) {
+					return false;
+				}
+			}
+
+			//package based permission check only applies to admin|package.admin|package.dev|package.readonly role.
+			//For Analyst we always grant permission.
+			for (RoleBasedPermission pbp : permissions) {
+				if (RoleTypes.ANALYST.equals(pbp.getRole())) {
+					return true;
+				} else if (targetUUDI.equalsIgnoreCase(pbp.getPackageUUID())
+						&& isPermittedPackage(requestedRole, pbp.getRole())) {
+					return true;
+				}
+			}
+
+			return false;
+		}
+	}
+
+	private boolean isPermittedCategoryPath(String requestedPath, String allowedPath) {
+		if(requestedPath == null || allowedPath == null) {
+			return false;
+		}
+		return requestedPath.equals(allowedPath) || isSubPath(allowedPath, requestedPath);
+	}
+
+
+	private boolean isPermittedPackage(String requestedAction, String role) {
+		if (RoleTypes.PACKAGE_ADMIN.equalsIgnoreCase(role)) {
+			return true;
+		} else if (RoleTypes.PACKAGE_DEVELOPER.equalsIgnoreCase(role)) {
+			if (RoleTypes.PACKAGE_ADMIN.equalsIgnoreCase(requestedAction)) {
+				return false;
+			} else if (RoleTypes.PACKAGE_DEVELOPER.equalsIgnoreCase(requestedAction)) {
+				return true;
+			} else if (RoleTypes.PACKAGE_READONLY.equalsIgnoreCase(requestedAction)) {
+				return true;
+			}
+		} else if (RoleTypes.PACKAGE_READONLY.equalsIgnoreCase(role)) {
+			if (RoleTypes.PACKAGE_ADMIN.equalsIgnoreCase(requestedAction)) {
+				return false;
+			} else if (RoleTypes.PACKAGE_DEVELOPER.equalsIgnoreCase(requestedAction)) {
+				return false;
+			} else if (RoleTypes.PACKAGE_READONLY.equalsIgnoreCase(requestedAction)) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	boolean isSubPath(String parentPath, String subPath) {
+		parentPath = (parentPath.startsWith("/")) ? parentPath.substring(1) : parentPath;
+		subPath = (subPath.startsWith("/")) ? subPath.substring(1) : subPath;
+		String[] parentTags = parentPath.split("/");
+		String[] subTags = subPath.split("/");
+		if (parentTags.length > subTags.length) return false;
+		for (int i = 0; i < parentTags.length; i++) {
+			if (!parentTags[i].equals(subTags[i])) return false;
+		}
+
+		return true;
+	}
+
+	public void filterSetByAction(Set<Object> targets, String action) {
+	}
+
+	public boolean isEnableRoleBasedAuthorization() {
+		return enableRoleBasedAuthorization;
+	}
+
+	public void setEnableRoleBasedAuthorization(boolean enableRoleBasedAuthorization) {
+		this.enableRoleBasedAuthorization = enableRoleBasedAuthorization;
+	}
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java	2008-08-11 10:53:32 UTC (rev 21426)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -14,9 +14,8 @@
 import org.drools.guvnor.client.rpc.TableDataResult;
 import org.drools.guvnor.client.rpc.TableDataRow;
 import org.drools.guvnor.client.rulelist.AssetItemGrid;
+import org.drools.guvnor.server.security.MockIdentity;
 import org.drools.guvnor.server.security.MockRoleBasedPermissionStore;
-import org.drools.guvnor.server.security.RoleBasedPermissionResolver;
-import org.drools.guvnor.server.security.MockIdentity;
 import org.drools.guvnor.server.security.RoleBasedPermission;
 import org.drools.guvnor.server.security.RoleTypes;
 import org.drools.guvnor.server.util.TestEnvironmentSessionHelper;
@@ -27,6 +26,7 @@
 import org.jboss.seam.contexts.Lifecycle;
 import org.jboss.seam.security.AuthorizationException;
 import org.jboss.seam.security.permission.PermissionResolver;
+import org.jboss.seam.security.permission.RoleBasedPermissionResolver;
 
 import junit.framework.TestCase;
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2008-08-11 10:53:32 UTC (rev 21426)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -67,7 +67,6 @@
 import org.drools.guvnor.client.rpc.ValidatedResponse;
 import org.drools.guvnor.client.rulelist.AssetItemGrid;
 import org.drools.guvnor.server.ServiceImplementation;
-import org.drools.guvnor.server.security.RoleBasedPermissionResolver;
 import org.drools.guvnor.server.security.MockIdentity;
 import org.drools.guvnor.server.security.PackageNameType;
 import org.drools.guvnor.server.security.RoleTypes;
@@ -91,6 +90,7 @@
 import org.jboss.seam.contexts.Lifecycle;
 import org.jboss.seam.security.AuthorizationException;
 import org.jboss.seam.security.permission.PermissionResolver;
+import org.jboss.seam.security.permission.RoleBasedPermissionResolver;
 
 import com.google.gwt.user.client.rpc.IsSerializable;
 import com.google.gwt.user.client.rpc.SerializableException;

Deleted: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/RoleBasedPermissionResolverTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/RoleBasedPermissionResolverTest.java	2008-08-11 10:53:32 UTC (rev 21426)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/RoleBasedPermissionResolverTest.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -1,207 +0,0 @@
-package org.drools.guvnor.server.security;
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed 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.
- */
-
-
-
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.jboss.seam.contexts.Contexts;
-import org.jboss.seam.contexts.Lifecycle;
-import org.jboss.seam.security.Identity;
-
-import junit.framework.TestCase;
-
-public class RoleBasedPermissionResolverTest extends TestCase {
-
-    public void testCategoryBasedPermissionAnalyst() throws Exception {
-    	//Mock up SEAM contexts
-    	Map application = new HashMap<String, Object>();
-    	Lifecycle.beginApplication(application);
-    	Lifecycle.beginCall();
-    	MockIdentity midentity = new MockIdentity();
-    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
-
-    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_ADMIN, "631b3d79-5b67-42fb-83da-714624970a6b", null));
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ANALYST, null, "category1"));
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ANALYST, null, "category2"));
-    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
-    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-
-    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
-    	resolver.setEnableRoleBasedAuthorization(true);
-    	
-        assertTrue(resolver.hasPermission(new CategoryPathType("category1"), null));
-        assertTrue(resolver.hasPermission(new CategoryPathType("category2"), null));
-        assertFalse(resolver.hasPermission(new CategoryPathType("category3/category3"), null));
-        assertTrue(resolver.hasPermission(new CategoryPathType("/category1/category2"), null));
-
-    	Lifecycle.endApplication();
-    }
-
-    public void testIsSubPath() {
-    	RoleBasedPermissionResolver pr = new RoleBasedPermissionResolver();
-    	assertTrue(pr.isSubPath("foo", "foo/bar"));
-    	assertTrue(pr.isSubPath("foo", "/foo/bar"));
-    	assertTrue(pr.isSubPath("/foo/bar", "/foo/bar"));
-    	assertFalse(pr.isSubPath("/foo/bar", "foo"));
-
-    	assertTrue(pr.isSubPath("foo", "foo/bar/baz"));
-    	assertTrue(pr.isSubPath("foo/bar", "foo/bar/baz"));
-    	assertFalse(pr.isSubPath("wang", "foo/bar/baz"));
-    	assertFalse(pr.isSubPath("wang/whee", "foo/bar/baz"));
-
-    	assertFalse(pr.isSubPath("foo1", "foo2"));
-    	assertTrue(pr.isSubPath("foo1", "foo1"));
-    }
-    
-
-	//admin: everything
-    public void testPackageBasedPermissionAdmin() throws Exception {
-    	//Mock up SEAM contexts
-    	Map application = new HashMap<String, Object>();    	
-    	Lifecycle.beginApplication(application);
-    	Lifecycle.beginCall();   	
-    	MockIdentity midentity = new MockIdentity();
-    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
-    	
-    	
-    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ADMIN, "631b3d79-5b67-42fb-83da-714624970a6b", null));
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));		
-    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
-    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-    	
-    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
-    	resolver.setEnableRoleBasedAuthorization(true);
-    	
-        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.ADMIN));
-        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.ADMIN));
-
-    	Lifecycle.endApplication();
-    }    
-	
-    //Package.admin: everything for that package, including creating snapshots for that package.
-    public void testPackageBasedPermissionPackageAdmin() throws Exception {
-    	//Mock up SEAM contexts
-    	Map application = new HashMap<String, Object>();    	
-    	Lifecycle.beginApplication(application);
-    	Lifecycle.beginCall();   	
-    	MockIdentity midentity = new MockIdentity();
-    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);    	
-    	
-    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_ADMIN, "631b3d79-5b67-42fb-83da-714624970a6b", null));
-    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
-    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-    	
-    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
-    	resolver.setEnableRoleBasedAuthorization(true);
-    	
-        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.PACKAGE_ADMIN));
-    	assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.PACKAGE_DEVELOPER));
-        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.PACKAGE_READONLY));
-        
-        assertFalse(resolver.hasPermission("47982482-7912-4881-97ec-e852494383d7", RoleTypes.PACKAGE_READONLY));
-
-    	Lifecycle.endApplication();   
-    } 
-    
-    //Package.developer:  everything for that package, NOT snapshots (can view snapshots of that package only)
-    public void testPackageBasedPermissionPackageDeveloper() throws Exception {
-    	//Mock up SEAM contexts
-    	Map application = new HashMap<String, Object>();    	
-    	Lifecycle.beginApplication(application);
-    	Lifecycle.beginCall();   	
-    	MockIdentity midentity = new MockIdentity();	
-    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
-    	
-    	
-    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_DEVELOPER, "47982482-7912-4881-97ec-e852494383d7", null));		
-    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
-    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-    	
-    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
-    	resolver.setEnableRoleBasedAuthorization(true);
-    	
-    	assertFalse(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_ADMIN));
-    	assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_DEVELOPER));
-        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_READONLY));
-        
-        assertFalse(resolver.hasPermission("631b3d79-5b67-42fb-83da-714624970a6b", RoleTypes.PACKAGE_READONLY));
-
-    	Lifecycle.endApplication();   
-    }    
-   
-    //Package.readonly: read only as the name suggested
-    public void testPackageBasedPermissionPackageReadOnly() throws Exception {
-    	//Mock up SEAM contexts
-    	Map application = new HashMap<String, Object>();    	
-    	Lifecycle.beginApplication(application);
-    	Lifecycle.beginCall();   	
-    	MockIdentity midentity = new MockIdentity();
-    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
-    	
-    	
-    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));		
-    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
-    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-    	
-    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
-    	resolver.setEnableRoleBasedAuthorization(true);
-    	
-        assertFalse(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_DEVELOPER));
-        assertFalse(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_DEVELOPER));
-        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_READONLY));
-        
-        assertFalse(resolver.hasPermission("631b3d79-5b67-42fb-83da-714624970a6b", RoleTypes.PACKAGE_READONLY));
-
-    	Lifecycle.endApplication();   
-    } 
-        
-    public void testPackageBasedPermissionAnalyst() throws Exception {
-    	//Mock up SEAM contexts
-    	Map application = new HashMap<String, Object>();    	
-    	Lifecycle.beginApplication(application);
-    	Lifecycle.beginCall();   	
-    	MockIdentity midentity = new MockIdentity();
-    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
-    	
-    	
-    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));		
-		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ANALYST, null, "category1"));		
-    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
-    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-    	
-    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
-    	resolver.setEnableRoleBasedAuthorization(true);
-        
-        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.ANALYST));
-        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.ANALYST));
-
-    	Lifecycle.endApplication();   
-    } 
-    
- }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/jboss/seam/security/permission/RoleBasedPermissionResolverTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/jboss/seam/security/permission/RoleBasedPermissionResolverTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/jboss/seam/security/permission/RoleBasedPermissionResolverTest.java	2008-08-11 11:11:52 UTC (rev 21427)
@@ -0,0 +1,213 @@
+package org.jboss.seam.security.permission;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed 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.
+ */
+
+
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.guvnor.server.security.CategoryPathType;
+import org.drools.guvnor.server.security.MockIdentity;
+import org.drools.guvnor.server.security.MockRoleBasedPermissionStore;
+import org.drools.guvnor.server.security.PackageUUIDType;
+import org.drools.guvnor.server.security.RoleBasedPermission;
+import org.drools.guvnor.server.security.RoleTypes;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.contexts.Lifecycle;
+import org.jboss.seam.security.Identity;
+
+import junit.framework.TestCase;
+
+public class RoleBasedPermissionResolverTest extends TestCase {
+
+    public void testCategoryBasedPermissionAnalyst() throws Exception {
+    	//Mock up SEAM contexts
+    	Map application = new HashMap<String, Object>();
+    	Lifecycle.beginApplication(application);
+    	Lifecycle.beginCall();
+    	MockIdentity midentity = new MockIdentity();
+    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
+
+    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_ADMIN, "631b3d79-5b67-42fb-83da-714624970a6b", null));
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ANALYST, null, "category1"));
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ANALYST, null, "category2"));
+    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
+    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+
+    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+    	resolver.setEnableRoleBasedAuthorization(true);
+    	
+        assertTrue(resolver.hasPermission(new CategoryPathType("category1"), null));
+        assertTrue(resolver.hasPermission(new CategoryPathType("category2"), null));
+        assertFalse(resolver.hasPermission(new CategoryPathType("category3/category3"), null));
+        assertTrue(resolver.hasPermission(new CategoryPathType("/category1/category2"), null));
+
+    	Lifecycle.endApplication();
+    }
+
+    public void testIsSubPath() {
+    	RoleBasedPermissionResolver pr = new RoleBasedPermissionResolver();
+    	assertTrue(pr.isSubPath("foo", "foo/bar"));
+    	assertTrue(pr.isSubPath("foo", "/foo/bar"));
+    	assertTrue(pr.isSubPath("/foo/bar", "/foo/bar"));
+    	assertFalse(pr.isSubPath("/foo/bar", "foo"));
+
+    	assertTrue(pr.isSubPath("foo", "foo/bar/baz"));
+    	assertTrue(pr.isSubPath("foo/bar", "foo/bar/baz"));
+    	assertFalse(pr.isSubPath("wang", "foo/bar/baz"));
+    	assertFalse(pr.isSubPath("wang/whee", "foo/bar/baz"));
+
+    	assertFalse(pr.isSubPath("foo1", "foo2"));
+    	assertTrue(pr.isSubPath("foo1", "foo1"));
+    }
+    
+
+	//admin: everything
+    public void testPackageBasedPermissionAdmin() throws Exception {
+    	//Mock up SEAM contexts
+    	Map application = new HashMap<String, Object>();    	
+    	Lifecycle.beginApplication(application);
+    	Lifecycle.beginCall();   	
+    	MockIdentity midentity = new MockIdentity();
+    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
+    	
+    	
+    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ADMIN, "631b3d79-5b67-42fb-83da-714624970a6b", null));
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));		
+    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
+    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+    	
+    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+    	resolver.setEnableRoleBasedAuthorization(true);
+    	
+        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.ADMIN));
+        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.ADMIN));
+
+    	Lifecycle.endApplication();
+    }    
+	
+    //Package.admin: everything for that package, including creating snapshots for that package.
+    public void testPackageBasedPermissionPackageAdmin() throws Exception {
+    	//Mock up SEAM contexts
+    	Map application = new HashMap<String, Object>();    	
+    	Lifecycle.beginApplication(application);
+    	Lifecycle.beginCall();   	
+    	MockIdentity midentity = new MockIdentity();
+    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);    	
+    	
+    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_ADMIN, "631b3d79-5b67-42fb-83da-714624970a6b", null));
+    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
+    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+    	
+    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+    	resolver.setEnableRoleBasedAuthorization(true);
+    	
+        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.PACKAGE_ADMIN));
+    	assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.PACKAGE_DEVELOPER));
+        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.PACKAGE_READONLY));
+        
+        assertFalse(resolver.hasPermission("47982482-7912-4881-97ec-e852494383d7", RoleTypes.PACKAGE_READONLY));
+
+    	Lifecycle.endApplication();   
+    } 
+    
+    //Package.developer:  everything for that package, NOT snapshots (can view snapshots of that package only)
+    public void testPackageBasedPermissionPackageDeveloper() throws Exception {
+    	//Mock up SEAM contexts
+    	Map application = new HashMap<String, Object>();    	
+    	Lifecycle.beginApplication(application);
+    	Lifecycle.beginCall();   	
+    	MockIdentity midentity = new MockIdentity();	
+    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
+    	
+    	
+    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_DEVELOPER, "47982482-7912-4881-97ec-e852494383d7", null));		
+    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
+    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+    	
+    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+    	resolver.setEnableRoleBasedAuthorization(true);
+    	
+    	assertFalse(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_ADMIN));
+    	assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_DEVELOPER));
+        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_READONLY));
+        
+        assertFalse(resolver.hasPermission("631b3d79-5b67-42fb-83da-714624970a6b", RoleTypes.PACKAGE_READONLY));
+
+    	Lifecycle.endApplication();   
+    }    
+   
+    //Package.readonly: read only as the name suggested
+    public void testPackageBasedPermissionPackageReadOnly() throws Exception {
+    	//Mock up SEAM contexts
+    	Map application = new HashMap<String, Object>();    	
+    	Lifecycle.beginApplication(application);
+    	Lifecycle.beginCall();   	
+    	MockIdentity midentity = new MockIdentity();
+    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
+    	
+    	
+    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));		
+    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
+    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+    	
+    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+    	resolver.setEnableRoleBasedAuthorization(true);
+    	
+        assertFalse(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_DEVELOPER));
+        assertFalse(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_DEVELOPER));
+        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.PACKAGE_READONLY));
+        
+        assertFalse(resolver.hasPermission("631b3d79-5b67-42fb-83da-714624970a6b", RoleTypes.PACKAGE_READONLY));
+
+    	Lifecycle.endApplication();   
+    } 
+        
+    public void testPackageBasedPermissionAnalyst() throws Exception {
+    	//Mock up SEAM contexts
+    	Map application = new HashMap<String, Object>();    	
+    	Lifecycle.beginApplication(application);
+    	Lifecycle.beginCall();   	
+    	MockIdentity midentity = new MockIdentity();
+    	Contexts.getSessionContext().set("org.jboss.seam.security.identity", midentity);
+    	
+    	
+    	List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.PACKAGE_READONLY, "47982482-7912-4881-97ec-e852494383d7", null));		
+		pbps.add(new RoleBasedPermission("jervis", RoleTypes.ANALYST, null, "category1"));		
+    	MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);    
+    	Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+    	
+    	RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+    	resolver.setEnableRoleBasedAuthorization(true);
+        
+        assertTrue(resolver.hasPermission(new PackageUUIDType("47982482-7912-4881-97ec-e852494383d7"), RoleTypes.ANALYST));
+        assertTrue(resolver.hasPermission(new PackageUUIDType("631b3d79-5b67-42fb-83da-714624970a6b"), RoleTypes.ANALYST));
+
+    	Lifecycle.endApplication();   
+    } 
+    
+ }
\ No newline at end of file




More information about the jboss-svn-commits mailing list