mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-12 05:13:33 +00:00
Convert AclImplTests to use JMock mocks.
This commit is contained in:
parent
04e2fc7daf
commit
7ff5602dbc
22
acl/pom.xml
22
acl/pom.xml
@ -17,7 +17,7 @@
|
|||||||
<artifactId>spring-security-core</artifactId>
|
<artifactId>spring-security-core</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--
|
<!--
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-core</artifactId>
|
<artifactId>spring-security-core</artifactId>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<classifier>tests</classifier>
|
<classifier>tests</classifier>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
-->
|
-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-core</artifactId>
|
<artifactId>spring-security-core</artifactId>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-context-support</artifactId>
|
<artifactId>spring-context-support</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-jdbc</artifactId>
|
<artifactId>spring-jdbc</artifactId>
|
||||||
@ -56,13 +56,17 @@
|
|||||||
<artifactId>hsqldb</artifactId>
|
<artifactId>hsqldb</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jmock</groupId>
|
||||||
|
<artifactId>jmock-junit4</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<spring.osgi.export>
|
<spring.osgi.export>
|
||||||
org.springframework.security.*;version=${pom.version.osgi}
|
org.springframework.security.*;version=${pom.version.osgi}
|
||||||
</spring.osgi.export>
|
</spring.osgi.export>
|
||||||
|
|
||||||
<spring.osgi.import>
|
<spring.osgi.import>
|
||||||
net.sf.ehcache.*;version="[1.4.1, 2.0.0)";resolution:=optional,
|
net.sf.ehcache.*;version="[1.4.1, 2.0.0)";resolution:=optional,
|
||||||
org.springframework.security.*;version="[${pom.version.osgi},${pom.version.osgi}]",
|
org.springframework.security.*;version="[${pom.version.osgi},${pom.version.osgi}]",
|
||||||
@ -79,7 +83,7 @@
|
|||||||
!org.springframework.security.*
|
!org.springframework.security.*
|
||||||
</spring.osgi.private.pkg>
|
</spring.osgi.private.pkg>
|
||||||
|
|
||||||
<spring.osgi.symbolic.name>org.springframework.security.acls</spring.osgi.symbolic.name>
|
<spring.osgi.symbolic.name>org.springframework.security.acls</spring.osgi.symbolic.name>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
package org.springframework.security.acls.domain;
|
package org.springframework.security.acls.domain;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import org.jmock.Expectations;
|
||||||
|
import org.jmock.Mockery;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
import org.springframework.security.Authentication;
|
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;
|
||||||
@ -29,142 +34,103 @@ import org.springframework.security.context.SecurityContextHolder;
|
|||||||
import org.springframework.security.providers.TestingAuthenticationToken;
|
import org.springframework.security.providers.TestingAuthenticationToken;
|
||||||
import org.springframework.security.util.FieldUtils;
|
import org.springframework.security.util.FieldUtils;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link AclImpl}.
|
* Tests for {@link AclImpl}.
|
||||||
*
|
*
|
||||||
* @author Andrei Stefan
|
* @author Andrei Stefan
|
||||||
*/
|
*/
|
||||||
public class AclImplTests extends TestCase {
|
public class AclImplTests {
|
||||||
|
Authentication auth = new TestingAuthenticationToken("johndoe", "ignored", "ROLE_ADMINISTRATOR");
|
||||||
|
Mockery jmockCtx = new Mockery();
|
||||||
|
AclAuthorizationStrategy mockAuthzStrategy;
|
||||||
|
AuditLogger mockAuditLogger;
|
||||||
|
ObjectIdentity objectIdentity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
||||||
|
|
||||||
// ~ Methods ========================================================================================================
|
// ~ Methods ========================================================================================================
|
||||||
|
|
||||||
@Override
|
@Before
|
||||||
protected void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
|
mockAuthzStrategy = jmockCtx.mock(AclAuthorizationStrategy.class);
|
||||||
|
mockAuditLogger = jmockCtx.mock(AuditLogger.class);;
|
||||||
|
jmockCtx.checking(new Expectations() {{
|
||||||
|
ignoring(mockAuthzStrategy);
|
||||||
|
ignoring(mockAuditLogger);
|
||||||
|
}});
|
||||||
|
auth.setAuthenticated(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@After
|
||||||
protected void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
SecurityContextHolder.clearContext();
|
SecurityContextHolder.clearContext();
|
||||||
super.tearDown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testConstructorsRejectNullParameters() throws Exception {
|
@Test(expected=IllegalArgumentException.class)
|
||||||
Authentication auth = new TestingAuthenticationToken("johndoe", "ignored",
|
public void testConstructorsRejectNullObjectIdentity() throws Exception {
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_ADMINISTRATOR") });
|
|
||||||
auth.setAuthenticated(true);
|
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Acl acl = new AclImpl(null, new Long(1), strategy, auditLogger);
|
new AclImpl(null, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid("johndoe"));
|
||||||
fail("It should have thrown IllegalArgumentException");
|
fail("Should have thrown IllegalArgumentException");
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException expected) {
|
catch (IllegalArgumentException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(identity, null, strategy, auditLogger);
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(identity, new Long(1), null, auditLogger);
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(identity, new Long(1), strategy, null);
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(null, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid("johndoe"));
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(identity, null, strategy, auditLogger, null, null, true, new PrincipalSid("johndoe"));
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(identity, new Long(1), null, auditLogger, null, null, true, new PrincipalSid("johndoe"));
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(identity, new Long(1), strategy, null, null, null, true, new PrincipalSid("johndoe"));
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Acl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, null);
|
|
||||||
fail("It should have thrown IllegalArgumentException");
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
|
new AclImpl(null, new Long(1), mockAuthzStrategy, mockAuditLogger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void testConstructorsRejectNullId() throws Exception {
|
||||||
|
try {
|
||||||
|
new AclImpl(objectIdentity, null, mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid("johndoe"));
|
||||||
|
fail("Should have thrown IllegalArgumentException");
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
|
}
|
||||||
|
new AclImpl(objectIdentity, null, mockAuthzStrategy, mockAuditLogger);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void testConstructorsRejectNullAclAuthzStrategy() throws Exception {
|
||||||
|
try {
|
||||||
|
new AclImpl(objectIdentity, new Long(1), null, mockAuditLogger, null, null, true, new PrincipalSid("johndoe"));
|
||||||
|
fail("It should have thrown IllegalArgumentException");
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
|
}
|
||||||
|
new AclImpl(objectIdentity, new Long(1), null, mockAuditLogger);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void testConstructorsRejectNullAuditLogger() throws Exception {
|
||||||
|
try {
|
||||||
|
new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, null, null, null, true, new PrincipalSid("johndoe"));
|
||||||
|
fail("It should have thrown IllegalArgumentException");
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException expected) {
|
||||||
|
}
|
||||||
|
new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInsertAceRejectsNullParameters() throws Exception {
|
public void testInsertAceRejectsNullParameters() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("johndoe", "ignored",
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid(
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_ADMINISTRATOR") });
|
|
||||||
auth.setAuthenticated(true);
|
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
|
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
try {
|
try {
|
||||||
acl.insertAce(0, null, new GrantedAuthoritySid("ROLE_IGNORED"), true);
|
acl.insertAce(0, null, new GrantedAuthoritySid("ROLE_IGNORED"), true);
|
||||||
fail("It should have thrown IllegalArgumentException");
|
fail("It should have thrown IllegalArgumentException");
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException expected) {
|
catch (IllegalArgumentException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
acl.insertAce(0, BasePermission.READ, null, true);
|
acl.insertAce(0, BasePermission.READ, null, true);
|
||||||
fail("It should have thrown IllegalArgumentException");
|
fail("It should have thrown IllegalArgumentException");
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException expected) {
|
catch (IllegalArgumentException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testInsertAceAddsElementAtCorrectIndex() throws Exception {
|
public void testInsertAceAddsElementAtCorrectIndex() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("johndoe", "ignored",
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid("johndoe"));
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_ADMINISTRATOR") });
|
|
||||||
auth.setAuthenticated(true);
|
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
|
||||||
"johndoe"));
|
|
||||||
MockAclService service = new MockAclService();
|
MockAclService service = new MockAclService();
|
||||||
|
|
||||||
// Insert one permission
|
// Insert one permission
|
||||||
@ -198,17 +164,9 @@ public class AclImplTests extends TestCase {
|
|||||||
assertEquals(acl.getEntries()[2].getSid(), new GrantedAuthoritySid("ROLE_TEST2"));
|
assertEquals(acl.getEntries()[2].getSid(), new GrantedAuthoritySid("ROLE_TEST2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected=NotFoundException.class)
|
||||||
public void testInsertAceFailsForInexistentElement() throws Exception {
|
public void testInsertAceFailsForInexistentElement() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("johndoe", "ignored",
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid(
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_ADMINISTRATOR") });
|
|
||||||
auth.setAuthenticated(true);
|
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
MockAclService service = new MockAclService();
|
MockAclService service = new MockAclService();
|
||||||
|
|
||||||
@ -216,26 +174,12 @@ public class AclImplTests extends TestCase {
|
|||||||
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST1"), true);
|
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST1"), true);
|
||||||
service.updateAcl(acl);
|
service.updateAcl(acl);
|
||||||
|
|
||||||
try {
|
acl.insertAce(55, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST2"), true);
|
||||||
acl.insertAce(55, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST2"), true);
|
|
||||||
fail("It should have thrown NotFoundException");
|
|
||||||
}
|
|
||||||
catch (NotFoundException expected) {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testDeleteAceKeepsInitialOrdering() throws Exception {
|
public void testDeleteAceKeepsInitialOrdering() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("johndoe", "ignored",
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid(
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_ADMINISTRATOR") });
|
|
||||||
auth.setAuthenticated(true);
|
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
MockAclService service = new MockAclService();
|
MockAclService service = new MockAclService();
|
||||||
|
|
||||||
@ -265,65 +209,49 @@ public class AclImplTests extends TestCase {
|
|||||||
assertEquals(0, acl.getEntries().length);
|
assertEquals(0, acl.getEntries().length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testDeleteAceFailsForInexistentElement() throws Exception {
|
public void testDeleteAceFailsForInexistentElement() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("johndoe", "ignored",
|
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_ADMINISTRATOR") });
|
|
||||||
auth.setAuthenticated(true);
|
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
AuditLogger auditLogger = new ConsoleAuditLogger();
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
try {
|
try {
|
||||||
acl.deleteAce(99);
|
acl.deleteAce(99);
|
||||||
fail("It should have thrown NotFoundException");
|
fail("It should have thrown NotFoundException");
|
||||||
}
|
}
|
||||||
catch (NotFoundException expected) {
|
catch (NotFoundException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIsGrantingRejectsEmptyParameters() throws Exception {
|
public void testIsGrantingRejectsEmptyParameters() throws Exception {
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid(
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
acl.isGranted(new Permission[] {}, new Sid[] { new PrincipalSid("ben") }, false);
|
acl.isGranted(new Permission[] {}, new Sid[] { new PrincipalSid("ben") }, false);
|
||||||
fail("It should have thrown IllegalArgumentException");
|
fail("It should have thrown IllegalArgumentException");
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException expected) {
|
catch (IllegalArgumentException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
acl.isGranted(new Permission[] { BasePermission.READ }, new Sid[] {}, false);
|
acl.isGranted(new Permission[] { BasePermission.READ }, new Sid[] {}, false);
|
||||||
fail("It should have thrown IllegalArgumentException");
|
fail("It should have thrown IllegalArgumentException");
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException expected) {
|
catch (IllegalArgumentException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIsGrantingGrantsAccessForAclWithNoParent() throws Exception {
|
public void testIsGrantingGrantsAccessForAclWithNoParent() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("ben", "ignored", new GrantedAuthority[] {
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored", "ROLE_GENERAL","ROLE_GUEST");
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL"), new GrantedAuthorityImpl("ROLE_GUEST") });
|
|
||||||
auth.setAuthenticated(true);
|
auth.setAuthenticated(true);
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity rootOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
ObjectIdentity rootOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
||||||
|
|
||||||
// Create an ACL which owner is not the authenticated principal
|
// Create an ACL which owner is not the authenticated principal
|
||||||
MutableAcl rootAcl = new AclImpl(rootOid, new Long(1), strategy, auditLogger, null, null, false, new PrincipalSid(
|
MutableAcl rootAcl = new AclImpl(rootOid, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, false, new PrincipalSid(
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
|
|
||||||
// Grant some permissions
|
// Grant some permissions
|
||||||
@ -341,7 +269,6 @@ public class AclImplTests extends TestCase {
|
|||||||
fail("It should have thrown NotFoundException");
|
fail("It should have thrown NotFoundException");
|
||||||
}
|
}
|
||||||
catch (NotFoundException expected) {
|
catch (NotFoundException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
assertTrue(rootAcl.isGranted(new Permission[] { BasePermission.WRITE }, new Sid[] { new PrincipalSid("scott") },
|
assertTrue(rootAcl.isGranted(new Permission[] { BasePermission.WRITE }, new Sid[] { new PrincipalSid("scott") },
|
||||||
false));
|
false));
|
||||||
@ -356,19 +283,14 @@ public class AclImplTests extends TestCase {
|
|||||||
fail("It should have thrown NotFoundException");
|
fail("It should have thrown NotFoundException");
|
||||||
}
|
}
|
||||||
catch (NotFoundException expected) {
|
catch (NotFoundException expected) {
|
||||||
assertTrue(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIsGrantingGrantsAccessForInheritableAcls() throws Exception {
|
public void testIsGrantingGrantsAccessForInheritableAcls() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("ben", "ignored",
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored","ROLE_GENERAL");
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
auth.setAuthenticated(true);
|
auth.setAuthenticated(true);
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity grandParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
ObjectIdentity grandParentOid = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
||||||
ObjectIdentity parentOid1 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(101));
|
ObjectIdentity parentOid1 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(101));
|
||||||
ObjectIdentity parentOid2 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(102));
|
ObjectIdentity parentOid2 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(102));
|
||||||
@ -376,15 +298,15 @@ public class AclImplTests extends TestCase {
|
|||||||
ObjectIdentity childOid2 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(104));
|
ObjectIdentity childOid2 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(104));
|
||||||
|
|
||||||
// Create ACLs
|
// Create ACLs
|
||||||
MutableAcl grandParentAcl = new AclImpl(grandParentOid, new Long(1), strategy, auditLogger, null, null, false,
|
MutableAcl grandParentAcl = new AclImpl(grandParentOid, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, false,
|
||||||
new PrincipalSid("johndoe"));
|
new PrincipalSid("johndoe"));
|
||||||
MutableAcl parentAcl1 = new AclImpl(parentOid1, new Long(2), strategy, auditLogger, null, null, true,
|
MutableAcl parentAcl1 = new AclImpl(parentOid1, new Long(2), mockAuthzStrategy, mockAuditLogger, null, null, true,
|
||||||
new PrincipalSid("johndoe"));
|
new PrincipalSid("johndoe"));
|
||||||
MutableAcl parentAcl2 = new AclImpl(parentOid2, new Long(3), strategy, auditLogger, null, null, true,
|
MutableAcl parentAcl2 = new AclImpl(parentOid2, new Long(3), mockAuthzStrategy, mockAuditLogger, null, null, true,
|
||||||
new PrincipalSid("johndoe"));
|
new PrincipalSid("johndoe"));
|
||||||
MutableAcl childAcl1 = new AclImpl(childOid1, new Long(4), strategy, auditLogger, null, null, true,
|
MutableAcl childAcl1 = new AclImpl(childOid1, new Long(4), mockAuthzStrategy, mockAuditLogger, null, null, true,
|
||||||
new PrincipalSid("johndoe"));
|
new PrincipalSid("johndoe"));
|
||||||
MutableAcl childAcl2 = new AclImpl(childOid2, new Long(4), strategy, auditLogger, null, null, false,
|
MutableAcl childAcl2 = new AclImpl(childOid2, new Long(4), mockAuthzStrategy, mockAuditLogger, null, null, false,
|
||||||
new PrincipalSid("johndoe"));
|
new PrincipalSid("johndoe"));
|
||||||
|
|
||||||
// Create hierarchies
|
// Create hierarchies
|
||||||
@ -450,17 +372,12 @@ public class AclImplTests extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUpdateAce() throws Exception {
|
public void testUpdateAce() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("ben", "ignored",
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored","ROLE_GENERAL");
|
||||||
new GrantedAuthority[] { new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
auth.setAuthenticated(true);
|
auth.setAuthenticated(true);
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, false, new PrincipalSid(
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, false, new PrincipalSid(
|
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
MockAclService service = new MockAclService();
|
MockAclService service = new MockAclService();
|
||||||
|
|
||||||
@ -484,17 +401,12 @@ public class AclImplTests extends TestCase {
|
|||||||
assertEquals(acl.getEntries()[2].getPermission(), BasePermission.READ);
|
assertEquals(acl.getEntries()[2].getPermission(), BasePermission.READ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUpdateAuditing() throws Exception {
|
public void testUpdateAuditing() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("ben", "ignored", new GrantedAuthority[] {
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored", "ROLE_AUDITING", "ROLE_GENERAL");
|
||||||
new GrantedAuthorityImpl("ROLE_AUDITING"), new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
auth.setAuthenticated(true);
|
auth.setAuthenticated(true);
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, false, new PrincipalSid(
|
||||||
new GrantedAuthorityImpl("ROLE_OWNERSHIP"), new GrantedAuthorityImpl("ROLE_AUDITING"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, false, new PrincipalSid(
|
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
MockAclService service = new MockAclService();
|
MockAclService service = new MockAclService();
|
||||||
|
|
||||||
@ -518,54 +430,50 @@ public class AclImplTests extends TestCase {
|
|||||||
assertTrue(((AuditableAccessControlEntry) acl.getEntries()[1]).isAuditSuccess());
|
assertTrue(((AuditableAccessControlEntry) acl.getEntries()[1]).isAuditSuccess());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testGettersSetters() throws Exception {
|
public void testGettersSetters() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("ben", "ignored", new GrantedAuthority[] {
|
Authentication auth = new TestingAuthenticationToken("ben", "ignored", new GrantedAuthority[] {
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
||||||
auth.setAuthenticated(true);
|
auth.setAuthenticated(true);
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL"), new GrantedAuthorityImpl("ROLE_GENERAL"),
|
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
||||||
ObjectIdentity identity2 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(101));
|
ObjectIdentity identity2 = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(101));
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, null, true, new PrincipalSid(
|
MutableAcl acl = new AclImpl(identity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid(
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
MutableAcl parentAcl = new AclImpl(identity2, new Long(2), strategy, auditLogger, null, null, true, new PrincipalSid(
|
MutableAcl parentAcl = new AclImpl(identity2, new Long(2), mockAuthzStrategy, mockAuditLogger, null, null, true, new PrincipalSid(
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
MockAclService service = new MockAclService();
|
MockAclService service = new MockAclService();
|
||||||
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_USER_READ"), true);
|
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_USER_READ"), true);
|
||||||
acl.insertAce(1, BasePermission.WRITE, new GrantedAuthoritySid("ROLE_USER_READ"), true);
|
acl.insertAce(1, BasePermission.WRITE, new GrantedAuthoritySid("ROLE_USER_READ"), true);
|
||||||
service.updateAcl(acl);
|
service.updateAcl(acl);
|
||||||
|
|
||||||
assertEquals(acl.getId(), new Long(1));
|
assertEquals(acl.getId(), new Long(1));
|
||||||
assertEquals(acl.getObjectIdentity(), identity);
|
assertEquals(acl.getObjectIdentity(), identity);
|
||||||
assertEquals(acl.getOwner(), new PrincipalSid("johndoe"));
|
assertEquals(acl.getOwner(), new PrincipalSid("johndoe"));
|
||||||
assertNull(acl.getParentAcl());
|
assertNull(acl.getParentAcl());
|
||||||
assertTrue(acl.isEntriesInheriting());
|
assertTrue(acl.isEntriesInheriting());
|
||||||
assertEquals(2, acl.getEntries().length);
|
assertEquals(2, acl.getEntries().length);
|
||||||
|
|
||||||
acl.setParent(parentAcl);
|
acl.setParent(parentAcl);
|
||||||
assertEquals(acl.getParentAcl(), parentAcl);
|
assertEquals(acl.getParentAcl(), parentAcl);
|
||||||
|
|
||||||
acl.setEntriesInheriting(false);
|
acl.setEntriesInheriting(false);
|
||||||
assertFalse(acl.isEntriesInheriting());
|
assertFalse(acl.isEntriesInheriting());
|
||||||
|
|
||||||
((OwnershipAcl) acl).setOwner(new PrincipalSid("ben"));
|
((OwnershipAcl) acl).setOwner(new PrincipalSid("ben"));
|
||||||
assertEquals(acl.getOwner(), new PrincipalSid("ben"));
|
assertEquals(acl.getOwner(), new PrincipalSid("ben"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testIsSidLoaded() throws Exception {
|
public void testIsSidLoaded() throws Exception {
|
||||||
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
AclAuthorizationStrategyImpl strategy = new AclAuthorizationStrategyImpl(new GrantedAuthority[] {
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL"), new GrantedAuthorityImpl("ROLE_GENERAL"),
|
new GrantedAuthorityImpl("ROLE_GENERAL"), new GrantedAuthorityImpl("ROLE_GENERAL"),
|
||||||
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
new GrantedAuthorityImpl("ROLE_GENERAL") });
|
||||||
AuditLogger auditLogger = new ConsoleAuditLogger();
|
AuditLogger auditLogger = new ConsoleAuditLogger();
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl("org.springframework.security.TargetObject", new Long(100));
|
|
||||||
|
|
||||||
Sid[] loadedSids = new Sid[] { new PrincipalSid("ben"), new GrantedAuthoritySid("ROLE_IGNORED") };
|
Sid[] loadedSids = new Sid[] { new PrincipalSid("ben"), new GrantedAuthoritySid("ROLE_IGNORED") };
|
||||||
MutableAcl acl = new AclImpl(identity, new Long(1), strategy, auditLogger, null, loadedSids, true, new PrincipalSid(
|
MutableAcl acl = new AclImpl(objectIdentity, new Long(1), mockAuthzStrategy, mockAuditLogger, null, loadedSids, true, new PrincipalSid(
|
||||||
"johndoe"));
|
"johndoe"));
|
||||||
|
|
||||||
assertTrue(acl.isSidLoaded(loadedSids));
|
assertTrue(acl.isSidLoaded(loadedSids));
|
||||||
assertTrue(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_IGNORED"), new PrincipalSid("ben") }));
|
assertTrue(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_IGNORED"), new PrincipalSid("ben") }));
|
||||||
assertTrue(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_IGNORED")}));
|
assertTrue(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_IGNORED")}));
|
||||||
@ -576,8 +484,8 @@ public class AclImplTests extends TestCase {
|
|||||||
assertFalse(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_GENERAL"), new GrantedAuthoritySid("ROLE_IGNORED") }));
|
assertFalse(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_GENERAL"), new GrantedAuthoritySid("ROLE_IGNORED") }));
|
||||||
assertFalse(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_IGNORED"), new GrantedAuthoritySid("ROLE_GENERAL") }));
|
assertFalse(acl.isSidLoaded(new Sid[] { new GrantedAuthoritySid("ROLE_IGNORED"), new GrantedAuthoritySid("ROLE_GENERAL") }));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ~ Inner Classes ==================================================================================================
|
//~ Inner Classes ==================================================================================================
|
||||||
|
|
||||||
private class MockAclService implements MutableAclService {
|
private class MockAclService implements MutableAclService {
|
||||||
public MutableAcl createAcl(ObjectIdentity objectIdentity) throws AlreadyExistsException {
|
public MutableAcl createAcl(ObjectIdentity objectIdentity) throws AlreadyExistsException {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user