@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2024 the original author or authors .
* Copyright 2002 - 2025 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -40,8 +40,7 @@ public class RoleHierarchyImplTests {
@@ -40,8 +40,7 @@ public class RoleHierarchyImplTests {
public void testRoleHierarchyWithNullOrEmptyAuthorities ( ) {
List < GrantedAuthority > authorities0 = null ;
List < GrantedAuthority > authorities1 = new ArrayList < > ( ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . setHierarchy ( "ROLE_A > ROLE_B" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl . fromHierarchy ( "ROLE_A > ROLE_B" ) ;
assertThat ( roleHierarchyImpl . getReachableGrantedAuthorities ( authorities0 ) ) . isNotNull ( ) ;
assertThat ( roleHierarchyImpl . getReachableGrantedAuthorities ( authorities0 ) ) . isEmpty ( ) ;
assertThat ( roleHierarchyImpl . getReachableGrantedAuthorities ( authorities1 ) ) . isNotNull ( ) ;
@ -53,8 +52,7 @@ public class RoleHierarchyImplTests {
@@ -53,8 +52,7 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > authorities0 = AuthorityUtils . createAuthorityList ( "ROLE_0" ) ;
List < GrantedAuthority > authorities1 = AuthorityUtils . createAuthorityList ( "ROLE_A" ) ;
List < GrantedAuthority > authorities2 = AuthorityUtils . createAuthorityList ( "ROLE_A" , "ROLE_B" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . setHierarchy ( "ROLE_A > ROLE_B" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl . fromHierarchy ( "ROLE_A > ROLE_B" ) ;
assertThat ( HierarchicalRolesTestHelper . containTheSameGrantedAuthorities (
roleHierarchyImpl . getReachableGrantedAuthorities ( authorities0 ) , authorities0 ) )
. isTrue ( ) ;
@ -72,12 +70,11 @@ public class RoleHierarchyImplTests {
@@ -72,12 +70,11 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > authorities2 = AuthorityUtils . createAuthorityList ( "ROLE_A" , "ROLE_B" , "ROLE_C" ) ;
List < GrantedAuthority > authorities3 = AuthorityUtils . createAuthorityList ( "ROLE_A" , "ROLE_B" , "ROLE_C" ,
"ROLE_D" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . setHierarchy ( "ROLE_A > ROLE_B\nROLE_B > ROLE_C" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl . fromHierarchy ( "ROLE_A > ROLE_B\nROLE_B > ROLE_C" ) ;
assertThat ( HierarchicalRolesTestHelper . containTheSameGrantedAuthorities (
roleHierarchyImpl . getReachableGrantedAuthorities ( authorities1 ) , authorities2 ) )
. isTrue ( ) ;
roleHierarchyImpl . set Hierarchy( "ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_D" ) ;
roleHierarchyImpl = RoleHierarchyImpl . from Hierarchy ( "ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_D" ) ;
assertThat ( HierarchicalRolesTestHelper . containTheSameGrantedAuthorities (
roleHierarchyImpl . getReachableGrantedAuthorities ( authorities1 ) , authorities3 ) )
. isTrue ( ) ;
@ -94,8 +91,8 @@ public class RoleHierarchyImplTests {
@@ -94,8 +91,8 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > authoritiesOutput3 = AuthorityUtils . createAuthorityList ( "ROLE_C" , "ROLE_D" ) ;
List < GrantedAuthority > authoritiesInput4 = AuthorityUtils . createAuthorityList ( "ROLE_D" ) ;
List < GrantedAuthority > authoritiesOutput4 = AuthorityUtils . createAuthorityList ( "ROLE_D" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . set Hierarchy( "ROLE_A > ROLE_B\nROLE_A > ROLE_C\nROLE_C > ROLE_D\nROLE_B > ROLE_D" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl
. from Hierarchy ( "ROLE_A > ROLE_B\nROLE_A > ROLE_C\nROLE_C > ROLE_D\nROLE_B > ROLE_D" ) ;
assertThat ( HierarchicalRolesTestHelper . containTheSameGrantedAuthorities (
roleHierarchyImpl . getReachableGrantedAuthorities ( authoritiesInput1 ) , authoritiesOutput1 ) )
. isTrue ( ) ;
@ -112,24 +109,22 @@ public class RoleHierarchyImplTests {
@@ -112,24 +109,22 @@ public class RoleHierarchyImplTests {
@Test
public void testCyclesInRoleHierarchy ( ) {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
assertThatExceptionOfType ( CycleInRoleHierarchyException . class )
. isThrownBy ( ( ) - > roleHierarchyImpl . set Hierarchy( "ROLE_A > ROLE_A" ) ) ;
. isThrownBy ( ( ) - > RoleHierarchyImpl . from Hierarchy( "ROLE_A > ROLE_A" ) ) ;
assertThatExceptionOfType ( CycleInRoleHierarchyException . class )
. isThrownBy ( ( ) - > roleHierarchyImpl . set Hierarchy( "ROLE_A > ROLE_B\nROLE_B > ROLE_A" ) ) ;
. isThrownBy ( ( ) - > RoleHierarchyImpl . from Hierarchy( "ROLE_A > ROLE_B\nROLE_B > ROLE_A" ) ) ;
assertThatExceptionOfType ( CycleInRoleHierarchyException . class )
. isThrownBy ( ( ) - > roleHierarchyImpl . set Hierarchy( "ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_A" ) ) ;
assertThatExceptionOfType ( CycleInRoleHierarchyException . class ) . isThrownBy ( ( ) - > r oleHierarchyImpl
. set Hierarchy( "ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_E\nROLE_E > ROLE_D\nROLE_D > ROLE_B" ) ) ;
. isThrownBy ( ( ) - > RoleHierarchyImpl . from Hierarchy( "ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_A" ) ) ;
assertThatExceptionOfType ( CycleInRoleHierarchyException . class ) . isThrownBy ( ( ) - > R oleHierarchyImpl
. from Hierarchy( "ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_E\nROLE_E > ROLE_D\nROLE_D > ROLE_B" ) ) ;
assertThatExceptionOfType ( CycleInRoleHierarchyException . class )
. isThrownBy ( ( ) - > roleHierarchyImpl . set Hierarchy( "ROLE_C > ROLE_B\nROLE_B > ROLE_A\nROLE_A > ROLE_B" ) ) ;
. isThrownBy ( ( ) - > RoleHierarchyImpl . from Hierarchy( "ROLE_C > ROLE_B\nROLE_B > ROLE_A\nROLE_A > ROLE_B" ) ) ;
}
@Test
public void testNoCyclesInRoleHierarchy ( ) {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
assertThatNoException ( ) . isThrownBy ( ( ) - > roleHierarchyImpl
. setHierarchy ( "ROLE_A > ROLE_B\nROLE_A > ROLE_C\nROLE_C > ROLE_D\nROLE_B > ROLE_D" ) ) ;
assertThatNoException ( ) . isThrownBy ( ( ) - > RoleHierarchyImpl
. fromHierarchy ( "ROLE_A > ROLE_B\nROLE_A > ROLE_C\nROLE_C > ROLE_D\nROLE_B > ROLE_D" ) ) ;
}
// SEC-863
@ -138,8 +133,7 @@ public class RoleHierarchyImplTests {
@@ -138,8 +133,7 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > authorities0 = HierarchicalRolesTestHelper . createAuthorityList ( "ROLE_0" ) ;
List < GrantedAuthority > authorities1 = HierarchicalRolesTestHelper . createAuthorityList ( "ROLE_A" ) ;
List < GrantedAuthority > authorities2 = HierarchicalRolesTestHelper . createAuthorityList ( "ROLE_A" , "ROLE_B" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . setHierarchy ( "ROLE_A > ROLE_B" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl . fromHierarchy ( "ROLE_A > ROLE_B" ) ;
assertThat ( HierarchicalRolesTestHelper . containTheSameGrantedAuthoritiesCompareByAuthorityString (
roleHierarchyImpl . getReachableGrantedAuthorities ( authorities0 ) , authorities0 ) )
. isTrue ( ) ;
@ -157,12 +151,11 @@ public class RoleHierarchyImplTests {
@@ -157,12 +151,11 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > authorities2 = AuthorityUtils . createAuthorityList ( "ROLE A" , "ROLE B" , "ROLE>C" ) ;
List < GrantedAuthority > authorities3 = AuthorityUtils . createAuthorityList ( "ROLE A" , "ROLE B" , "ROLE>C" ,
"ROLE D" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . setHierarchy ( "ROLE A > ROLE B\nROLE B > ROLE>C" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl . fromHierarchy ( "ROLE A > ROLE B\nROLE B > ROLE>C" ) ;
assertThat ( HierarchicalRolesTestHelper . containTheSameGrantedAuthorities (
roleHierarchyImpl . getReachableGrantedAuthorities ( authorities1 ) , authorities2 ) )
. isTrue ( ) ;
roleHierarchyImpl . set Hierarchy( "ROLE A > ROLE B\nROLE B > ROLE>C\nROLE>C > ROLE D" ) ;
roleHierarchyImpl = RoleHierarchyImpl . from Hierarchy ( "ROLE A > ROLE B\nROLE B > ROLE>C\nROLE>C > ROLE D" ) ;
assertThat ( HierarchicalRolesTestHelper . containTheSameGrantedAuthorities (
roleHierarchyImpl . getReachableGrantedAuthorities ( authorities1 ) , authorities3 ) )
. isTrue ( ) ;
@ -174,8 +167,7 @@ public class RoleHierarchyImplTests {
@@ -174,8 +167,7 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > flatAuthorities = AuthorityUtils . createAuthorityList ( "ROLE_A" ) ;
List < GrantedAuthority > allAuthorities = AuthorityUtils . createAuthorityList ( "ROLE_A" , "ROLE_B" ,
"ROLE_AUTHENTICATED" , "ROLE_UNAUTHENTICATED" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . setHierarchy (
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl . fromHierarchy (
"ROLE_A > ROLE_B\n" + "ROLE_B > ROLE_AUTHENTICATED\n" + "ROLE_AUTHENTICATED > ROLE_UNAUTHENTICATED" ) ;
assertThat ( roleHierarchyImpl . getReachableGrantedAuthorities ( flatAuthorities ) )
. containsExactlyInAnyOrderElementsOf ( allAuthorities ) ;
@ -187,9 +179,8 @@ public class RoleHierarchyImplTests {
@@ -187,9 +179,8 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > flatAuthorities = AuthorityUtils . createAuthorityList ( "ROLE_HIGHEST" ) ;
List < GrantedAuthority > allAuthorities = AuthorityUtils . createAuthorityList ( "ROLE_HIGHEST" , "ROLE_HIGHER" ,
"ROLE_LOW" , "ROLE_LOWER" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl
. setHierarchy ( "ROLE_HIGHEST > ROLE_HIGHER\n" + "ROLE_HIGHER > ROLE_LOW\n" + "ROLE_LOW > ROLE_LOWER" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl
. fromHierarchy ( "ROLE_HIGHEST > ROLE_HIGHER\n" + "ROLE_HIGHER > ROLE_LOW\n" + "ROLE_LOW > ROLE_LOWER" ) ;
assertThat ( roleHierarchyImpl . getReachableGrantedAuthorities ( flatAuthorities ) )
. containsExactlyInAnyOrderElementsOf ( allAuthorities ) ;
}
@ -200,8 +191,8 @@ public class RoleHierarchyImplTests {
@@ -200,8 +191,8 @@ public class RoleHierarchyImplTests {
List < GrantedAuthority > flatAuthorities = AuthorityUtils . createAuthorityList ( "ROLE_HIGHEST" ) ;
List < GrantedAuthority > allAuthorities = AuthorityUtils . createAuthorityList ( "ROLE_HIGHEST" , "ROLE_HIGHER" ,
"ROLE_LOW" , "ROLE_LOWER" ) ;
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl ( ) ;
roleHierarchyImpl . set Hierarchy( "ROLE_HIGHEST > ROLE_HIGHER > ROLE_LOW > ROLE_LOWER" ) ;
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl
. from Hierarchy ( "ROLE_HIGHEST > ROLE_HIGHER > ROLE_LOW > ROLE_LOWER" ) ;
assertThat ( roleHierarchyImpl . getReachableGrantedAuthorities ( flatAuthorities ) )
. containsExactlyInAnyOrderElementsOf ( allAuthorities ) ;
}