@ -18,6 +18,7 @@ package org.springframework.security.acls.domain;
import java.util.Arrays ;
import java.util.Arrays ;
import org.assertj.core.api.Assertions ;
import org.junit.jupiter.api.AfterEach ;
import org.junit.jupiter.api.AfterEach ;
import org.junit.jupiter.api.BeforeEach ;
import org.junit.jupiter.api.BeforeEach ;
import org.junit.jupiter.api.Test ;
import org.junit.jupiter.api.Test ;
@ -25,6 +26,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock ;
import org.mockito.Mock ;
import org.mockito.junit.jupiter.MockitoExtension ;
import org.mockito.junit.jupiter.MockitoExtension ;
import org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl ;
import org.springframework.security.acls.model.Acl ;
import org.springframework.security.acls.model.Acl ;
import org.springframework.security.authentication.TestingAuthenticationToken ;
import org.springframework.security.authentication.TestingAuthenticationToken ;
import org.springframework.security.core.GrantedAuthority ;
import org.springframework.security.core.GrantedAuthority ;
@ -34,6 +36,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextHolderStrategy ;
import org.springframework.security.core.context.SecurityContextHolderStrategy ;
import org.springframework.security.core.context.SecurityContextImpl ;
import org.springframework.security.core.context.SecurityContextImpl ;
import static org.assertj.core.api.Assertions.assertThatNoException ;
import static org.mockito.BDDMockito.given ;
import static org.mockito.BDDMockito.given ;
import static org.mockito.Mockito.verify ;
import static org.mockito.Mockito.verify ;
@ -86,6 +89,15 @@ public class AclAuthorizationStrategyImplTests {
this . strategy . securityCheck ( this . acl , AclAuthorizationStrategy . CHANGE_GENERAL ) ;
this . strategy . securityCheck ( this . acl , AclAuthorizationStrategy . CHANGE_GENERAL ) ;
}
}
@Test
public void securityCheckWhenRoleReachableByHierarchyThenAuthorized ( ) {
given ( this . acl . getOwner ( ) ) . willReturn ( new GrantedAuthoritySid ( "ROLE_AUTH_B" ) ) ;
this . strategy = new AclAuthorizationStrategyImpl ( new SimpleGrantedAuthority ( "ROLE_SYSTEM_ADMIN" ) ) ;
this . strategy . setRoleHierarchy ( RoleHierarchyImpl . fromHierarchy ( "ROLE_AUTH > ROLE_AUTH_B" ) ) ;
assertThatNoException ( )
. isThrownBy ( ( ) - > this . strategy . securityCheck ( this . acl , AclAuthorizationStrategy . CHANGE_GENERAL ) ) ;
}
@Test
@Test
public void securityCheckWhenCustomSecurityContextHolderStrategyThenUses ( ) {
public void securityCheckWhenCustomSecurityContextHolderStrategyThenUses ( ) {
given ( this . securityContextHolderStrategy . getContext ( ) ) . willReturn ( this . context ) ;
given ( this . securityContextHolderStrategy . getContext ( ) ) . willReturn ( this . context ) ;