From fc5ac56df7910efe0a33c3c7f0e1e48aa96d4a76 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Sun, 14 Apr 2024 11:22:57 +0200 Subject: [PATCH] OZG-5422 add java unittest fpr realm roles --- .../keycloak/realm/KeycloakRealmMapper.java | 43 +++++++++---------- .../realm/OzgCloudKeycloakRealmSpec.java | 11 ++--- .../realm/KeycloakRealmMapperTest.java | 11 ++--- .../realm/KeycloakRealmReconcilerTest.java | 9 ++++ .../OzgCloudKeycloakRealmSpecTestFactory.java | 2 +- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java index 06ceef8..41a94de 100644 --- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java +++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java @@ -24,8 +24,6 @@ package de.ozgcloud.operator.keycloak.realm; import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -33,17 +31,15 @@ import java.util.Set; import java.util.stream.Collectors; import org.keycloak.representations.idm.RealmRepresentation; +import org.keycloak.representations.idm.RoleRepresentation; +import org.keycloak.representations.idm.RolesRepresentation; import org.mapstruct.Mapper; import org.mapstruct.Mapping; - import org.mapstruct.Named; import org.mapstruct.ReportingPolicy; import de.ozgcloud.operator.keycloak.realm.OzgCloudKeycloakRealmSpec.RealmRole; -import org.keycloak.representations.idm.RoleRepresentation; -import org.keycloak.representations.idm.RolesRepresentation; - @Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE, unmappedSourcePolicy = ReportingPolicy.IGNORE) interface KeycloakRealmMapper { @@ -55,7 +51,7 @@ interface KeycloakRealmMapper { @Mapping(target = "internationalizationEnabled", constant = "true") @Mapping(target = "passwordPolicy", constant = "upperCase(1) and lowerCase(1) and length(8) and notUsername") @Mapping(target = "actionTokenGeneratedByUserLifespan", constant = "900") - @Mapping(target = "roles", source = "realmRoles",qualifiedByName ="roles") + @Mapping(target = "roles", source = "realmRoles", qualifiedByName = "roles") public RealmRepresentation map(OzgCloudKeycloakRealmSpec realm); @Named("supportedLocales") @@ -64,26 +60,29 @@ interface KeycloakRealmMapper { } @Named("roles") - default RolesRepresentation maprealmRoles(List<OzgCloudKeycloakRealmSpec.RealmRole> realRoles) { + default RolesRepresentation maprealmRoles(List<OzgCloudKeycloakRealmSpec.RealmRole> realmRoles) { RolesRepresentation roles = new RolesRepresentation(); - - List<String> roleNames = realRoles.stream() - .map(RealmRole::getName) - .collect(Collectors.toList()); - List<RoleRepresentation> rolerepresentationList = new ArrayList<>(roleNames.size()); - Map<String, List<RoleRepresentation>> client = new HashMap<String, List<RoleRepresentation>>(); + if (realmRoles != null) { + List<String> roleNames = realmRoles.stream() + .map(RealmRole::getName) + .collect(Collectors.toList()); + List<RoleRepresentation> rolerepresentationList = new ArrayList<>(roleNames.size()); + + roleNames.forEach(roleName -> { + RoleRepresentation newRepresentation = new RoleRepresentation(); + newRepresentation.setName(roleName); + rolerepresentationList.add(newRepresentation); + }); - - roleNames.forEach(roleName -> { - RoleRepresentation newRepresentation = new RoleRepresentation(); - newRepresentation.setName(roleName); - rolerepresentationList.add(newRepresentation); } ); + roles.setRealm(rolerepresentationList); - roles.setRealm(rolerepresentationList); - roles.setClient(client); + Map<String, List<RoleRepresentation>> client = new HashMap<>(); + roles.setClient(client); + + } return roles; - + } } diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java index 4d18e8e..c6b4130 100644 --- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java +++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java @@ -23,10 +23,8 @@ */ package de.ozgcloud.operator.keycloak.realm; -import java.util.List; import java.util.ArrayList; -import org.keycloak.representations.idm.RoleRepresentation; -import org.keycloak.representations.idm.RolesRepresentation; +import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @@ -50,10 +48,9 @@ class OzgCloudKeycloakRealmSpec { private String displayName; + @Builder.Default + private List<RealmRole> realmRoles = new ArrayList<>(); - @Builder.Default - private List<RealmRole> realmRoles= new ArrayList<>(); - @Getter @Setter @Builder @@ -65,5 +62,3 @@ class OzgCloudKeycloakRealmSpec { private String name; } } - - diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java index f341f6a..beb114c 100644 --- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java +++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java @@ -97,14 +97,11 @@ class KeycloakRealmMapperTest { assertThat(mapped.getRoles().getRealm().size()).isEqualTo(2); } -/* @Test + @Test void shouldContainRealmRolesValues() { var mapped = mapper.map(OzgCloudKeycloakRealmSpecTestFactory.create()); var mappedRealmRoles = mapped.getRoles(); - assertThat(mappedRealmRoles.getRealm().getName()).isEqualTo("host"); - - var role = mapper.mapRole(OzgCloudKeycloakClientSpecTestFactory.ROLE1); - - assertThat(role.getName()).isEqualTo(OzgCloudKeycloakClientSpecTestFactory.ROLE_NAME_1); - }*/ + assertThat(mappedRealmRoles.getRealm().get(0).getName()).isEqualTo(OzgCloudKeycloakRealmSpecTestFactory.ROLE_NAME_1); + assertThat(mappedRealmRoles.getRealm().get(1).getName()).isEqualTo(OzgCloudKeycloakRealmSpecTestFactory.ROLE_NAME_2); + } } diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java index 510b314..c7344c9 100644 --- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java +++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java @@ -154,6 +154,15 @@ class KeycloakRealmReconcilerTest { assertThat(control).usingRecursiveComparison() .isEqualTo(DeleteControl.noFinalizerRemoval().rescheduleAfter(Config.RECONCILER_RETRY_SECONDS_ON_ERROR)); } + + @Test + void shouldCreateRealmWithSpecWithoutRoles() { + OzgCloudKeycloakRealm realm = OzgCloudKeycloakRealmTestFactory.create(); + reconciler.reconcile(realm, null); + var spec = realm.getSpec(); + spec.setRealmRoles(null); + verify(service).createRealm(spec, OzgCloudKeycloakRealmTestFactory.METADATA_NAMESPACE); + } } } } diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java index 115b7b2..d6e1866 100644 --- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java +++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java @@ -36,7 +36,7 @@ public class OzgCloudKeycloakRealmSpecTestFactory { public static final RealmRole ROLE1 = RealmRole.builder().name(ROLE_NAME_1).build(); public static final String ROLE_NAME_2 = "RoleName2"; public static final RealmRole ROLE2 = RealmRole.builder().name(ROLE_NAME_2).build(); - public static final List<RealmRole> ROLES = List.of(ROLE1,ROLE2); + public static final List<RealmRole> ROLES = List.of(ROLE1, ROLE2); public static OzgCloudKeycloakRealmSpec create() { return createBuilder().build(); -- GitLab