From 5f4e876cda4a92f33d6e286975b8604b5a9fc268 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 5 Jul 2023 22:44:08 +0200
Subject: [PATCH] OZG-3961 - add realm settings

---
 .../keycloak/realm/KeycloakRealmMapper.java   | 14 +++++++
 .../user/KeycloakUserPreconditionService.java |  2 +-
 .../realm/KeycloakRealmMapperTest.java        | 42 +++++++++++++++++++
 3 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
index 0825f21a..a8828cf0 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
@@ -1,13 +1,27 @@
 package de.ozgcloud.operator.keycloak.realm;
 
+import java.util.Set;
+
 import org.keycloak.representations.idm.RealmRepresentation;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
+import org.mapstruct.Named;
 import org.mapstruct.ReportingPolicy;
 
 @Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE, unmappedSourcePolicy = ReportingPolicy.IGNORE)
 interface KeycloakRealmMapper {
 
 	@Mapping(target = "displayName", source = "displayName")
+	@Mapping(target = "enabled", constant = "true")
+	@Mapping(target = "resetPasswordAllowed", constant = "true")
+	@Mapping(target = "supportedLocales", source = ".", qualifiedByName = "supportedLocales")
+	@Mapping(target = "defaultLocale", constant = "de")
+	@Mapping(target = "internationalizationEnabled", constant = "true")
+	@Mapping(target = "passwordPolicy", constant = "upperCase(1) and lowerCase(1) and length(8) and notUsername")
 	RealmRepresentation map(OzgKeycloakRealmSpec realm);
+
+	@Named("supportedLocales")
+	default Set<String> mapPassword(OzgKeycloakRealmSpec spec) {
+		return Set.of("de");
+	}
 }
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java
index 13272c24..dc2b4a65 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java
@@ -41,7 +41,7 @@ class KeycloakUserPreconditionService {
 				.map(KeycloakUserSpecClientRole::getClientId)
 				.map(clientId -> keycloakGenericRemoteService.getByClientId(clientId, realm))
 				.filter(Optional::isEmpty)
-				.map(clientId -> "Cient " + clientId + " does not yet exist")
+				.map(clientId -> "Client " + clientId + " does not yet exist")
 				.findAny();
 	}
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java b/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
index d750842e..42e37add 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
@@ -17,4 +17,46 @@ class KeycloakRealmMapperTest {
 
 		assertThat(mapped.getDisplayName()).isEqualTo(OzgKeycloakRealmSpecTestFactory.DISPLAY_NAME);
 	}
+
+	@Test
+	void shouldBeEnabled() {
+		var mapped = mapper.map(OzgKeycloakRealmSpecTestFactory.create());
+
+		assertThat(mapped.isEnabled()).isTrue();
+	}
+
+	@Test
+	void shouldBeResetPasswordAllowed() {
+		var mapped = mapper.map(OzgKeycloakRealmSpecTestFactory.create());
+
+		assertThat(mapped.isResetPasswordAllowed()).isTrue();
+	}
+
+	@Test
+	void shouldBeSupportedLocaleDe() {
+		var mapped = mapper.map(OzgKeycloakRealmSpecTestFactory.create());
+
+		assertThat(mapped.getSupportedLocales()).containsExactly("de");
+	}
+
+	@Test
+	void shouldBeDefaultLocaleDe() {
+		var mapped = mapper.map(OzgKeycloakRealmSpecTestFactory.create());
+
+		assertThat(mapped.getDefaultLocale()).isEqualTo("de");
+	}
+
+	@Test
+	void shouldBeInternationalizationEnabled() {
+		var mapped = mapper.map(OzgKeycloakRealmSpecTestFactory.create());
+
+		assertThat(mapped.isInternationalizationEnabled()).isTrue();
+	}
+
+	@Test
+	void checkPasswordPolicy() {
+		var mapped = mapper.map(OzgKeycloakRealmSpecTestFactory.create());
+
+		assertThat(mapped.getPasswordPolicy()).isEqualTo("upperCase(1) and lowerCase(1) and length(8) and notUsername");
+	}
 }
-- 
GitLab