[jboss-svn-commits] JBL Code SVN: r21301 - in labs/jbossrules/trunk/drools-guvnor/src: test/java/org/drools/guvnor/server and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 30 21:04:24 EDT 2008


Author: jervisliu
Date: 2008-07-30 21:04:24 -0400 (Wed, 30 Jul 2008)
New Revision: 21301

Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java
Log:
set ServiceImplementation.checkinVersion()'s permission to PACKAGE.DEVELOPER.

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-30 19:34:28 UTC (rev 21300)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2008-07-31 01:04:24 UTC (rev 21301)
@@ -528,7 +528,7 @@
 		if (Contexts.isSessionContextActive()) {
 			Identity.instance().checkPermission(
 					new PackageNameType(asset.metaData.packageName),
-					RoleTypes.PACKAGE_READONLY);
+					RoleTypes.PACKAGE_DEVELOPER);
 
 			if(asset.metaData.categories.length == 0) {
 				Identity.instance().checkPermission(

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-07-30 19:34:28 UTC (rev 21300)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java	2008-07-31 01:04:24 UTC (rev 21301)
@@ -1,13 +1,16 @@
 package org.drools.guvnor.server;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import org.drools.guvnor.client.common.AssetFormats;
+import org.drools.guvnor.client.rpc.RepositoryService;
 import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.RuleContentText;
 import org.drools.guvnor.client.rpc.TableDataResult;
 import org.drools.guvnor.client.rpc.TableDataRow;
 import org.drools.guvnor.client.rulelist.AssetItemGrid;
@@ -404,16 +407,6 @@
 		Lifecycle.endApplication();
 	}
 
-
-
-	private ServiceImplementation getService() throws Exception {
-		ServiceImplementation impl = new ServiceImplementation();
-
-		impl.repository = new RulesRepository(TestEnvironmentSessionHelper
-				.getSession());
-		return impl;
-	}
-
 	public void testloadRuleListForCategoriesWithRoleBasedAuthrozationPackageReadonly() throws Exception {
 		try {
 			ServiceImplementation impl = getService();
@@ -556,5 +549,104 @@
 			Lifecycle.endApplication();
 		}
 	}
+	
+	public void testCheckinWithPackageReadonly() throws Exception {
+		ServiceImplementation impl = getService();
+		String packageUuid = impl.createPackage(
+				"testCheckinWithPackageReadonlyPack", "desc");
+		impl.createCategory("/", "testCheckinWithPackageReadonlyCat",
+						"this is a description");
+		impl.createCategory("testCheckinWithPackageReadonlyCat", "deeper", "description");
+		String uuid = impl.createNewRule("testChecking",
+				"this is a description", "testCheckinWithPackageReadonlyCat",
+				"testCheckinWithPackageReadonlyPack", "drl");
+		RuleAsset asset = impl.loadRuleAsset(uuid);
+		assertNotNull(asset.metaData.lastModifiedDate);
+		asset.metaData.coverage = "boo";
+		asset.content = new RuleContentText();
+		((RuleContentText) asset.content).content = "yeah !";
+		Thread.sleep(100);
 
+		// Mock up SEAM contexts
+		Map application = new HashMap<String, Object>();
+		Lifecycle.beginApplication(application);
+		Lifecycle.beginCall();
+		MockIdentity midentity = new MockIdentity();
+		// this makes Identity.hasRole("admin") return false
+		midentity.setHasRole(false);
+		midentity.addPermissionResolver(new PackageBasedPermissionResolver());
+		midentity.addPermissionResolver(new CategoryBasedPermissionResolver());
+
+		Contexts.getSessionContext().set(
+				"org.jboss.seam.security.identity", midentity);
+		Contexts.getSessionContext().set(
+				"org.drools.guvnor.client.rpc.RepositoryService", impl);
+		List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis",
+				RoleTypes.PACKAGE_READONLY,
+				packageUuid, null));
+		Contexts.getSessionContext().set("packageBasedPermission", pbps);		
+		
+		//now lets see if we can access this asset with the permissions
+		try {
+			impl.checkinVersion(asset);
+			fail("Did not catch expected exception");
+		} catch (AuthorizationException e) {
+		}
+		
+		Lifecycle.endApplication();
+	}
+	
+	public void testCheckinWithPackageDeveloper() throws Exception {
+		ServiceImplementation impl = getService();
+		String packageUuid = impl.createPackage(
+				"testCheckinWithPackageDeveloperPack", "desc");
+		impl.createCategory("/", "testCheckinWithPackageDeveloperCat",
+						"this is a description");
+		impl.createCategory("testCheckinWithPackageDeveloperCat", "deeper", "description");
+		String uuid = impl.createNewRule("testChecking",
+				"this is a description", "testCheckinWithPackageDeveloperCat",
+				"testCheckinWithPackageDeveloperPack", "drl");
+		RuleAsset asset = impl.loadRuleAsset(uuid);
+		assertNotNull(asset.metaData.lastModifiedDate);
+		asset.metaData.coverage = "boo";
+		asset.content = new RuleContentText();
+		((RuleContentText) asset.content).content = "yeah !";
+		Thread.sleep(100);
+
+		// Mock up SEAM contexts
+		Map application = new HashMap<String, Object>();
+		Lifecycle.beginApplication(application);
+		Lifecycle.beginCall();
+		MockIdentity midentity = new MockIdentity();
+		// this makes Identity.hasRole("admin") return false
+		midentity.setHasRole(false);
+		midentity.addPermissionResolver(new PackageBasedPermissionResolver());
+		midentity.addPermissionResolver(new CategoryBasedPermissionResolver());
+
+		Contexts.getSessionContext().set(
+				"org.jboss.seam.security.identity", midentity);
+		Contexts.getSessionContext().set(
+				"org.drools.guvnor.client.rpc.RepositoryService", impl);
+		List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
+		pbps.add(new RoleBasedPermission("jervis",
+				RoleTypes.PACKAGE_DEVELOPER,
+				packageUuid, null));
+		Contexts.getSessionContext().set("packageBasedPermission", pbps);		
+		
+		//now lets see if we can access this asset with the permissions
+		String uuid2 =  impl.checkinVersion(asset);
+		assertEquals(uuid, uuid2);
+		
+		Lifecycle.endApplication();
+	}
+	
+	private ServiceImplementation getService() throws Exception {
+		ServiceImplementation impl = new ServiceImplementation();
+
+		impl.repository = new RulesRepository(TestEnvironmentSessionHelper
+				.getSession());
+		return impl;
+	}
+
 }




More information about the jboss-svn-commits mailing list