@ -20,6 +20,7 @@ import org.springframework.security.Authentication;
@@ -20,6 +20,7 @@ import org.springframework.security.Authentication;
import org.springframework.security.GrantedAuthority ;
import org.springframework.security.GrantedAuthorityImpl ;
import org.springframework.security.acls.AccessControlEntry ;
import org.springframework.security.acls.Acl ;
import org.springframework.security.acls.AlreadyExistsException ;
import org.springframework.security.acls.ChildrenExistException ;
import org.springframework.security.acls.MutableAcl ;
@ -43,8 +44,20 @@ import org.springframework.test.AbstractTransactionalDataSourceSpringContextTest
@@ -43,8 +44,20 @@ import org.springframework.test.AbstractTransactionalDataSourceSpringContextTest
* @version $Id : JdbcAclServiceTests . java 1754 2006 - 11 - 17 02 : 01 : 21Z benalex $
* /
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 AclCache aclCache ;
@ -307,7 +320,44 @@ public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringCo
@@ -307,7 +320,44 @@ public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringCo
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 ( ) {
setComplete ( ) ;
Authentication auth = new TestingAuthenticationToken ( "ben" , "ignored" , new GrantedAuthority [ ] { new GrantedAuthorityImpl ( "ROLE_ADMINISTRATOR" ) } ) ;