Skip to content

Commit 35ded39

Browse files
committed
RoleHierarchyImpl improve test readability.
Closes gh-15264 Signed-off-by: Niels Basjes <[email protected]>
1 parent 87f42d4 commit 35ded39

File tree

2 files changed

+46
-24
lines changed

2 files changed

+46
-24
lines changed

core/src/test/java/org/springframework/security/access/hierarchicalroles/HierarchicalRolesTestHelper.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
import org.springframework.security.core.GrantedAuthority;
2626

27+
import static org.assertj.core.api.Assertions.assertThat;
28+
2729
/**
2830
* Test helper class for the hierarchical roles tests.
2931
*
@@ -74,4 +76,37 @@ public static List<GrantedAuthority> createAuthorityList(final String... roles)
7476
return authorities;
7577
}
7678

79+
// Usage example:
80+
// assertHierarchy(roleHierarchyImpl)
81+
// .givesToAuthorities("C")
82+
// .theseAuthorities("C", "ROLE_B", "ROLE_C", "ROLE_D", "ROLE_E", "ROLE_F");
83+
84+
public static AssertingHierarchy assertHierarchy(RoleHierarchyImpl hierarchy) {
85+
return new AssertingHierarchy(hierarchy);
86+
}
87+
88+
public static class AssertingHierarchy {
89+
RoleHierarchyImpl hierarchy;
90+
public AssertingHierarchy(RoleHierarchyImpl hierarchy) {
91+
assertThat(hierarchy).isNotNull();
92+
this.hierarchy = hierarchy;
93+
}
94+
public GivenAuthorities givesToAuthorities(String... authorities) {
95+
return new GivenAuthorities(hierarchy.getReachableGrantedAuthorities(createAuthorityList(authorities)));
96+
}
97+
}
98+
99+
public static class GivenAuthorities {
100+
Collection<GrantedAuthority> authorities;
101+
public GivenAuthorities(Collection<GrantedAuthority> authorities) {
102+
this.authorities = authorities;
103+
}
104+
public void theseAuthorities(String... expectedAuthorities) {
105+
List<GrantedAuthority> expectedGrantedAuthorities = createAuthorityList(expectedAuthorities);
106+
assertThat(
107+
containTheSameGrantedAuthoritiesCompareByAuthorityString(authorities, expectedGrantedAuthorities))
108+
.isTrue();
109+
}
110+
}
111+
77112
}

core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyImplTests.java

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
2929
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
3030
import static org.assertj.core.api.Assertions.assertThatNoException;
31+
import static org.springframework.security.access.hierarchicalroles.HierarchicalRolesTestHelper.assertHierarchy;
3132

3233
/**
3334
* Tests for {@link RoleHierarchyImpl}.
@@ -252,20 +253,12 @@ public void testBuilderWithDefaultRolePrefix() {
252253
.authority("C")
253254
.implies("E", "F", "B")
254255
.build();
255-
List<GrantedAuthority> flatAuthorities1 = AuthorityUtils.createAuthorityList("ROLE_A");
256-
List<GrantedAuthority> allAuthorities1 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_B", "ROLE_C",
257-
"ROLE_D");
258-
259-
assertThat(roleHierarchyImpl).isNotNull();
260-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities1))
261-
.containsExactlyInAnyOrderElementsOf(allAuthorities1);
262256

263-
List<GrantedAuthority> flatAuthorities2 = AuthorityUtils.createAuthorityList("C");
264-
List<GrantedAuthority> allAuthorities2 = AuthorityUtils.createAuthorityList("C", "ROLE_B", "ROLE_C", "ROLE_D",
265-
"ROLE_E", "ROLE_F");
266-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities2))
267-
.containsExactlyInAnyOrderElementsOf(allAuthorities2);
257+
assertHierarchy(roleHierarchyImpl).givesToAuthorities("ROLE_A")
258+
.theseAuthorities("ROLE_A", "ROLE_B", "ROLE_C", "ROLE_D");
268259

260+
assertHierarchy(roleHierarchyImpl).givesToAuthorities("C")
261+
.theseAuthorities("C", "ROLE_B", "ROLE_C", "ROLE_D", "ROLE_E", "ROLE_F");
269262
}
270263

271264
@Test
@@ -278,19 +271,13 @@ public void testBuilderWithRolePrefix() {
278271
.authority("C")
279272
.implies("E", "F", "B")
280273
.build();
281-
List<GrantedAuthority> flatAuthorities1 = AuthorityUtils.createAuthorityList("CUSTOM_PREFIX_A");
282-
List<GrantedAuthority> allAuthorities1 = AuthorityUtils.createAuthorityList("CUSTOM_PREFIX_A",
283-
"CUSTOM_PREFIX_B", "CUSTOM_PREFIX_C", "CUSTOM_PREFIX_D");
284274

285-
assertThat(roleHierarchyImpl).isNotNull();
286-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities1))
287-
.containsExactlyInAnyOrderElementsOf(allAuthorities1);
288-
289-
List<GrantedAuthority> flatAuthorities2 = AuthorityUtils.createAuthorityList("C");
290-
List<GrantedAuthority> allAuthorities2 = AuthorityUtils.createAuthorityList("C", "CUSTOM_PREFIX_B",
291-
"CUSTOM_PREFIX_C", "CUSTOM_PREFIX_D", "CUSTOM_PREFIX_E", "CUSTOM_PREFIX_F");
292-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities2))
293-
.containsExactlyInAnyOrderElementsOf(allAuthorities2);
275+
assertHierarchy(roleHierarchyImpl).givesToAuthorities("CUSTOM_PREFIX_A")
276+
.theseAuthorities("CUSTOM_PREFIX_A", "CUSTOM_PREFIX_B", "CUSTOM_PREFIX_C", "CUSTOM_PREFIX_D");
277+
278+
assertHierarchy(roleHierarchyImpl).givesToAuthorities("C")
279+
.theseAuthorities("C", "CUSTOM_PREFIX_B", "CUSTOM_PREFIX_C", "CUSTOM_PREFIX_D", "CUSTOM_PREFIX_E",
280+
"CUSTOM_PREFIX_F");
294281
}
295282

296283
@Test

0 commit comments

Comments
 (0)