Parcourir la source

SEC-532: added more test methods for JdbcAclService implementation

Andrei Stefan il y a 17 ans
Parent
commit
419a7a6426

+ 114 - 6
core/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java

@@ -14,11 +14,14 @@
  */
 package org.springframework.security.acls.jdbc;
 
+import java.util.Map;
+
 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.AlreadyExistsException;
+import org.springframework.security.acls.ChildrenExistException;
 import org.springframework.security.acls.MutableAcl;
 import org.springframework.security.acls.NotFoundException;
 import org.springframework.security.acls.Permission;
@@ -27,26 +30,26 @@ import org.springframework.security.acls.objectidentity.ObjectIdentity;
 import org.springframework.security.acls.objectidentity.ObjectIdentityImpl;
 import org.springframework.security.acls.sid.PrincipalSid;
 import org.springframework.security.acls.sid.Sid;
-
 import org.springframework.security.context.SecurityContextHolder;
-
 import org.springframework.security.providers.TestingAuthenticationToken;
-
 import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
 
-import java.util.Map;
-
 
 /**
  * Integration tests the ACL system using an in-memory database.
  *
  * @author Ben Alex
+ * @author Andrei Stefan
  * @version $Id:JdbcAclServiceTests.java 1754 2006-11-17 02:01:21Z benalex $
  */
 public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringContextTests {
     //~ Instance fields ================================================================================================
 
     private JdbcMutableAclService jdbcMutableAclService;
+    
+    private AclCache aclCache;
+    
+    private LookupStrategy lookupStrategy;
 
     //~ Methods ========================================================================================================
 
@@ -58,6 +61,13 @@ public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringCo
         this.jdbcMutableAclService = jdbcAclService;
     }
 
+    public void setAclCache(AclCache aclCache) {
+        this.aclCache = aclCache;
+    }
+
+    public void setLookupStrategy(LookupStrategy lookupStrategy) {
+        this.lookupStrategy = lookupStrategy;
+    }
 
     protected void onTearDown() throws Exception {
         super.onTearDown();
@@ -199,6 +209,104 @@ public class JdbcAclServiceTests extends AbstractTransactionalDataSourceSpringCo
 
         SecurityContextHolder.clearContext();
     }
+    
+/*    public void testDeleteAclAlsoDeletesChildren() throws Exception {
+        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));
+
+        // Delete the mid-parent and test if the child was deleted, as well
+        jdbcMutableAclService.deleteAcl(middleParentOid, true);
+        
+        try {
+            Acl acl = jdbcMutableAclService.readAclById(middleParentOid);
+            fail("It should have thrown NotFoundException");
+        }
+        catch (NotFoundException expected) {
+            assertTrue(true);
+        }
+        try {
+            Acl acl = jdbcMutableAclService.readAclById(childOid);
+            fail("It should have thrown NotFoundException");
+        }
+        catch (NotFoundException expected) {
+            assertTrue(true);
+        }
+        
+        Acl acl = jdbcMutableAclService.readAclById(topParentOid);
+        assertNotNull(acl);
+        assertEquals(((MutableAcl) acl).getObjectIdentity(), topParentOid);
+    }*/
+    
+    public void testConstructorRejectsNullParameters() throws Exception {
+        try {
+            JdbcAclService service = new JdbcMutableAclService(null, lookupStrategy, aclCache);
+            fail("It should have thrown IllegalArgumentException");
+        }
+        catch (IllegalArgumentException expected) {
+            assertTrue(true);
+        }
+        
+        try {
+            JdbcAclService service = new JdbcMutableAclService(this.getJdbcTemplate().getDataSource(), null, aclCache);
+            fail("It should have thrown IllegalArgumentException");
+        }
+        catch (IllegalArgumentException expected) {
+            assertTrue(true);
+        }
+        
+        try {
+            JdbcAclService service = new JdbcMutableAclService(this.getJdbcTemplate().getDataSource(), lookupStrategy, null);
+            fail("It should have thrown IllegalArgumentException");
+        }
+        catch (IllegalArgumentException expected) {
+            assertTrue(true);
+        }
+    }
+    
+    public void testCreateAclRejectsNullParameter() throws Exception {
+        try {
+            jdbcMutableAclService.createAcl(null);
+            fail("It should have thrown IllegalArgumentException");
+        }
+        catch (IllegalArgumentException expected) {
+            assertTrue(true);
+        }
+    }
+    
+    public void testCreateAclForADuplicateDomainObject() throws Exception {
+        ObjectIdentity duplicateOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
+        
+        // Try to add the same object second time
+        try {
+            jdbcMutableAclService.createAcl(duplicateOid);
+            fail("It should have thrown AlreadyExistsException");
+        }
+        catch (AlreadyExistsException expected) {
+            assertTrue(true);
+        }
+    }
+    
+    public void testDeleteAclRejectsNullParameters() throws Exception {
+        try {
+            jdbcMutableAclService.deleteAcl(null, true);
+            fail("It should have thrown IllegalArgumentException");
+        }
+        catch (IllegalArgumentException expected) {
+            assertTrue(true);
+        }
+    }
+    
+    public void testDeleteAclWithChildrenThrowsException() throws Exception {
+        try {
+            ObjectIdentity topParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
+            jdbcMutableAclService.deleteAcl(topParentOid, false);
+            fail("It should have thrown ChildrenExistException");
+        }
+        catch (ChildrenExistException expected) {
+            assertTrue(true);
+        }
+    }
 
 /*    public void testCumulativePermissions() {
    setComplete();