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 2c3da928213a93fe77b9d5ea8e8bfb204b255cc2..ca2988c4229c0565acaaa6024e0ccde4100863b3 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 @@ -23,6 +23,8 @@ */ package de.ozgcloud.operator.keycloak.realm; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import org.keycloak.representations.idm.RealmRepresentation; @@ -42,10 +44,30 @@ 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 = "smtpServer", source = "smtpServer", qualifiedByName = "smtpServer") public RealmRepresentation map(OzgCloudKeycloakRealmSpec realm); @Named("supportedLocales") default Set<String> mapPassword(OzgCloudKeycloakRealmSpec spec) { return Set.of("de"); } + + @Named("smtpServer") + default Map<String, String> mapSmtpServer(OzgCloudKeycloakRealmSpec.KeycloakRealmSMTPServer server) { + + Map<String, String> smtpServer = new HashMap<>(); + if (server != null) { + smtpServer.put("host", server.getHost()); + smtpServer.put("port", server.getPort()); + smtpServer.put("user", server.getUser()); + smtpServer.put("password", server.getPassword()); + smtpServer.put("starttls", server.getStarttls()); + smtpServer.put("auth", server.getAuth()); + smtpServer.put("from", server.getFrom()); + smtpServer.put("fromDisplayName", server.getFromDisplayName()); + } + return smtpServer; + + } + } 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 0a23abfd2ed15f8744855b5e8d0bc406913b2fd5..4703f154ee68169988fceac1324a9374bfc5c539 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 @@ -44,4 +44,29 @@ class OzgCloudKeycloakRealmSpec { private boolean keepAfterDelete; private String displayName; + + private KeycloakRealmSMTPServer smtpServer; + + @Getter + @Setter + @Builder + @NoArgsConstructor + @AllArgsConstructor + static class KeycloakRealmSMTPServer { + + private String user; + private String password; + + private String host; + private String port; + + private String starttls; + + private String auth; + + private String from; + + private String fromDisplayName; + } + } 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 ddb2e9ab9fb47e512906eb0d9ffd96ae5e9cde75..074f65dbb685587821e7363a11bcb752e9a4a00b 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 @@ -89,4 +89,33 @@ class KeycloakRealmMapperTest { assertThat(mapped.getActionTokenGeneratedByUserLifespan()).isEqualTo(900); } + + @Test + void shouldMapSmtpServer() { + var mapped = mapper.map(OzgCloudKeycloakRealmSpecTestFactory.create()); + + assertThat(mapped.getSmtpServer().size()).isEqualTo(8); + } + + @Test + void shouldContainSmtpServerKeysValues() { + var mapped = mapper.map(OzgCloudKeycloakRealmSpecTestFactory.create()); + + assertThat(mapped.getSmtpServer()) + .containsEntry("user", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_USER) + .containsEntry("password", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_PASSWORD) + .containsEntry("host", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_HOST) + .containsEntry("port", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_PORT) + .containsEntry("starttls", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_STARTTLS) + .containsEntry("auth", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_AUTH) + .containsEntry("from", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_FROM) + .containsEntry("fromDisplayName", KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_FROM_DISPLAY_NAME); + } + + @Test + void shouldMapWhenSmtpServerIsNull() { + var mapped = mapper.map(OzgCloudKeycloakRealmSpecTestFactory.createBuilder().smtpServer(null).build()); + + assertThat(mapped.getSmtpServer()).isEmpty(); + } } diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmSmtpServerTestFactory.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmSmtpServerTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..66c03cbb20964ae3053b2745d36ac370fcdfc235 --- /dev/null +++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmSmtpServerTestFactory.java @@ -0,0 +1,31 @@ +package de.ozgcloud.operator.keycloak.realm; + +import de.ozgcloud.operator.keycloak.realm.OzgCloudKeycloakRealmSpec.KeycloakRealmSMTPServer; + +public class KeycloakRealmSmtpServerTestFactory { + + public final static String SMTP_SERVER_PORT = "432"; + public final static String SMTP_SERVER_HOST = "host"; + public final static String SMTP_SERVER_FROM = "test@test.de"; + public final static String SMTP_SERVER_FROM_DISPLAY_NAME = "displayed name"; + public final static String SMTP_SERVER_USER = "user"; + public final static String SMTP_SERVER_PASSWORD = "psw"; + public final static String SMTP_SERVER_AUTH = "true"; + public final static String SMTP_SERVER_STARTTLS = "true"; + + public static OzgCloudKeycloakRealmSpec.KeycloakRealmSMTPServer create() { + return createBuilder().build(); + } + + public static OzgCloudKeycloakRealmSpec.KeycloakRealmSMTPServer.KeycloakRealmSMTPServerBuilder createBuilder() { + return KeycloakRealmSMTPServer.builder() + .host(SMTP_SERVER_HOST) + .user(SMTP_SERVER_USER) + .password(SMTP_SERVER_PASSWORD) + .port(SMTP_SERVER_PORT) + .starttls(SMTP_SERVER_STARTTLS) + .auth(SMTP_SERVER_AUTH) + .from(SMTP_SERVER_FROM) + .fromDisplayName(SMTP_SERVER_FROM_DISPLAY_NAME); + } +} 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 fe23573b6987541b5246e82bf9a6c8ceb9267fe4..2b03fdab23db589c84807b0a07cd2c971b5cd369 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 @@ -35,6 +35,7 @@ public class OzgCloudKeycloakRealmSpecTestFactory { public static OzgCloudKeycloakRealmSpec.OzgCloudKeycloakRealmSpecBuilder createBuilder() { return OzgCloudKeycloakRealmSpec.builder() .keepAfterDelete(KEEP_AFTER_DELETE) - .displayName(DISPLAY_NAME); + .displayName(DISPLAY_NAME) + .smtpServer(KeycloakRealmSmtpServerTestFactory.create()); } }