[jboss-svn-commits] JBL Code SVN: r21266 - in labs/jbossrules/trunk/drools-guvnor/src: main/java/org/drools/guvnor/client/common and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 29 01:07:50 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-07-29 01:07:48 -0400 (Tue, 29 Jul 2008)
New Revision: 21266

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilities.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CapabilityCalculator.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/CapabilityCalculatorTest.java
Removed:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilies.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/JBRMSEntryPoint.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GenericCallback.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityService.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityServiceAsync.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/SecurityServiceImpl.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/ClassicDRLImporter.java
Log:
fixing busted tests, and some security stuff

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/JBRMSEntryPoint.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/JBRMSEntryPoint.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/JBRMSEntryPoint.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -20,12 +20,11 @@
 import org.drools.guvnor.client.explorer.ExplorerLayoutManager;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.rpc.UserSecurityContext;
+import org.drools.guvnor.client.security.Capabilities;
 
 import com.google.gwt.core.client.EntryPoint;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.HistoryListener;
-import com.google.gwt.user.client.ui.RootPanel;
-import com.google.gwt.user.client.ui.Widget;
 import com.gwtext.client.util.CSS;
 import com.gwtext.client.widgets.Panel;
 import com.gwtext.client.widgets.QuickTips;
@@ -56,6 +55,11 @@
     }
 
 	private Panel createMain() {
+		RepositoryServiceFactory.getService().getUserCapabilities(new GenericCallback<Capabilities>() {
+			public void onSuccess(Capabilities cp) {
+				System.out.println("Authorization completed...");
+			}
+		});
 		return (new ExplorerLayoutManager(loggedInUserInfo)).getBaseLayout();
 	}
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GenericCallback.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GenericCallback.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GenericCallback.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -28,9 +28,9 @@
  *
  * @author Michael Neale
  */
-public abstract class GenericCallback
+public abstract class GenericCallback<T>
     implements
-    AsyncCallback {
+    AsyncCallback<T> {
 
     public void onFailure(Throwable t) {
     	LoadingPopup.close();
@@ -54,5 +54,4 @@
 
     }
 
-    public abstract void onSuccess(Object data);
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -21,6 +21,7 @@
 
 import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.guvnor.client.modeldriven.testing.Scenario;
+import org.drools.guvnor.client.security.Capabilities;
 
 import com.google.gwt.user.client.rpc.RemoteService;
 import com.google.gwt.user.client.rpc.SerializableException;
@@ -420,4 +421,11 @@
      */
     public TableDataResult queryMetaData(final MetaDataQuery[] qr, Date createdAfter, Date createdBefore, Date modifiedAfter, Date modifiedBefore,
     		boolean seekArchived, int skip, int numRows) throws SerializableException;
+
+    /**
+     * This will return the capabilities which determine what is shown in the GUI.
+     * Based on the users roles and permissions.
+     */
+    public Capabilities getUserCapabilities();
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -86,7 +86,9 @@
 	public void loadDropDownExpression(java.lang.String[] p0, java.lang.String p1, AsyncCallback cb);
 	public void queryFullText(java.lang.String p0, boolean p1, int p2, int p3, AsyncCallback cb);
 	public void queryMetaData(org.drools.guvnor.client.rpc.MetaDataQuery[] p0, java.util.Date p1, java.util.Date p2, java.util.Date p3, java.util.Date p4, boolean p5, int p6, int p7, AsyncCallback cb);
+	public void getUserCapabilities(AsyncCallback cb);
 
 
 
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityService.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityService.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -17,6 +17,8 @@
 
 
 
+import org.drools.guvnor.client.security.Capabilities;
+
 import com.google.gwt.user.client.rpc.RemoteService;
 
 /**
@@ -41,4 +43,5 @@
      */
     public UserSecurityContext getCurrentUser();
 
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityServiceAsync.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/SecurityServiceAsync.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -1,13 +1,13 @@
 package org.drools.guvnor.client.rpc;
 /*
  * 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.
@@ -22,14 +22,14 @@
 
 /**
  * Contains methods for authenticating/authorising from the front end.
- * 
+ *
  * @author Michael Neale
  */
 public interface SecurityServiceAsync extends RemoteService {
 
 
     public void login(String userName, String password, AsyncCallback cb);
-    
+
     public void getCurrentUser(AsyncCallback cb);
-    
+
 }
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilies.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilies.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilies.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -1,43 +0,0 @@
-package org.drools.guvnor.client.security;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.google.gwt.user.client.rpc.IsSerializable;
-
-/**
- * This is used to turn off GUI functionality. The server decides what should be visible
- * based on roles and permissions granted.
- *
- * @author Michael Neale
- *
- */
-public class Capabilies implements IsSerializable {
-
-	public static enum Allow {
-		SHOW_CATEGORY_VIEW,//hmmm.. don't need this - will always show
-		SHOW_PACKAGE_VIEW,  //(show status list view as well) if they have any package perms
-		SHOW_CREATE_NEW_ASSET, //if they have any package perms not read only
-		SHOW_CREATE_NEW_PACKAGE, //if they are package admin
-		SHOW_ADMIN, //if they are admin, package admin??
-		SHOW_QA, //if they have any package perms
-		SHOW_DEPLOYMENT //if they are package admin??
-	}
-
-	public List<Allow> list = new ArrayList<Allow>();
-
-	/**
-	 * Grants all capabilities.
-	 * Only used for when there is basically no login.
-	 */
-	public static Capabilies all() {
-		Capabilies cp = new Capabilies();
-		Allow[] all =  Allow.values();
-		for (int i = 0; i < all.length; i++) {
-			cp.list.add(all[i]);
-		}
-		return cp;
-	}
-
-}

Copied: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilities.java (from rev 21245, labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilies.java)
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilities.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/security/Capabilities.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -0,0 +1,47 @@
+package org.drools.guvnor.client.security;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * This is used to turn off GUI functionality. The server decides what should be visible
+ * based on roles and permissions granted.
+ *
+ * @author Michael Neale
+ *
+ */
+public class Capabilities implements IsSerializable {
+
+
+	public static final Integer SHOW_PACKAGE_VIEW = 1;  //(show status list view as well) if they have any package perms
+	public static final Integer SHOW_CREATE_NEW_ASSET = 2; //if they have any package perms not read only
+	public static final Integer SHOW_CREATE_NEW_PACKAGE = 3; //if they are package admin
+	public static final Integer	SHOW_ADMIN = 4; //if they are admin, package admin??
+	public static final Integer	SHOW_QA = 5; //if they have any package perms
+	public static final Integer	SHOW_DEPLOYMENT = 6; //if they are package admin??
+	public static final Integer SHOW_DEPLOYMENT_NEW = 7; //can create a new depl, rename etc...
+
+	public List<Integer> list = new ArrayList<Integer>();
+
+	/**
+	 * Grants all capabilities.
+	 * Only used for when there is basically no login.
+	 */
+	public static Capabilities all() {
+
+		Capabilities cp = new Capabilities();
+		cp.list.add(SHOW_PACKAGE_VIEW);
+		cp.list.add(SHOW_CREATE_NEW_ASSET);
+		cp.list.add(SHOW_CREATE_NEW_PACKAGE);
+		cp.list.add(SHOW_ADMIN);
+		cp.list.add(SHOW_QA);
+		cp.list.add(SHOW_DEPLOYMENT);
+		cp.list.add(SHOW_DEPLOYMENT_NEW);
+
+		return cp;
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -75,6 +75,7 @@
 import org.drools.guvnor.client.rpc.TableDataResult;
 import org.drools.guvnor.client.rpc.TableDataRow;
 import org.drools.guvnor.client.rpc.ValidatedResponse;
+import org.drools.guvnor.client.security.Capabilities;
 import org.drools.guvnor.server.builder.BRMSPackageBuilder;
 import org.drools.guvnor.server.builder.ContentAssemblyError;
 import org.drools.guvnor.server.builder.ContentPackageAssembler;
@@ -129,7 +130,7 @@
 /**
  * This is the implementation of the repository service to drive the GWT based
  * front end.
- * 
+ *
  * @author Michael Neale
  */
 @Name("org.drools.guvnor.client.rpc.RepositoryService")
@@ -328,14 +329,14 @@
 	@Restrict("#{identity.loggedIn}")
 	/**
 	 * loadRuleListForCategories
-	 * 
-	 * Role-based Authorization check: This method can be accessed if user has 
+	 *
+	 * Role-based Authorization check: This method can be accessed if user has
 	 * following permissions:
-	 * 1. The user has Analyst role and this role has permission to access the category 
+	 * 1. The user has Analyst role and this role has permission to access the category
 	 * Or.
-	 * 2. The user has one of the following roles: package.readonly|package.admin|package.developer. 
+	 * 2. The user has one of the following roles: package.readonly|package.admin|package.developer.
 	 * In this case, this method only returns assets that belong to packages the role has at least
-	 * package.readonly permission to access. 
+	 * package.readonly permission to access.
 	 */
 	public TableDataResult loadRuleListForCategories(String categoryPath,
 			int skip, int numRows, String tableConfig)
@@ -343,7 +344,7 @@
 		// love you
 		// long time = System.currentTimeMillis();
 
-		// First check the user has permission to access this categoryPath. 
+		// First check the user has permission to access this categoryPath.
 		if (Contexts.isSessionContextActive()) {
 			Identity.instance().checkPermission(
 					new CategoryPathType(categoryPath), null);
@@ -385,13 +386,13 @@
 	/**
 	 * This actually does the hard work of loading up an asset based on its
 	 * format.
-	 * 
-	 * Role-based Authorization check: This method can be accessed if user has 
+	 *
+	 * Role-based Authorization check: This method can be accessed if user has
 	 * following permissions:
-	 * 1. The user has Analyst role and this role has permission to access the category 
+	 * 1. The user has Analyst role and this role has permission to access the category
 	 * which the asset belongs to.
 	 * Or.
-	 * 2. The user has package.readonly role (or package.admin, package.developer) 
+	 * 2. The user has package.readonly role (or package.admin, package.developer)
 	 * and this role has permission to access the package which the asset belongs to.
 	 */
 	@WebRemote
@@ -409,7 +410,7 @@
 			Identity.instance().checkPermission(
 					new PackageNameType(asset.metaData.packageName),
 					RoleTypes.PACKAGE_READONLY);
-			
+
 			if(asset.metaData.categories.length == 0) {
 				Identity.instance().checkPermission(
 						new CategoryPathType(null),
@@ -514,13 +515,13 @@
 	@WebRemote
 	@Restrict("#{identity.loggedIn}")
 	/**
-	 * 
-	 * Role-based Authorization check: This method can be accessed if user has 
+	 *
+	 * Role-based Authorization check: This method can be accessed if user has
 	 * following permissions:
-	 * 1. The user has Analyst role and this role has permission to access the category 
+	 * 1. The user has Analyst role and this role has permission to access the category
 	 * which the asset belongs to.
 	 * Or.
-	 * 2. The user has package.readonly role (or package.admin, package.developer) 
+	 * 2. The user has package.readonly role (or package.admin, package.developer)
 	 * and this role has permission to access the package which the asset belongs to.
 	 */
 	public String checkinVersion(RuleAsset asset) throws SerializableException {
@@ -528,7 +529,7 @@
 			Identity.instance().checkPermission(
 					new PackageNameType(asset.metaData.packageName),
 					RoleTypes.PACKAGE_READONLY);
-			
+
 			if(asset.metaData.categories.length == 0) {
 				Identity.instance().checkPermission(
 						new CategoryPathType(null),
@@ -551,9 +552,9 @@
 				}
 			}
 		}
-		
-		
 
+
+
 		log.info("USER:" + repository.getSession().getUserID()
 				+ " CHECKING IN asset: [" + asset.metaData.name + "] UUID: ["
 				+ asset.uuid + "]  ARCHIVED [" + asset.archived + "]");
@@ -1897,4 +1898,10 @@
 		}
 	}
 
+	@WebRemote
+	@Restrict("#{identity.loggedIn}")
+	public Capabilities getUserCapabilities() {
+		return Capabilities.all();
+	}
+
 }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CapabilityCalculator.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CapabilityCalculator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CapabilityCalculator.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -0,0 +1,53 @@
+package org.drools.guvnor.server.security;
+
+import static org.drools.guvnor.client.security.Capabilities.SHOW_CREATE_NEW_ASSET;
+import static org.drools.guvnor.client.security.Capabilities.SHOW_CREATE_NEW_PACKAGE;
+import static org.drools.guvnor.client.security.Capabilities.SHOW_DEPLOYMENT;
+import static org.drools.guvnor.client.security.Capabilities.SHOW_DEPLOYMENT_NEW;
+import static org.drools.guvnor.client.security.Capabilities.SHOW_PACKAGE_VIEW;
+import static org.drools.guvnor.client.security.Capabilities.SHOW_QA;
+import static org.drools.guvnor.client.security.Capabilities.all;
+
+import java.util.List;
+
+import org.drools.guvnor.client.security.Capabilities;
+
+/**
+ * Load up the capabilities from a given list of roles.
+ * @author Michael Neale
+ */
+public class CapabilityCalculator {
+
+	public Capabilities calcCapabilities(List<RoleBasedPermission> permissions) {
+		if (permissions.size() == 0) {
+			return Capabilities.all();
+		} else {
+			Capabilities caps = new Capabilities();
+			for (RoleBasedPermission p : permissions) {
+				String r = p.getRole();
+				if (r.equals(RoleTypes.ADMIN)) {
+					return all();
+				} else if (r.equals(RoleTypes.PACKAGE_ADMIN)) {
+					addCap(caps, SHOW_PACKAGE_VIEW);
+					addCap(caps, SHOW_CREATE_NEW_ASSET);
+					addCap(caps, SHOW_CREATE_NEW_PACKAGE);
+					addCap(caps, SHOW_DEPLOYMENT);
+					addCap(caps, SHOW_DEPLOYMENT_NEW);
+					addCap(caps, SHOW_QA);
+				} else if (r.equals(RoleTypes.PACKAGE_DEVELOPER)) {
+					addCap(caps, SHOW_PACKAGE_VIEW);
+					addCap(caps, SHOW_CREATE_NEW_ASSET);
+					addCap(caps, SHOW_QA);
+				} else if (r.equals(RoleTypes.PACKAGE_READONLY)) {
+					addCap(caps, SHOW_PACKAGE_VIEW);
+				}
+			}
+			return caps;
+		}
+	}
+
+	private void addCap(Capabilities caps, Integer cap) {
+		if (!caps.list.contains(cap)) caps.list.add(cap);
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/CapabilityCalculator.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/SecurityServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/SecurityServiceImpl.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/security/SecurityServiceImpl.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -25,6 +25,7 @@
 import org.apache.log4j.Logger;
 import org.drools.guvnor.client.rpc.SecurityService;
 import org.drools.guvnor.client.rpc.UserSecurityContext;
+import org.drools.guvnor.client.security.Capabilities;
 import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.remoting.WebRemote;
@@ -103,4 +104,5 @@
 
     }
 
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/ClassicDRLImporter.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/ClassicDRLImporter.java	2008-07-29 05:00:43 UTC (rev 21265)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/ClassicDRLImporter.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -146,6 +146,7 @@
 
     private String getRuleName(String line) throws DroolsParserException {
         DrlParser parser = new DrlParser();
+        line = line + "\n when\n then \n end";
         RuleDescr rule = (RuleDescr) parser.parse( line ).getRules().get( 0 );
         return rule.getName();
     }

Added: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/CapabilityCalculatorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/CapabilityCalculatorTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/CapabilityCalculatorTest.java	2008-07-29 05:07:48 UTC (rev 21266)
@@ -0,0 +1,76 @@
+package org.drools.guvnor.server.security;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.guvnor.client.security.Capabilities;
+
+import junit.framework.TestCase;
+
+public class CapabilityCalculatorTest extends TestCase {
+
+
+	public void testAdmin() {
+		CapabilityCalculator loader = new CapabilityCalculator();
+		List<RoleBasedPermission> perms = new ArrayList<RoleBasedPermission>();
+		Capabilities caps = loader.calcCapabilities(perms);
+		assertEquals(7, caps.list.size());
+	}
+
+	public void testCapabilitiesCalculate() {
+		CapabilityCalculator loader = new CapabilityCalculator();
+		List<RoleBasedPermission> perms = new ArrayList<RoleBasedPermission>();
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_DEVELOPER, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.ANALYST, null, null));
+		Capabilities caps = loader.calcCapabilities(perms);
+		assertTrue(caps.list.contains(Capabilities.SHOW_PACKAGE_VIEW));
+
+		perms = new ArrayList<RoleBasedPermission>();
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_ADMIN, null, null));
+		caps = loader.calcCapabilities(perms);
+		assertTrue(caps.list.contains(Capabilities.SHOW_PACKAGE_VIEW));
+
+		perms = new ArrayList<RoleBasedPermission>();
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_READONLY, null, null));
+		caps = loader.calcCapabilities(perms);
+		assertTrue(caps.list.contains(Capabilities.SHOW_PACKAGE_VIEW));
+		assertEquals(1, caps.list.size());
+
+		perms = new ArrayList<RoleBasedPermission>();
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_READONLY, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_READONLY, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.ANALYST, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_DEVELOPER, null, null));
+		caps = loader.calcCapabilities(perms);
+		assertTrue(caps.list.contains(Capabilities.SHOW_PACKAGE_VIEW));
+		assertTrue(caps.list.contains(Capabilities.SHOW_CREATE_NEW_ASSET));
+		assertFalse(caps.list.contains(Capabilities.SHOW_CREATE_NEW_PACKAGE));
+		assertTrue(caps.list.contains(Capabilities.SHOW_QA));
+		assertEquals(3, caps.list.size());
+
+		perms = new ArrayList<RoleBasedPermission>();
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_READONLY, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_READONLY, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.ANALYST, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_ADMIN, null, null));
+		caps = loader.calcCapabilities(perms);
+		assertTrue(caps.list.contains(Capabilities.SHOW_PACKAGE_VIEW));
+		assertTrue(caps.list.contains(Capabilities.SHOW_CREATE_NEW_ASSET));
+		assertTrue(caps.list.contains(Capabilities.SHOW_CREATE_NEW_PACKAGE));
+		assertTrue(caps.list.contains(Capabilities.SHOW_DEPLOYMENT));
+		assertTrue(caps.list.contains(Capabilities.SHOW_DEPLOYMENT_NEW));
+		assertTrue(caps.list.contains(Capabilities.SHOW_QA));
+
+		assertEquals(6, caps.list.size());
+
+		perms = new ArrayList<RoleBasedPermission>();
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_READONLY, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_READONLY, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.ADMIN, null, null));
+		perms.add(new RoleBasedPermission("", RoleTypes.PACKAGE_ADMIN, null, null));
+		caps = loader.calcCapabilities(perms);
+		assertEquals(7, caps.list.size());
+
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/security/CapabilityCalculatorTest.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list