[jboss-svn-commits] JBL Code SVN: r21434 - in labs/jbossrules/trunk/drools-guvnor/src: main/java/org/drools/guvnor/server/util and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 11 11:10:13 EDT 2008
Author: jervisliu
Date: 2008-08-11 11:10:13 -0400 (Mon, 11 Aug 2008)
New Revision: 21434
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/util/TableDisplayHandler.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java
Log:
Apply patch on behalf of Chester Wu(chuan wu). https://jira.jboss.org/jira/browse/JBRULES-1707: Add security filters to queryFullText and queryMetaData in ServiceImplementation.
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-08-11 14:49:35 UTC (rev 21433)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2008-08-11 15:10:13 UTC (rev 21434)
@@ -826,8 +826,20 @@
"probably have the parameters around the wrong way, sigh...");
}
AssetItemIterator it = repository.queryFullText(text, seekArchived);
+
+ // Add filter for READONLY permission
+ List<AssetItem> resultList = new ArrayList<AssetItem>();
+ RepositoryFilter filter = new PackageFilter();
+
+ while (it.hasNext()) {
+ AssetItem ai = it.next();
+ if (checkPackagePermissionHelper(filter, ai, RoleTypes.PACKAGE_READONLY)) {
+ resultList.add(ai);
+ }
+ }
+
TableDisplayHandler handler = new TableDisplayHandler("searchresults");
- return handler.loadRuleListTable(it, skip, numRows);
+ return handler.loadRuleListTable(resultList, skip, numRows);
}
@WebRemote
@@ -860,10 +872,50 @@
dates[1] = new DateQuery(AssetItem.LAST_MODIFIED_PROPERTY_NAME,
isoDate(modifiedAfter), isoDate(modifiedBefore));
AssetItemIterator it = repository.query(q, seekArchived, dates);
+
+ // Add Filter to check Permission
+ List<AssetItem> resultList = new ArrayList<AssetItem>();
+
+ RepositoryFilter packageFilter = new PackageFilter();
+ RepositoryFilter categoryFilter = new CategoryFilter();
+
+ while (it.hasNext()) {
+ AssetItem ai = it.next();
+ if (checkPackagePermissionHelper(packageFilter, ai, RoleTypes.PACKAGE_READONLY) ||
+ checkCategoryPermissionHelper(categoryFilter, ai, RoleTypes.ANALYST)) {
+ resultList.add(ai);
+ }
+ }
+
TableDisplayHandler handler = new TableDisplayHandler("searchresults");
- return handler.loadRuleListTable(it, skip, numRows);
+ return handler.loadRuleListTable(resultList, skip, numRows);
}
+ private boolean checkPackagePermissionHelper(
+ RepositoryFilter filter, AssetItem item, String roleType) {
+ return filter.accept(getConfigDataHelper(item.getPackage().getUUID()), roleType);
+ }
+
+ private boolean checkCategoryPermissionHelper(
+ RepositoryFilter filter, AssetItem item, String roleType) {
+ List<CategoryItem> tempCateList = item.getCategories();
+ for (Iterator<CategoryItem> i = tempCateList.iterator(); i.hasNext();) {
+ CategoryItem categoryItem = i.next();
+
+ if (filter.accept(categoryItem.getName(), roleType)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private PackageConfigData getConfigDataHelper(String uuidStr) {
+ PackageConfigData data = new PackageConfigData();
+ data.uuid = uuidStr;
+ return data;
+ }
+
private String isoDate(Date d) {
if (d != null) {
Calendar cal = Calendar.getInstance();
@@ -1913,4 +1965,4 @@
-}
\ No newline at end of file
+}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/TableDisplayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/TableDisplayHandler.java 2008-08-11 14:49:35 UTC (rev 21433)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/TableDisplayHandler.java 2008-08-11 15:10:13 UTC (rev 21434)
@@ -63,7 +63,52 @@
result.hasNext = list.hasNext;
return result;
}
+
+ private TableDataResult loadRuleListTable(
+ List<AssetItem> assetList, long curPos, boolean hasNext)
+ throws SerializableException {
+ List<TableDataRow> data = loadRows(assetList.iterator(), -1);
+ TableDataResult result = new TableDataResult();
+ result.data = (TableDataRow[]) data.toArray(new TableDataRow[data.size()]);
+ result.currentPosition = curPos;
+ result.hasNext = hasNext;
+ return result;
+ }
+ public TableDataResult loadRuleListTable(
+ List<AssetItem> assetList, int skip, int numRows) throws SerializableException {
+ int size = assetList.size();
+ boolean hasNext = false;
+ int startPos = 0;
+ int endPos = 0;
+
+ if (numRows != -1) {
+ if (skip > size) {
+ List<AssetItem> tempList = new ArrayList<AssetItem>();
+ return loadRuleListTable(tempList, 0, false);
+ }
+
+ if (skip > 0) {
+ startPos = skip;
+ } else {
+ skip = 0;
+ }
+
+ if ((skip + numRows) > size) {
+ endPos = size;
+ } else {
+ endPos = skip + numRows;
+ hasNext = true;
+ }
+
+ List<AssetItem> tempList2 = assetList.subList(startPos, endPos);
+
+ return loadRuleListTable(tempList2, endPos, hasNext);
+ }
+
+ return loadRuleListTable(assetList, 0, false);
+ }
+
public TableDataResult loadRuleListTable(AssetItemIterator it, int skip, int numRows) {
if (numRows != -1) {
it.skip(skip);
@@ -75,7 +120,6 @@
result.hasNext = it.hasNext();
result.currentPosition = it.getPosition();
return result;
-
}
private List<TableDataRow> loadRows(Iterator<AssetItem> it, int numRows) {
@@ -111,4 +155,4 @@
config.rowsPerPage = 40;
return config;
}
-}
\ No newline at end of file
+}
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 14:49:35 UTC (rev 21433)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplSecurityTest.java 2008-08-11 15:10:13 UTC (rev 21434)
@@ -28,6 +28,12 @@
import org.jboss.seam.security.permission.PermissionResolver;
import org.jboss.seam.security.permission.RoleBasedPermissionResolver;
+ import org.drools.guvnor.client.common.AssetFormats;
+ import org.drools.guvnor.client.rpc.MetaDataQuery;
+ import org.drools.guvnor.client.rpc.RepositoryService;
+ import org.drools.guvnor.client.rpc.RuleAsset;
+ import org.drools.guvnor.client.rpc.RuleContentText;
+
import junit.framework.TestCase;
public class ServiceImplSecurityTest extends TestCase {
@@ -59,7 +65,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -70,7 +76,7 @@
List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
pbps.add(new RoleBasedPermission("jervis", RoleTypes.ANALYST, null,
"testLoadRuleAssetWithRoleBasedAuthrozationCat1"));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
@@ -114,7 +120,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -126,10 +132,10 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.PACKAGE_READONLY,
package1Uuid, null));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-
+
//now lets see if we can access this asset with the permissions
RuleAsset asset = impl.loadRuleAsset(uuid1);
try {
@@ -169,7 +175,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(false);
+ resolver.setEnableRoleBasedAuthorization(false);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -178,7 +184,7 @@
"org.drools.guvnor.client.rpc.RepositoryService", impl);
List<RoleBasedPermission> pbps = new ArrayList<RoleBasedPermission>();
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
// now lets see if we can access this asset with the permissions
@@ -212,7 +218,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -224,7 +230,7 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.PACKAGE_ADMIN,
packageUuid, null));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
//now lets see if we can access this asset with the permissions
@@ -258,7 +264,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -270,7 +276,7 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.ANALYST,
null, "category1"));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
//now lets see if we can access this asset with the permissions
@@ -308,7 +314,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -323,7 +329,7 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.PACKAGE_ADMIN,
packageUuid, null));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
//now lets see if we can access this asset with the permissions
@@ -413,9 +419,9 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
-
+
Contexts.getSessionContext().set(
"org.jboss.seam.security.identity", midentity);
Contexts.getSessionContext().set(
@@ -428,7 +434,7 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.PACKAGE_DEVELOPER,
package2Uuid, null));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
@@ -482,7 +488,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -500,7 +506,7 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.PACKAGE_DEVELOPER,
package3Uuid, null));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
@@ -512,7 +518,7 @@
Lifecycle.endApplication();
}
}
-
+
public void testCheckinWithPackageReadonly() throws Exception {
ServiceImplementation impl = getService();
String packageUuid = impl.createPackage(
@@ -536,7 +542,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -547,19 +553,19 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.PACKAGE_READONLY,
packageUuid, null));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-
+
//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(
@@ -583,7 +589,7 @@
Lifecycle.beginCall();
MockIdentity midentity = new MockIdentity();
RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
- resolver.setEnableRoleBasedAuthorization(true);
+ resolver.setEnableRoleBasedAuthorization(true);
midentity.addPermissionResolver(resolver);
Contexts.getSessionContext().set(
@@ -594,16 +600,319 @@
pbps.add(new RoleBasedPermission("jervis",
RoleTypes.PACKAGE_DEVELOPER,
packageUuid, null));
- MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
- Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
-
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+
//now lets see if we can access this asset with the permissions
String uuid2 = impl.checkinVersion(asset);
assertEquals(uuid, uuid2);
-
+
Lifecycle.endApplication();
}
-
+
+ public void testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyFilter() throws Exception {
+ try {
+ ServiceImplementation impl = getService();
+ String package3Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack3";
+ String package3Uuid = impl.createPackage(package3Name, "desc");
+ impl.createCategory("",
+ "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat3",
+ "this is a cat");
+
+ String uuid3 = impl.createNewRule("testLoadRuleAssetWithRoleBasedAuthrozation",
+ "ReadonlyFilterDescription",
+ "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat3",
+ package3Name, "drl");
+
+ String package4Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack4";
+ impl.repository.createPackage(package4Name, "desc");
+
+ String uuid2 = impl.createNewRule("testLoadRuleAssetWithRoleBasedAuthrozation",
+ "ReadonlyFilterDescription",
+ "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat3",
+ package4Name, "drl");
+
+ // Mock up SEAM contexts
+ Map application = new HashMap<String, Object>();
+ Lifecycle.beginApplication(application);
+ Lifecycle.beginCall();
+ MockIdentity midentity = new MockIdentity();
+ RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+ resolver.setEnableRoleBasedAuthorization(true);
+ midentity.addPermissionResolver(resolver);
+
+ 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,
+ package3Uuid, null));
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+
+ TableDataResult result = impl.queryFullText("testLoadRuleAssetWithRoleBasedAuthrozation", true, 0, -1);
+ assertEquals(1, result.data.length);
+ } finally {
+ Lifecycle.endApplication();
+ }
+ }
+
+ public void testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyMetaDataFilter() throws Exception {
+ try {
+ ServiceImplementation impl = getService();
+
+ String rule7Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData7";
+ String rule8Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData8";
+
+ String package7Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack7";
+ String category7Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat7";
+ PackageItem packageItem7 = impl.repository.createPackage(package7Name, "desc");
+ String packageItem7UUID = packageItem7.getUUID();
+ impl.createCategory("", category7Name, "this is a rabbit");
+
+ String uuid7 = impl.createNewRule(rule7Name,
+ "MetaDataFilterDescription7", category7Name, package7Name, "drl");
+
+ String package8Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack8";
+ String category8Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat8";
+ PackageItem packageItem8 = impl.repository.createPackage(package8Name, "desc");
+ String packageItem8UUID = packageItem8.getUUID();
+ impl.createCategory("", category8Name, "this is a mouse");
+ String uuid8 = impl.createNewRule(rule8Name,
+ "MetaDataFilterDescription8", category8Name, package8Name, "drl");
+
+ // Mock up SEAM contexts
+ Map application = new HashMap<String, Object>();
+ Lifecycle.beginApplication(application);
+ Lifecycle.beginCall();
+ MockIdentity midentity = new MockIdentity();
+ RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+ resolver.setEnableRoleBasedAuthorization(true);
+ midentity.addPermissionResolver(resolver);
+
+ 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,
+ packageItem7UUID, null));
+ pbps.add(new RoleBasedPermission("jervis",
+ RoleTypes.ANALYST,
+ null, category7Name));
+ pbps.add(new RoleBasedPermission("jervis",
+ RoleTypes.ANALYST,
+ null, category8Name));
+
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+
+ MetaDataQuery[] qr = new MetaDataQuery[1];
+ qr[0] = new MetaDataQuery();
+ qr[0].attribute = AssetItem.DESCRIPTION_PROPERTY_NAME;
+ qr[0].valueList = "MetaDataFilterDescription%";
+ TableDataResult result = impl.queryMetaData(qr, null, null, null, null, false, 0, -1);
+ assertEquals(2, result.data.length);
+ } finally {
+ Lifecycle.endApplication();
+ }
+ }
+
+ public void testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyMetaDataFilter2() throws Exception {
+ try {
+ ServiceImplementation impl = getService();
+
+ String rule5Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData5";
+ String rule6Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData6";
+
+ String package5Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack5";
+ String category5Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat5";
+ PackageItem packageItem5 = impl.repository.createPackage(package5Name, "desc");
+ String packageItem5UUID = packageItem5.getUUID();
+ impl.createCategory("", category5Name, "this is a cat");
+ String uuid7 = impl.createNewRule(rule5Name,
+ "MetaDataFilter2Description5", category5Name, package5Name, "drl");
+
+ String package6Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack6";
+ String category6Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat6";
+ PackageItem packageItem6 = impl.repository.createPackage(package6Name, "desc");
+ String packageItem6UUID = packageItem6.getUUID();
+ impl.createCategory("", category6Name, "this is a dog");
+ String uuid6 = impl.createNewRule(rule6Name,
+ "MetaDataFilter2Description6", category6Name, package6Name, "drl");
+
+ // Mock up SEAM contexts
+ Map application = new HashMap<String, Object>();
+ Lifecycle.beginApplication(application);
+ Lifecycle.beginCall();
+ MockIdentity midentity = new MockIdentity();
+ RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+ resolver.setEnableRoleBasedAuthorization(true);
+ midentity.addPermissionResolver(resolver);
+
+ 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,
+ packageItem5UUID, null));
+ pbps.add(new RoleBasedPermission("jervis",
+ RoleTypes.PACKAGE_READONLY,
+ packageItem6UUID, null));
+
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+
+ MetaDataQuery[] qr = new MetaDataQuery[1];
+ qr[0] = new MetaDataQuery();
+ qr[0].attribute = AssetItem.DESCRIPTION_PROPERTY_NAME;
+ qr[0].valueList = "MetaDataFilter2Description%";
+ TableDataResult result = impl.queryMetaData(qr, null, null, null, null, false, 0, -1);
+ assertEquals(2, result.data.length);
+ } finally {
+ Lifecycle.endApplication();
+ }
+ }
+
+ public void testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyMetaDataFilter3() throws Exception {
+ try {
+ ServiceImplementation impl = getService();
+
+ String rule9Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData9";
+ String rule10Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData10";
+
+ String package9Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack9";
+ String category9Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat9";
+ PackageItem packageItem9 = impl.repository.createPackage(package9Name, "desc");
+ String packageItem9UUID = packageItem9.getUUID();
+ impl.createCategory("", category9Name, "this is a pigeon");
+ String uuid9 = impl.createNewRule(rule9Name,
+ "MetaDataFilter3Description9", category9Name, package9Name, "drl");
+
+ String package10Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack10";
+ String category10Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat10";
+ PackageItem packageItem10 = impl.repository.createPackage(package10Name, "desc");
+ String packageItem10UUID = packageItem10.getUUID();
+ impl.createCategory("", category10Name, "this is a sparrow");
+ String uuid10 = impl.createNewRule(rule10Name,
+ "MetaDataFilter3Description10", category10Name, package10Name, "drl");
+
+ // Mock up SEAM contexts
+ Map application = new HashMap<String, Object>();
+ Lifecycle.beginApplication(application);
+ Lifecycle.beginCall();
+ MockIdentity midentity = new MockIdentity();
+ RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+ resolver.setEnableRoleBasedAuthorization(true);
+ midentity.addPermissionResolver(resolver);
+
+ 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.ANALYST,
+ null, category9Name));
+ pbps.add(new RoleBasedPermission("jervis",
+ RoleTypes.ANALYST,
+ null, category10Name));
+
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+
+ MetaDataQuery[] qr = new MetaDataQuery[1];
+ qr[0] = new MetaDataQuery();
+ qr[0].attribute = AssetItem.DESCRIPTION_PROPERTY_NAME;
+ qr[0].valueList = "MetaDataFilter3Description%";
+ TableDataResult result = impl.queryMetaData(qr, null, null, null, null, false, 0, -1);
+ assertEquals(2, result.data.length);
+ } finally {
+ Lifecycle.endApplication();
+ }
+ }
+
+ public void testTableDisplayHandler() throws Exception {
+ try {
+ ServiceImplementation impl = getService();
+
+ String rule11Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData11";
+ String rule12Name = "testLoadRuleAssetWithRoleBasedAuthrozationForMetaData12";
+
+ String package11Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack11";
+ String category11Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat11";
+ PackageItem packageItem11 = impl.repository.createPackage(package11Name, "desc");
+ String packageItem11UUID = packageItem11.getUUID();
+ impl.createCategory("", category11Name, "this is a dock");
+ String uuid11 = impl.createNewRule(rule11Name,
+ "DisplayHandlerDescription11", category11Name, package11Name, "drl");
+
+ String package12Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyPack12";
+ String category12Name = "testLoadRuleAssetWithRoleBasedAuthrozationPackageReadonlyCat12";
+ PackageItem packageItem12 = impl.repository.createPackage(package12Name, "desc");
+ String packageItem12UUID = packageItem12.getUUID();
+ impl.createCategory("", category12Name, "this is a sparrow");
+ String uuid12 = impl.createNewRule(rule12Name,
+ "DisplayHandlerDescription12", category12Name, package12Name, "drl");
+
+ // Mock up SEAM contexts
+ Map application = new HashMap<String, Object>();
+ Lifecycle.beginApplication(application);
+ Lifecycle.beginCall();
+ MockIdentity midentity = new MockIdentity();
+ RoleBasedPermissionResolver resolver = new RoleBasedPermissionResolver();
+ resolver.setEnableRoleBasedAuthorization(true);
+ midentity.addPermissionResolver(resolver);
+
+ 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.ANALYST,
+ null, category11Name));
+ pbps.add(new RoleBasedPermission("jervis",
+ RoleTypes.ANALYST,
+ null, category12Name));
+
+ MockRoleBasedPermissionStore store = new MockRoleBasedPermissionStore(pbps);
+ Contexts.getSessionContext().set("org.drools.guvnor.server.security.RoleBasedPermissionStore", store);
+
+ MetaDataQuery[] qr = new MetaDataQuery[1];
+ qr[0] = new MetaDataQuery();
+ qr[0].attribute = AssetItem.DESCRIPTION_PROPERTY_NAME;
+ qr[0].valueList = "DisplayHandlerDescription%";
+
+ TableDataResult result = impl.queryMetaData(qr, null, null, null, null, false, 1, 1);
+ assertEquals(1, result.data.length);
+
+ result = impl.queryMetaData(qr, null, null, null, null, false, 0, 1);
+ assertEquals(1, result.data.length);
+
+ result = impl.queryMetaData(qr, null, null, null, null, false, 0, 4);
+ assertEquals(2, result.data.length);
+
+ result = impl.queryMetaData(qr, null, null, null, null, false, -1, 4);
+ assertEquals(2, result.data.length);
+
+ result = impl.queryMetaData(qr, null, null, null, null, false, 6, 4);
+ assertEquals(0, result.data.length);
+ } finally {
+ Lifecycle.endApplication();
+ }
+ }
+
private ServiceImplementation getService() throws Exception {
ServiceImplementation impl = new ServiceImplementation();
More information about the jboss-svn-commits
mailing list