Skip to content
Snippets Groups Projects
Verified Commit 01c58e79 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

TST: more tests for EntityACL stuff

parent e4691ff2
Branches
Tags
3 merge requests!21Release v0.4.0,!7F fsm,!6Draft: F acm permissions2
Pipeline #5929 passed
...@@ -262,6 +262,7 @@ public abstract class AbstractEntityACLFactory<T extends EntityACL> { ...@@ -262,6 +262,7 @@ public abstract class AbstractEntityACLFactory<T extends EntityACL> {
*/ */
public AbstractEntityACLFactory<T> remove(EntityACL other) { public AbstractEntityACLFactory<T> remove(EntityACL other) {
if (other != null) { if (other != null) {
normalize();
for (EntityACI aci : other.getRules()) { for (EntityACI aci : other.getRules()) {
if (EntityACL.isAllowance(aci.getBitSet())) { if (EntityACL.isAllowance(aci.getBitSet())) {
if (EntityACL.isPriorityBitSet(aci.getBitSet())) { if (EntityACL.isPriorityBitSet(aci.getBitSet())) {
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
*/ */
package org.caosdb.server.permissions; package org.caosdb.server.permissions;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
...@@ -349,60 +350,49 @@ public class EntityACLTest { ...@@ -349,60 +350,49 @@ public class EntityACLTest {
Assert.assertFalse((f.create().isPermitted(user2, EntityPermission.UPDATE_NAME))); Assert.assertFalse((f.create().isPermitted(user2, EntityPermission.UPDATE_NAME)));
} }
// @Test @Test
// public void niceFactoryStuff() { public void testRemove() {
// final EntityACLFactory f = new EntityACLFactory(); EntityACLFactory f = new EntityACLFactory();
// f.grant("user1", "*"); f.grant(org.caosdb.server.permissions.Role.create("role1"), false, EntityPermission.DELETE);
// final EntityACL acl1 = f.create(); f.deny(org.caosdb.server.permissions.Role.create("role2"), false, EntityPermission.EDIT_ACL);
// Assert.assertTrue(acl1.isPermitted("user1", EntityPermission.EDIT_ACL)); f.grant(
// Assert.assertTrue(acl1.isPermitted("user1", EntityPermission.DELETE)); org.caosdb.server.permissions.Role.create("role3"), true, EntityPermission.RETRIEVE_ACL);
// Assert.assertTrue(acl1.isPermitted("user1", f.deny(
// EntityPermission.RETRIEVE_ENTITY)); org.caosdb.server.permissions.Role.create("role4"), true, EntityPermission.RETRIEVE_ENTITY);
// Assert.assertTrue(acl1.isPermitted("user1",
// EntityPermission.UPDATE_DATA_TYPE)); EntityACL other = f.create();
// Assert.assertTrue(acl1.isPermitted("user1",
// EntityPermission.USE_AS_PROPERTY)); f.grant(org.caosdb.server.permissions.Role.create("role2"), false, EntityPermission.EDIT_ACL);
// f.grant(
// f.grant("?OWNER?", "DELETE", "EDIT:ACL", "RETRIEVE:*", "UPDATE:*", org.caosdb.server.permissions.Role.create("role5"), false, EntityPermission.RETRIEVE_FILE);
// "USE:*");
// f.grant("user2", "EDIT:ACL"); f.remove(other); // normalize and remove "other"
// final EntityACL acl2 = f.create();
// Assert.assertTrue(acl2.isPermitted("user2", EntityPermission.EDIT_ACL)); EntityACL tester = f.create();
// Assert.assertTrue(acl2.isPermitted("user2", EntityPermission.DELETE)); assertEquals(
// Assert.assertTrue(acl2.isPermitted("user2", "only the very last rule survived, the others have been overriden or removed",
// EntityPermission.RETRIEVE_ENTITY)); 1,
// Assert.assertTrue(acl2.isPermitted("user2", tester.getRules().size());
// EntityPermission.UPDATE_DATA_TYPE)); for (EntityACI aci : tester.getRules()) {
// Assert.assertTrue(acl2.isPermitted("user2", assertEquals(aci.getResponsibleAgent(), org.caosdb.server.permissions.Role.create("role5"));
// EntityPermission.USE_AS_PROPERTY)); }
// }
// }
//
// @Test
// public void testDeny() {
// EntityACLFactory f = new EntityACLFactory();
// f.deny("test", "DELETE");
// Assert.assertFalse(f.create().isPermitted("test",
// EntityPermission.DELETE));
//
// System.out.println(Utils.element2String(f.create().toElement()));
//
// System.out.println(Utils.element2String(EntityACL.GLOBAL_PERMISSIONS.toElement()));
//
// f.grant("test", "USE:*");
// Assert.assertFalse(f.create().isPermitted("test",
// EntityPermission.DELETE));
//
// System.out.println(Utils.element2String(f.create().toElement()));
//
// f = new EntityACLFactory();
// f.grant(EntityACL.OTHER_ROLE, "RETRIEVE:*");
// f.deny(EntityACL.OTHER_ROLE, "DELETE");
// final EntityACL a = f.create();
//
// System.out.println(Utils.element2String(a.toElement()));
//
// System.out.println(Utils.element2String(EntityACL.deserialize(a.serialize()).toElement()));
// }
@Test
public void testNormalize() {
EntityACLFactory f = new EntityACLFactory();
f.grant(org.caosdb.server.permissions.Role.create("role1"), false, EntityPermission.DELETE);
f.deny(org.caosdb.server.permissions.Role.create("role1"), false, EntityPermission.DELETE);
f.grant(org.caosdb.server.permissions.Role.create("role1"), true, EntityPermission.DELETE);
f.deny(org.caosdb.server.permissions.Role.create("role1"), true, EntityPermission.DELETE);
// priority denail overrides everything else
EntityACL denyDelete = f.create();
assertEquals(1, denyDelete.getRules().size());
for (EntityACI aci : denyDelete.getRules()) {
assertEquals(org.caosdb.server.permissions.Role.create("role1"), aci.getResponsibleAgent());
assertTrue(EntityACL.isDenial(aci.getBitSet()));
assertTrue(EntityACL.isPriorityBitSet(aci.getBitSet()));
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment