|
|
|
@ -20,6 +20,7 @@ import org.springframework.security.Authentication; |
|
|
|
import org.springframework.security.GrantedAuthority; |
|
|
|
import org.springframework.security.GrantedAuthority; |
|
|
|
import org.springframework.security.GrantedAuthorityImpl; |
|
|
|
import org.springframework.security.GrantedAuthorityImpl; |
|
|
|
import org.springframework.security.acls.AccessControlEntry; |
|
|
|
import org.springframework.security.acls.AccessControlEntry; |
|
|
|
|
|
|
|
import org.springframework.security.acls.Acl; |
|
|
|
import org.springframework.security.acls.AlreadyExistsException; |
|
|
|
import org.springframework.security.acls.AlreadyExistsException; |
|
|
|
import org.springframework.security.acls.ChildrenExistException; |
|
|
|
import org.springframework.security.acls.ChildrenExistException; |
|
|
|
import org.springframework.security.acls.MutableAcl; |
|
|
|
import org.springframework.security.acls.MutableAcl; |
|
|
|
@ -43,8 +44,20 @@ import org.springframework.test.AbstractTransactionalDataSourceSpringContextTest |
|
|
|
* @version $Id:JdbcAclServiceTests.java 1754 2006-11-17 02:01:21Z benalex $ |
|
|
|
* @version $Id:JdbcAclServiceTests.java 1754 2006-11-17 02:01:21Z benalex $ |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringContextTests { |
|
|
|
public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringContextTests { |
|
|
|
//~ Instance fields ================================================================================================
|
|
|
|
//~ Constant fields ================================================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static final String SELECT_ALL_CLASSES = "SELECT * FROM acl_class WHERE class = ?"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static final String SELECT_ALL_OBJECT_IDENTITIES = "SELECT * FROM acl_object_identity"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static final String SELECT_OBJECT_IDENTITY = "SELECT * FROM acl_object_identity WHERE object_id_identity = ?"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static final String SELECT_ACL_ENTRY = "SELECT * FROM acl_entry, acl_object_identity WHERE " + |
|
|
|
|
|
|
|
"acl_object_identity.id = acl_entry.acl_object_identity " + |
|
|
|
|
|
|
|
"AND acl_object_identity.object_id_identity <= ?"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//~ Instance fields ================================================================================================
|
|
|
|
|
|
|
|
|
|
|
|
private JdbcMutableAclService jdbcMutableAclService; |
|
|
|
private JdbcMutableAclService jdbcMutableAclService; |
|
|
|
|
|
|
|
|
|
|
|
private AclCache aclCache; |
|
|
|
private AclCache aclCache; |
|
|
|
@ -307,7 +320,44 @@ public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringCo |
|
|
|
assertTrue(true); |
|
|
|
assertTrue(true); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void testDeleteAllAclsRemovesAclClassRecord() throws Exception { |
|
|
|
|
|
|
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored", |
|
|
|
|
|
|
|
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ADMINISTRATOR")}); |
|
|
|
|
|
|
|
auth.setAuthenticated(true); |
|
|
|
|
|
|
|
SecurityContextHolder.getContext().setAuthentication(auth); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ObjectIdentity topParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Remove all acls associated with a certain class type
|
|
|
|
|
|
|
|
jdbcMutableAclService.deleteAcl(topParentOid, true); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Check the acl_class table is empty
|
|
|
|
|
|
|
|
assertEquals(0, getJdbcTemplate().queryForList(SELECT_ALL_CLASSES, new Object[] {"org.springframework.security.TargetObject"} ).size()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void testDeleteAclRemovesRowsFromDatabase() throws Exception { |
|
|
|
|
|
|
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored", |
|
|
|
|
|
|
|
new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ADMINISTRATOR")}); |
|
|
|
|
|
|
|
auth.setAuthenticated(true); |
|
|
|
|
|
|
|
SecurityContextHolder.getContext().setAuthentication(auth); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ObjectIdentity topParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100)); |
|
|
|
|
|
|
|
ObjectIdentity middleParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(101)); |
|
|
|
|
|
|
|
ObjectIdentity childOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(102)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Remove the child and check all related database rows were removed accordingly
|
|
|
|
|
|
|
|
jdbcMutableAclService.deleteAcl(childOid, false); |
|
|
|
|
|
|
|
assertEquals(1, getJdbcTemplate().queryForList(SELECT_ALL_CLASSES, new Object[] {"org.springframework.security.TargetObject"} ).size()); |
|
|
|
|
|
|
|
assertEquals(0, getJdbcTemplate().queryForList(SELECT_OBJECT_IDENTITY, new Object[] {new Long(102)}).size()); |
|
|
|
|
|
|
|
assertEquals(2, getJdbcTemplate().queryForList(SELECT_ALL_OBJECT_IDENTITIES).size()); |
|
|
|
|
|
|
|
assertEquals(3, getJdbcTemplate().queryForList(SELECT_ACL_ENTRY, new Object[] {new Long(103)} ).size()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Check the cache
|
|
|
|
|
|
|
|
assertNull(aclCache.getFromCache(childOid)); |
|
|
|
|
|
|
|
assertNull(aclCache.getFromCache(new Long(102))); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* public void testCumulativePermissions() { |
|
|
|
/* public void testCumulativePermissions() { |
|
|
|
setComplete(); |
|
|
|
setComplete(); |
|
|
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ADMINISTRATOR")}); |
|
|
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ADMINISTRATOR")}); |
|
|
|
|