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

OZG-3961 consider keepAfterDelete on realm resource

parent 1c2ba1d7
No related branches found
No related tags found
No related merge requests found
......@@ -70,16 +70,19 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl
}
@Override
public DeleteControl cleanup(OzgKeycloakRealm resource, Context<OzgKeycloakRealm> context) {
String realmName = resource.getMetadata().getNamespace();
public DeleteControl cleanup(OzgKeycloakRealm realm, Context<OzgKeycloakRealm> context) {
log.info("Realm reconciler, keep after delete is set to: " + realm.getSpec().isKeepAfterDelete());
if (realm.getSpec().isKeepAfterDelete()) {
return DeleteControl.defaultDelete();
}
return cleanup(realm);
}
DeleteControl cleanup(OzgKeycloakRealm realm) {
var realmName = realm.getMetadata().getNamespace();
try {
log.info("Deleting KeycloakRealm " + realmName);
service.deleteRealm(realmName);
return DeleteControl.defaultDelete();
} catch (Exception e) {
log.log(Level.SEVERE, "Could not delete KeycloakRealm " + realmName, e);
......
......@@ -24,6 +24,7 @@
package de.ozgcloud.operator.keycloak.realm;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
......@@ -39,5 +40,8 @@ import lombok.Setter;
@JsonIgnoreProperties(ignoreUnknown = true)
class OzgKeycloakRealmSpec {
@JsonProperty("keep_after_delete")
private boolean keepAfterDelete;
private String displayName;
}
......@@ -26,6 +26,7 @@ package de.ozgcloud.operator.keycloak.realm;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
......@@ -33,6 +34,7 @@ import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.operator.keycloak.OzgCustomResourceStatus;
import io.javaoperatorsdk.operator.api.reconciler.DeleteControl;
class KeycloakRealmReconcilerTest {
......@@ -43,6 +45,7 @@ class KeycloakRealmReconcilerTest {
@Mock
private KeycloakRealmService service;
@DisplayName("Reconcile")
@Nested
class TestReconcile {
......@@ -70,14 +73,37 @@ class KeycloakRealmReconcilerTest {
}
}
@DisplayName("Cleanup")
@Nested
class TestDelete {
class TestCleanup {
@DisplayName("with keep_after_delete")
@Nested
class TestWithKeepAfterDelete {
private final OzgKeycloakRealmSpec realmSpec = OzgKeycloakRealmSpecTestFactory.createBuilder().keepAfterDelete(true).build();
private final OzgKeycloakRealm realm = OzgKeycloakRealmTestFactory.create(realmSpec);
@Test
void shouldNotCallService() {
reconciler.cleanup(realm, null);
verify(service, never()).deleteRealm(OzgKeycloakRealmTestFactory.METADATA_NAMESPACE);
}
@Test
void shouldReturnDeleteControl() {
var control = reconciler.cleanup(realm, null);
assertThat(control).usingRecursiveComparison().isEqualTo(DeleteControl.defaultDelete());
}
}
@Test
void shouldCallServiceDelete() {
OzgKeycloakRealm realm = OzgKeycloakRealmTestFactory.create();
var realm = OzgKeycloakRealmTestFactory.create();
reconciler.cleanup(realm, null);
reconciler.cleanup(realm);
verify(service).deleteRealm(OzgKeycloakRealmTestFactory.METADATA_NAMESPACE);
}
......
......@@ -26,6 +26,7 @@ package de.ozgcloud.operator.keycloak.realm;
public class OzgKeycloakRealmSpecTestFactory {
public final static String DISPLAY_NAME = "TestDisplayName";
public final static boolean KEEP_AFTER_DELETE = false;
public static OzgKeycloakRealmSpec create() {
return createBuilder().build();
......@@ -33,6 +34,7 @@ public class OzgKeycloakRealmSpecTestFactory {
public static OzgKeycloakRealmSpec.OzgKeycloakRealmSpecBuilder createBuilder() {
return OzgKeycloakRealmSpec.builder()
.keepAfterDelete(KEEP_AFTER_DELETE)
.displayName(DISPLAY_NAME);
}
}
......@@ -28,8 +28,16 @@ public class OzgKeycloakRealmTestFactory {
public static final String METADATA_NAMESPACE = "TestNamespace";
public static OzgKeycloakRealm create() {
return createWithSpec(OzgKeycloakRealmSpecTestFactory.create());
}
public static OzgKeycloakRealm create(OzgKeycloakRealmSpec spec) {
return createWithSpec(spec);
}
private static OzgKeycloakRealm createWithSpec(OzgKeycloakRealmSpec spec) {
var realm = new OzgKeycloakRealm();
realm.setSpec(OzgKeycloakRealmSpecTestFactory.create());
realm.setSpec(spec);
realm.setStatus(OzgKeycloakRealmStatusTestFactory.create());
realm.getMetadata().setNamespace(METADATA_NAMESPACE);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment