Skip to content
Snippets Groups Projects
Commit a113c50e authored by OZGCloud's avatar OZGCloud
Browse files

OZG-3961 - fix realm exists

parent fac2b5b9
No related branches found
No related tags found
No related merge requests found
......@@ -6,8 +6,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import de.ozgcloud.operator.keycloak.OzgCustomResourceStatus;
import io.javaoperatorsdk.operator.api.reconciler.Cleaner;
import io.javaoperatorsdk.operator.api.reconciler.Context;
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.DeleteControl;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import lombok.extern.java.Log;
......@@ -15,7 +17,7 @@ import lombok.extern.java.Log;
@ControllerConfiguration
@Component
@Log
public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm> {
public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cleaner<OzgKeycloakRealm> {
@Autowired
private KeycloakRealmService service;
......@@ -38,4 +40,10 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm> {
return UpdateControl.updateStatus(resource);
}
}
@Override
public DeleteControl cleanup(OzgKeycloakRealm resource, Context<OzgKeycloakRealm> context) {
// TODO Auto-generated method stub
return null;
}
}
package de.ozgcloud.operator.keycloak.realm;
import java.util.Optional;
import org.keycloak.representations.idm.RealmRepresentation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -19,7 +17,8 @@ class KeycloakRealmRemoteService {
keycloakClient.getKeycloak().realms().create(realm);
}
boolean realmExists(RealmRepresentation realm) {
return Optional.ofNullable(keycloakClient.getKeycloak().realm(realm.getRealm())).isPresent();
boolean realmExists(RealmRepresentation newRealm) {
return keycloakClient.getKeycloak().realms().findAll().stream()
.anyMatch(realmExisting -> realmExisting.getRealm().equals(newRealm.getRealm()));
}
}
package de.ozgcloud.operator.keycloak.realm;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.keycloak.admin.client.Keycloak;
import org.keycloak.admin.client.KeycloakBuilder;
import org.keycloak.representations.idm.RealmRepresentation;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.operator.keycloak.KeycloakClient;
import lombok.extern.java.Log;
@Disabled("Should only be used manually")
@Log
class KeycloakLivelTest {
@Spy
@InjectMocks
private KeycloakRealmRemoteService remoteService;
@Mock
private KeycloakClient keycloakClient;
@Test
void testReal() {
Keycloak kc = KeycloakBuilder.builder()
.serverUrl("https://sso.dev.by.ozg-cloud.de")
.realm("master")
.username("admin")
.password("hase")
.clientId("admin-cli")
.build();
when(keycloakClient.getKeycloak()).thenReturn(kc);
log.warning(remoteService.realmExists(createRealm()) + "");
}
private RealmRepresentation createRealm() {
RealmRepresentation realm = new RealmRepresentation();
realm.setRealm("sa-berlin-dev");
return realm;
}
}
......@@ -3,6 +3,8 @@ package de.ozgcloud.operator.keycloak.realm;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
......@@ -62,7 +64,8 @@ class KeycloakRealmRemoteServiceTest {
@Test
void shouldTestRealmExists() {
var realm = RealmRepresentationTestFactory.create();
when(keycloak.realm(RealmRepresentationTestFactory.NAME)).thenReturn(realmResource);
when(keycloak.realms()).thenReturn(realmsResource);
when(realmsResource.findAll()).thenReturn(List.of(realm));
var response = remoteService.realmExists(realm);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment