From 419a7a6426213fa9a34a2e601bb2b6c6b6d3bce5 Mon Sep 17 00:00:00 2001 From: Andrei Stefan Date: Wed, 6 Feb 2008 09:24:13 +0000 Subject: [PATCH] SEC-532: added more test methods for JdbcAclService implementation --- .../acls/jdbc/JdbcAclServiceTests.java | 120 +++++++++++++++++- 1 file changed, 114 insertions(+), 6 deletions(-) diff --git a/core/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java b/core/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java index 28814f89b3..a3a02bd7d8 100644 --- a/core/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java +++ b/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();