diff --git a/src/main/java/de/ozgcloud/admin/RootModelAssembler.java b/src/main/java/de/ozgcloud/admin/RootModelAssembler.java index 479177c203e46590781de6cc4c6b824233547053..319cb4d3525e1eede720494444555aa7c2f81a8d 100644 --- a/src/main/java/de/ozgcloud/admin/RootModelAssembler.java +++ b/src/main/java/de/ozgcloud/admin/RootModelAssembler.java @@ -56,7 +56,7 @@ public class RootModelAssembler implements RepresentationModelAssembler<Root, En List<Link> links = new ArrayList<>(); var rootLinkBuilder = WebMvcLinkBuilder.linkTo(RootController.class); links.add(rootLinkBuilder.withSelfRel()); - if (currentUserService.hasRole(UserRole.ADMIN_USER)) { + if (currentUserService.hasRole(UserRole.ADMIN_ADMIN)) { links.add(buildConfigLink()); } return links; diff --git a/src/main/java/de/ozgcloud/admin/common/user/UserRole.java b/src/main/java/de/ozgcloud/admin/common/user/UserRole.java index d369b3b3c522067200d729c21a1c6892bf854931..1b0db41b19d75eb43875afd31da0ea2b0beb69b7 100644 --- a/src/main/java/de/ozgcloud/admin/common/user/UserRole.java +++ b/src/main/java/de/ozgcloud/admin/common/user/UserRole.java @@ -28,5 +28,5 @@ import lombok.NoArgsConstructor; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class UserRole { - public static final String ADMIN_USER = "ADMIN_ADMIN"; + public static final String ADMIN_ADMIN = "ADMIN_ADMIN"; } diff --git a/src/main/java/de/ozgcloud/admin/security/SecurityConfiguration.java b/src/main/java/de/ozgcloud/admin/security/SecurityConfiguration.java index 4a87241bbec518fea5af2bbbd95f25c1aa56a39d..b1c6280e10acdf642638dea39854bd5eec7b4446 100644 --- a/src/main/java/de/ozgcloud/admin/security/SecurityConfiguration.java +++ b/src/main/java/de/ozgcloud/admin/security/SecurityConfiguration.java @@ -73,8 +73,8 @@ public class SecurityConfiguration { http.authorizeHttpRequests(requests -> requests .requestMatchers(HttpMethod.GET, "/api/environment").permitAll() - .requestMatchers("/api/configuration").hasRole(UserRole.ADMIN_USER) - .requestMatchers("/api/configuration/**").hasRole(UserRole.ADMIN_USER) + .requestMatchers("/api/configuration").hasRole(UserRole.ADMIN_ADMIN) + .requestMatchers("/api/configuration/**").hasRole(UserRole.ADMIN_ADMIN) .requestMatchers("/api").authenticated() .requestMatchers("/api/**").authenticated() .requestMatchers("/actuator").permitAll() @@ -95,7 +95,7 @@ public class SecurityConfiguration { } Set<GrantedAuthority> convertJwtToGrantedAuthorities(Jwt jwt) { - return getKeycloakRolesFromJwt(jwt) + return getRolesFromJwt(jwt) .stream() .map(this::mapRoleStringToGrantedAuthority) .collect(toSet()); @@ -105,7 +105,7 @@ public class SecurityConfiguration { return new SimpleGrantedAuthority(SIMPLE_GRANT_AUTHORITY_PREFIX + role); } - List<String> getKeycloakRolesFromJwt(Jwt jwt) { + List<String> getRolesFromJwt(Jwt jwt) { return Optional.ofNullable(jwt.getClaimAsMap(RESOURCE_ACCESS_KEY)) .flatMap(resourceAccessMap -> getMap(resourceAccessMap, oAuth2Properties.getResource())) .flatMap(adminClientMap -> getList(adminClientMap, ROLES_KEY)) diff --git a/src/test/java/de/ozgcloud/admin/ApiRootITCase.java b/src/test/java/de/ozgcloud/admin/ApiRootITCase.java index 3f9624d08c6364670d9169ea3c97c64c7ea4c863..87b3da37939e6f2fa7238d5f6b39af210d8097b7 100644 --- a/src/test/java/de/ozgcloud/admin/ApiRootITCase.java +++ b/src/test/java/de/ozgcloud/admin/ApiRootITCase.java @@ -40,7 +40,7 @@ import lombok.SneakyThrows; @ITCase @AutoConfigureMockMvc -@WithMockUser(roles = UserRole.ADMIN_USER) +@WithMockUser(roles = UserRole.ADMIN_ADMIN) class ApiRootITCase { @Autowired diff --git a/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java b/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java index a08b15d54ddf45532608cb0fa77e7a8bc2227b40..9e797f60d83dadc15a280d94e692dc9d191b92d3 100644 --- a/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java +++ b/src/test/java/de/ozgcloud/admin/RootModelAssemblerTest.java @@ -57,7 +57,7 @@ class RootModelAssemblerTest { class TestEntityModel { @BeforeEach void beforeEach() { - Mockito.when(currentUserService.hasRole(UserRole.ADMIN_USER)).thenReturn(true); + Mockito.when(currentUserService.hasRole(UserRole.ADMIN_ADMIN)).thenReturn(true); Mockito.when(restProperties.getBasePath()).thenReturn(BASE_PATH); } @@ -90,7 +90,7 @@ class RootModelAssemblerTest { @Test void shouldHaveHrefToBasePathIfAuthorized() { Mockito.when(restProperties.getBasePath()).thenReturn(BASE_PATH); - Mockito.when(currentUserService.hasRole(UserRole.ADMIN_USER)).thenReturn(true); + Mockito.when(currentUserService.hasRole(UserRole.ADMIN_ADMIN)).thenReturn(true); List<Link> links = modelAssembler.buildRootModelLinks(); @@ -101,7 +101,7 @@ class RootModelAssemblerTest { @Test void shouldNotHaveHrefToBasePathIfUnauthorized() { - Mockito.when(currentUserService.hasRole(UserRole.ADMIN_USER)).thenReturn(false); + Mockito.when(currentUserService.hasRole(UserRole.ADMIN_ADMIN)).thenReturn(false); List<Link> links = modelAssembler.buildRootModelLinks(); diff --git a/src/test/java/de/ozgcloud/admin/common/user/CurrentUserHelperTest.java b/src/test/java/de/ozgcloud/admin/common/user/CurrentUserHelperTest.java index ceffbadefbf8779eee19f63079566c5ac4f9b7a1..428668577ed0add18a3c5a9fc041e350ea7d97f8 100644 --- a/src/test/java/de/ozgcloud/admin/common/user/CurrentUserHelperTest.java +++ b/src/test/java/de/ozgcloud/admin/common/user/CurrentUserHelperTest.java @@ -59,7 +59,7 @@ class CurrentUserHelperTest { Mockito.CALLS_REAL_METHODS)) { mockUserHelper.when(CurrentUserHelper::getAuthentication).thenReturn(null); - boolean hasRole = CurrentUserHelper.hasRole(UserRole.ADMIN_USER); + boolean hasRole = CurrentUserHelper.hasRole(UserRole.ADMIN_ADMIN); assertThat(hasRole).isFalse(); } @@ -73,7 +73,7 @@ class CurrentUserHelperTest { Mockito.CALLS_REAL_METHODS)) { mockUserHelper.when(CurrentUserHelper::getAuthentication).thenReturn(mockAuthentication); - boolean hasRole = CurrentUserHelper.hasRole(UserRole.ADMIN_USER); + boolean hasRole = CurrentUserHelper.hasRole(UserRole.ADMIN_ADMIN); assertThat(hasRole).isFalse(); } @@ -93,9 +93,9 @@ class CurrentUserHelperTest { mockUserHelper.when(() -> CurrentUserHelper.containsRole(Mockito.anyList(), Mockito.anyString())) .thenReturn(containsRoleValue); - boolean hasRole = CurrentUserHelper.hasRole(UserRole.ADMIN_USER); + boolean hasRole = CurrentUserHelper.hasRole(UserRole.ADMIN_ADMIN); - mockUserHelper.verify(() -> CurrentUserHelper.containsRole(mockAuthentication.getAuthorities(), UserRole.ADMIN_USER)); + mockUserHelper.verify(() -> CurrentUserHelper.containsRole(mockAuthentication.getAuthorities(), UserRole.ADMIN_ADMIN)); assertThat(hasRole).isEqualTo(containsRoleValue); } } @@ -106,7 +106,7 @@ class CurrentUserHelperTest { class TestContainsRole { @Test void shouldNotContainRoleIfAuthoritiesIsNull() { - boolean containsRole = CurrentUserHelper.containsRole(null, UserRole.ADMIN_USER); + boolean containsRole = CurrentUserHelper.containsRole(null, UserRole.ADMIN_ADMIN); assertThat(containsRole).isFalse(); } @@ -116,7 +116,7 @@ class CurrentUserHelperTest { List<GrantedAuthority> authorities = List.of( new SimpleGrantedAuthority(CurrentUserHelper.ROLE_PREFIX + "OTHER")); - boolean containsRole = CurrentUserHelper.containsRole(authorities, UserRole.ADMIN_USER); + boolean containsRole = CurrentUserHelper.containsRole(authorities, UserRole.ADMIN_ADMIN); assertThat(containsRole).isFalse(); } @@ -124,9 +124,9 @@ class CurrentUserHelperTest { @Test void shouldContainRole() { Collection<? extends GrantedAuthority> authorities = List.of( - new SimpleGrantedAuthority(CurrentUserHelper.ROLE_PREFIX + UserRole.ADMIN_USER)); + new SimpleGrantedAuthority(CurrentUserHelper.ROLE_PREFIX + UserRole.ADMIN_ADMIN)); - boolean containsRole = CurrentUserHelper.containsRole(authorities, UserRole.ADMIN_USER); + boolean containsRole = CurrentUserHelper.containsRole(authorities, UserRole.ADMIN_ADMIN); assertThat(containsRole).isTrue(); } @@ -138,16 +138,16 @@ class CurrentUserHelperTest { @Test void shouldAddPrefixIfMissing() { - var roleWithoutPrefix = UserRole.ADMIN_USER; + var roleWithoutPrefix = UserRole.ADMIN_ADMIN; var role = CurrentUserHelper.addRolePrefixIfMissing(roleWithoutPrefix); - assertThat(role).isEqualTo(CurrentUserHelper.ROLE_PREFIX + UserRole.ADMIN_USER); + assertThat(role).isEqualTo(CurrentUserHelper.ROLE_PREFIX + UserRole.ADMIN_ADMIN); } @Test void shouldReturnRoleIfPrefixAlreadyExists() { - var roleWithPrefix = CurrentUserHelper.ROLE_PREFIX + UserRole.ADMIN_USER; + var roleWithPrefix = CurrentUserHelper.ROLE_PREFIX + UserRole.ADMIN_ADMIN; var role = CurrentUserHelper.addRolePrefixIfMissing(roleWithPrefix); diff --git a/src/test/java/de/ozgcloud/admin/common/user/CurrentUserServiceTest.java b/src/test/java/de/ozgcloud/admin/common/user/CurrentUserServiceTest.java index 20e75bfc94b321b65e0884ecad643ed28192af33..878292bc14ffc812739213d84ce34b0fd97a3b4a 100644 --- a/src/test/java/de/ozgcloud/admin/common/user/CurrentUserServiceTest.java +++ b/src/test/java/de/ozgcloud/admin/common/user/CurrentUserServiceTest.java @@ -47,9 +47,9 @@ class CurrentUserServiceTest { mockUserHelper.when(() -> CurrentUserHelper.hasRole(Mockito.anyString())) .thenReturn(hasRoleValue); - boolean hasRole = currentUserService.hasRole(UserRole.ADMIN_USER); + boolean hasRole = currentUserService.hasRole(UserRole.ADMIN_ADMIN); - mockUserHelper.verify(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_USER)); + mockUserHelper.verify(() -> CurrentUserHelper.hasRole(UserRole.ADMIN_ADMIN)); assertThat(hasRole).isEqualTo(hasRoleValue); } } diff --git a/src/test/java/de/ozgcloud/admin/security/JwtTestFactory.java b/src/test/java/de/ozgcloud/admin/security/JwtTestFactory.java index 1638bd85506a31ede6d03292213d4fb6b031ee11..719c94afe86b01a9f87d4b0bbf1f51a40fcdaa75 100644 --- a/src/test/java/de/ozgcloud/admin/security/JwtTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/security/JwtTestFactory.java @@ -44,17 +44,6 @@ public class JwtTestFactory { return createBuilder().claim(RESOURCE_ACCESS_KEY, Map.of(AUTH_RESOURCE, Map.of(ROLES_KEY, roles))); } - // private static Map<String, Object> readResourceAccessClaim() { - // var claimsJson = TestUtils.loadTextFile("jsonTemplates/security/resource_access.template.json"); - // var mapper = new ObjectMapper(); - // try { - // return mapper.readValue(claimsJson, new TypeReference<Map<String, Object>>() { - // }); - // } catch (IOException e) { - // throw new RuntimeException(e); - // } - // } - public static Jwt.Builder createBuilder() { return Jwt.withTokenValue("token-value").header("header-key", "header-value").claim("claim-key", "claim-value"); } diff --git a/src/test/java/de/ozgcloud/admin/security/SecurityConfigurationTest.java b/src/test/java/de/ozgcloud/admin/security/SecurityConfigurationTest.java index 5fa89431acaa6676227f61a25c6e6840bc713952..9acdae93189e5d6e25d65361c78929584da935f7 100644 --- a/src/test/java/de/ozgcloud/admin/security/SecurityConfigurationTest.java +++ b/src/test/java/de/ozgcloud/admin/security/SecurityConfigurationTest.java @@ -109,7 +109,7 @@ class SecurityConfigurationTest { void mock() { var keycloakRoles = List.of(ROLE_1, JwtTestFactory.ROLE_2, JwtTestFactory.ROLE_3); expectedSecurityRoleStrings = keycloakRoles.stream().map(role -> SIMPLE_GRANT_AUTHORITY_PREFIX + role).toList(); - doReturn(keycloakRoles).when(securityConfiguration).getKeycloakRolesFromJwt(any()); + doReturn(keycloakRoles).when(securityConfiguration).getRolesFromJwt(any()); } @DisplayName("should call get keycloak roles from jwt") @@ -119,7 +119,7 @@ class SecurityConfigurationTest { securityConfiguration.convertJwtToGrantedAuthorities(jwt); - verify(securityConfiguration).getKeycloakRolesFromJwt(jwt); + verify(securityConfiguration).getRolesFromJwt(jwt); } @DisplayName("should return granted authorities with ROLE_ prefix") @@ -136,9 +136,9 @@ class SecurityConfigurationTest { } } - @DisplayName("get keycloak roles from jwt") + @DisplayName("get roles from jwt") @Nested - class TestGetKeycloakRolesFromJwt { + class TestGetRolesFromJwt { @BeforeEach void mock() { @@ -149,7 +149,7 @@ class SecurityConfigurationTest { @ParameterizedTest @MethodSource("getIncompleteJwt") void shouldReturnEmptyListIfResourceAccessAdminRolesPathIsMissing(Jwt incompleteJwt) { - var roleStrings = securityConfiguration.getKeycloakRolesFromJwt(incompleteJwt); + var roleStrings = securityConfiguration.getRolesFromJwt(incompleteJwt); assertThat(roleStrings).isEmpty(); } @@ -168,7 +168,7 @@ class SecurityConfigurationTest { var expectedRoles = List.of(ROLE_1, JwtTestFactory.ROLE_2, JwtTestFactory.ROLE_3); var jwtWithRoles = JwtTestFactory.createWithRoles(expectedRoles).build(); - var roleStrings = securityConfiguration.getKeycloakRolesFromJwt(jwtWithRoles); + var roleStrings = securityConfiguration.getRolesFromJwt(jwtWithRoles); assertThat(roleStrings).isEqualTo(expectedRoles); } diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingITCase.java b/src/test/java/de/ozgcloud/admin/setting/SettingITCase.java index d4a72b63f622a46a4f3fc15acb29a3b0b59eb39f..04aaf44fb4105118d90343fc2271e58479959173 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingITCase.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingITCase.java @@ -56,7 +56,7 @@ import lombok.SneakyThrows; @DataITCase @AutoConfigureMockMvc -@WithMockUser(roles = UserRole.ADMIN_USER) +@WithMockUser(roles = UserRole.ADMIN_ADMIN) class SettingITCase { @Autowired