diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java index 22724865d3005f82db9b25b597c689a9f88b7ad5..155d807796803bb6a1f58c929c85db1306366168 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconciler.java @@ -53,14 +53,12 @@ public class OzgCloudElsterTransferUserReconciler implements Reconciler<OzgCloud LOG.info("{} cleanup...", user.getMetadata().getName()); String namespace = user.getMetadata().getNamespace(); try { - elsterTransferUserService.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); + elsterTransferUserService.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); return DeleteControl.defaultDelete(); - } - catch (Exception e) { + } catch (Exception e) { LOG.warn(namespace + " could not delete.", e); return DeleteControl.noFinalizerRemoval().rescheduleAfter(Config.RECONCILER_RETRY_SECONDS_ON_ERROR); - } + } } - } diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java index c3bfdc88f5e0417dd61687bde441d531edc68e07..dd723a48878220b489e3cd026b7c9fe54104b5d7 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java @@ -19,14 +19,11 @@ import lombok.RequiredArgsConstructor; public class OzgCloudElsterTransferUserRemoteService { private final KubernetesClient client; - public ConfigMap getConfigMap(String configmapNamespace, String configMapName) { return client.configMaps().inNamespace(configmapNamespace).withName(configMapName).get(); } - - public ConfigMap createConfigMap(String configmapNamespace, String configMapName) { ConfigMap configMap = new ConfigMapBuilder() .withNewMetadata() @@ -55,12 +52,11 @@ public class OzgCloudElsterTransferUserRemoteService { } } - void setRestartFlag(Deployment deployment){ + void setRestartFlag(Deployment deployment) { deployment.getSpec().getTemplate().getMetadata().getAnnotations() .put("kubectl.kubernetes.io/restartedAt", String.valueOf(System.currentTimeMillis())); } - public void createOrUpdateSecret(String namespace, String userPassword, String secretName) { Secret secret = new SecretBuilder() .withNewMetadata() diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconcilerTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconcilerTest.java index ebcaf0b9bf7233ded0b81e36887173b2e1993293..cbe37abda501b73a9c133127bc9b0f4087c74add 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconcilerTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconcilerTest.java @@ -14,10 +14,7 @@ import org.mockito.Spy; import de.ozgcloud.operator.Config; import de.ozgcloud.operator.elstertransfer.OzgCloudCustomResourceStatus; -import io.fabric8.kubernetes.api.model.KubernetesResourceList; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.dsl.MixedOperation; -import io.fabric8.kubernetes.client.dsl.Resource; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; class OzgCloudElsterTransferUserReconcilerTest { @@ -29,9 +26,6 @@ class OzgCloudElsterTransferUserReconcilerTest { @Mock private OzgCloudElsterTransferUserService service; - //@Mock - //private MixedOperation<OzgCloudElsterTransferUser, KubernetesResourceList<OzgCloudElsterTransferUser>, Resource<OzgCloudElsterTransferUser>> mixedOperation; - @Mock private KubernetesClient client; @@ -47,48 +41,50 @@ class OzgCloudElsterTransferUserReconcilerTest { verify(service).updateConfigMapAndRestartDeploymentAndCreateSecret(OzgCloudElsterTransferUserTestFactory.METADATA_NAMESPACE); } + @Test - void shouldReturnUpdateStatus() { - var response = reconciler.reconcile(OzgCloudElsterTransferUserTestFactory.create(), null); - - assertThat(response.getResource()).isNotNull(); - } + void shouldReturnUpdateStatus() { + var response = reconciler.reconcile(OzgCloudElsterTransferUserTestFactory.create(), null); - @Test - void shouldCallGetElsterTransferUserStatus() { - - reconciler.reconcile(user, null); - - verify(reconciler).getElsterTransferUserStatus(any(), any()); - } - - @Test - void shouldSetStatusOk() { + assertThat(response.getResource()).isNotNull(); + } + + @Test + void shouldCallGetElsterTransferUserStatus() { + + reconciler.reconcile(user, null); + + verify(reconciler).getElsterTransferUserStatus(any(), any()); + } + + @Test + void shouldSetStatusOk() { var response = reconciler.reconcile(OzgCloudElsterTransferUserTestFactory.create(), null); assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK); } + @DisplayName("test getElsterTransferUserStatus") @Nested class TestGetElsterTransferUserStatus { - void shouldRetrunOzgCloudElsterTransferUserStatus(){ + void shouldRetrunOzgCloudElsterTransferUserStatus() { OzgCloudElsterTransferUserStatus result = reconciler.getElsterTransferUserStatus(OzgCloudCustomResourceStatus.OK, "Status: OK"); assertEquals(OzgCloudCustomResourceStatus.OK, result.getStatus()); - assertEquals("Status: OK", result.getMessage()); + assertEquals("Status: OK", result.getMessage()); } } @Test - void shouldReturnErrorStatus() { - - OzgCloudElsterTransferUserStatus result = reconciler.getElsterTransferUserStatus(OzgCloudCustomResourceStatus.ERROR, "An error occurred"); + void shouldReturnErrorStatus() { - assertEquals(OzgCloudCustomResourceStatus.ERROR, result.getStatus()); - assertEquals("An error occurred", result.getMessage()); - } + OzgCloudElsterTransferUserStatus result = reconciler.getElsterTransferUserStatus(OzgCloudCustomResourceStatus.ERROR, "An error occurred"); + + assertEquals(OzgCloudCustomResourceStatus.ERROR, result.getStatus()); + assertEquals("An error occurred", result.getMessage()); + } } @@ -96,35 +92,34 @@ class OzgCloudElsterTransferUserReconcilerTest { @Nested class TestReconcilerCleanup { - private final OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); + private final OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); - @Test - void shouldCallServiceDelete() { + @Test + void shouldCallServiceDelete() { - reconciler.cleanup(user, null); + reconciler.cleanup(user, null); - verify(service).deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); - } + verify(service).deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); + } - @Test - void shouldReturnDeleteControlIfErrorNotThrow() { - var control = reconciler.cleanup(user, null); + @Test + void shouldReturnDeleteControlIfErrorNotThrow() { + var control = reconciler.cleanup(user, null); - assertThat(control).usingRecursiveComparison().isEqualTo(DeleteControl.defaultDelete()); - } + assertThat(control).usingRecursiveComparison().isEqualTo(DeleteControl.defaultDelete()); + } - @Test - void shouldRescheduleOnError() { - doThrow(RuntimeException.class).when(service) - .deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); + @Test + void shouldRescheduleOnError() { + doThrow(RuntimeException.class).when(service) + .deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); - var control = reconciler.cleanup(user, null); + var control = reconciler.cleanup(user, null); - assertThat(control).usingRecursiveComparison() - .isEqualTo(DeleteControl.noFinalizerRemoval().rescheduleAfter(Config.RECONCILER_RETRY_SECONDS_ON_ERROR)); - } + assertThat(control).usingRecursiveComparison() + .isEqualTo(DeleteControl.noFinalizerRemoval().rescheduleAfter(Config.RECONCILER_RETRY_SECONDS_ON_ERROR)); + } - } } diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java index 4972d124683e352f4618b0ba1edd5eb253c8e113..9688d94036ba21e8a9cc8eedf06d68bb8a5437bc 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java @@ -1,220 +1,269 @@ package de.ozgcloud.operator.elstertransfer.user; +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ConfigMapList; -import io.fabric8.kubernetes.api.model.KubernetesResourceList; +import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.PodTemplateSpec; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.SecretBuilder; import io.fabric8.kubernetes.api.model.SecretList; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentList; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.dsl.Resource; -import io.fabric8.kubernetes.client.dsl.RollableScalableResource; -import io.fabric8.kubernetes.api.model.ObjectMeta; -import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; -import io.fabric8.kubernetes.api.model.PodTemplateSpec; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.util.Base64; -import java.util.HashMap; -import java.util.Map; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.AppsAPIGroupDSL; import io.fabric8.kubernetes.client.dsl.MixedOperation; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; +import io.fabric8.kubernetes.client.dsl.Resource; +import io.fabric8.kubernetes.client.dsl.RollableScalableResource; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; +class OzgCloudElsterTransferUserRemoteServiceTest { -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.mockito.Spy; + @Mock + private KubernetesClient client; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; + @Mock + private AppsAPIGroupDSL appsAPIGroupDSL; -class OzgCloudElsterTransferUserRemoteServiceTest { + @Spy + @InjectMocks + private OzgCloudElsterTransferUserRemoteService remoteService; + + @Mock + private MixedOperation<Deployment, DeploymentList, RollableScalableResource<Deployment>> deploymentOperation; + + @Mock + private RollableScalableResource<Deployment> deploymentResource; - @Mock - private KubernetesClient client; + @Mock + private MixedOperation<ConfigMap, ConfigMapList, Resource<ConfigMap>> configMapOperation; - @Mock - private RollableScalableResource<Deployment> deploymentResource; + @Mock + private NonNamespaceOperation<ConfigMap, ConfigMapList, Resource<ConfigMap>> nonNamespaceOperation; - - @Mock - private AppsAPIGroupDSL appsAPIGroupDSL; - @Mock - private Resource<Secret> secretResource; + @Mock + private Resource<ConfigMap> configMapResource; - @Spy - @InjectMocks - private OzgCloudElsterTransferUserRemoteService remoteService; + @Mock + private MixedOperation<Secret, SecretList, Resource<Secret>> secretOperation; + @Mock + private Resource<Secret> secretResource; - @Mock - private MixedOperation<Deployment, DeploymentList, RollableScalableResource<Deployment>> deploymentOperation; - @Mock - private MixedOperation<ConfigMap, ConfigMapList, Resource<ConfigMap>> configMapOperation; + private static final String namespace = OzgCloudElsterTransferUserTestFactory.METADATA_NAMESPACE; + private static final String configMapName = OzgCloudElsterTransferUserTestFactory.CONFIG_MAP_NAME; + private static final String deploymentName = OzgCloudElsterTransferUserTestFactory.ETR_DEPLOYMENT_NAME; + private static final String secretName = OzgCloudElsterTransferUserTestFactory.MUK_USER_SECRET_NAME; + private static final String configmapNamespace = "etr-user-creation"; - @Mock - private NonNamespaceOperation<ConfigMap, ConfigMapList, Resource<ConfigMap>> nonNamespaceOperation; + @DisplayName("test ConfigMap") + @Nested + class TestConfigMap { + @BeforeEach + void init() { + when(client.configMaps()).thenReturn(configMapOperation); + when(configMapOperation.inNamespace(configmapNamespace)).thenReturn(nonNamespaceOperation); + } - @Mock - private Resource<ConfigMap> configMapResource; + @DisplayName("get configmap") + @Nested + class TestGetConfigMap { + @Test + void shouldCallGetConfigMap() { - @Mock - private MixedOperation<Secret, SecretList, Resource<Secret>> secretOperation; + when(nonNamespaceOperation.withName(configMapName)).thenReturn(configMapResource); + remoteService.getConfigMap(configmapNamespace, configMapName); - @Mock - private ConfigMap configMap; + verify(client.configMaps().inNamespace(configmapNamespace).withName(configMapName)).get(); + } + @Test + void shouldGetConfigMap() { + when(nonNamespaceOperation.withName(configMapName)).thenReturn(configMapResource); + ConfigMap configMap = new ConfigMapBuilder() + .withNewMetadata() + .withName(configMapName) + .endMetadata() + .build(); + when(configMapResource.get()).thenReturn(configMap); - private static final String namespace = OzgCloudElsterTransferUserTestFactory.METADATA_NAMESPACE; - private static final String configMapName = OzgCloudElsterTransferUserTestFactory.CONFIG_MAP_NAME; - private static final String deploymentName = OzgCloudElsterTransferUserTestFactory.ETR_DEPLOYMENT_NAME; - private static final String secretName = OzgCloudElsterTransferUserTestFactory.MUK_USER_SECRET_NAME; - private static final String configmapNamespace = "etr-user-creation"; + ConfigMap result = remoteService.getConfigMap(configmapNamespace, configMapName); - @DisplayName("test configmap") - @Nested - class TestConfigMap { - @BeforeEach - void setUp() { - // MockitoAnnotations.openMocks(this); - when(client.configMaps()).thenReturn(configMapOperation); - when(configMapOperation.inNamespace(configmapNamespace)).thenReturn(nonNamespaceOperation); - } - @Test - void testCallGetConfigMap() { - - when(nonNamespaceOperation.withName(configMapName)).thenReturn(configMapResource); - when(configMapResource.get()).thenReturn(configMap); - - remoteService.getConfigMap(configmapNamespace, configMapName); - - //verify(configMapOperation.inNamespace(namespace).withName(configMapName)).get(); - - //verify(configMapOperation).inNamespace(configmapNamespace); - //verify(nonNamespaceOperation).withName(configMapName); - //verify(configMapResource).get(); - verify(client.configMaps().inNamespace(configmapNamespace).withName(configMapName)).get(); - } - - - @Test - void testCreateConfigMap() { - when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource); - configMap = new ConfigMapBuilder() - .withNewMetadata() - .withName(configMapName) - .endMetadata() - .addToData("key", "value") - .build(); - when(configMapResource.create()).thenReturn(configMap); - - - ConfigMap result = remoteService.createConfigMap(configmapNamespace, configMapName); - - assertNotNull(result); - assert configMapName.equals(result.getMetadata().getName()); - - // - // verify(client).configMaps(); - //verify(configMapOperation).inNamespace(configmapNamespace); - // verify(nonNamespaceOperation).resource(any(ConfigMap.class)); - // verify(configMapResource).create(); - verify(client.configMaps().inNamespace(configmapNamespace).resource(result)).create(); - } - - @Test - void testUpdateConfigMapData() { - when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource); - - String key = "test-key"; - String data = "new-data"; - - Map<String, String> mapData = new HashMap<>(); - mapData.put("initial-key", "initial-value"); - - ConfigMap configMap = new ConfigMap(); - configMap.setMetadata(new io.fabric8.kubernetes.api.model.ObjectMeta()); - configMap.getMetadata().setNamespace(configmapNamespace); - configMap.setData(mapData); - - remoteService.updateConfigMapData(configMap, key, data); - - // Assert: Verify the data is updated in the ConfigMap - assert configMap.getData().containsKey(key); - assert "new-data".equals(configMap.getData().get(key)); - - // Verify interactions with Kubernetes client - verify(client).configMaps(); - verify(configMapOperation).inNamespace(configmapNamespace); - verify(nonNamespaceOperation).resource(configMap); - verify(configMapResource).update(); - } -} + assertNotNull(result); + assert configMapName.equals(result.getMetadata().getName()); + + } + + } + + @DisplayName("create configmap") + @Nested + class TestCreateConfigMap { + + ConfigMap configMap; + + @BeforeEach + void init() { + when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource); + configMap = new ConfigMapBuilder() + .withNewMetadata() + .withName(configMapName) + .endMetadata() + .addToData("key", "value") + .build(); + when(configMapResource.create()).thenReturn(configMap); + + } + + @Test + void shouldCreateConfigMap() { + + ConfigMap result = remoteService.createConfigMap(configmapNamespace, configMapName); + + assertNotNull(result); + assert configMapName.equals(result.getMetadata().getName()); + } + + @Test + void shouldCallCreateConfigMap() { + + ConfigMap result = remoteService.createConfigMap(configmapNamespace, configMapName); + + verify(client.configMaps().inNamespace(configmapNamespace).resource(result)).create(); + } + } + + @DisplayName("update configmap") + @Nested + class TestUpdateConfigMap { + ConfigMap configMap = new ConfigMap(); + String key = "test-key"; + String data = "new-data"; + + @BeforeEach + void init() { + + when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource); + configMap.setMetadata(new io.fabric8.kubernetes.api.model.ObjectMeta()); + configMap.getMetadata().setNamespace(configmapNamespace); + } + + @Test + void shouldCallUpdateConfigMapData() { + + remoteService.updateConfigMapData(configMap, key, data); + + verify(client.configMaps().inNamespace(configmapNamespace).resource(configMap)).update(); + } + + @Test + void shouldUpdateConfigMapData() { - @DisplayName("restart deployment") + remoteService.updateConfigMapData(configMap, key, data); + + assert configMap.getData().containsKey(key); + assert "new-data".equals(configMap.getData().get(key)); + } + } + + } + + @DisplayName("restart deployment") @Nested class TestRestartDeployment { - Deployment deployment= new Deployment(); - @BeforeEach - void setUp() { - - deployment.setSpec(new DeploymentSpec()); - deployment.getSpec().setTemplate(new PodTemplateSpec()); - deployment.getSpec().getTemplate().setMetadata(new ObjectMeta()); - } - @Test - void testRestartDeployment() { - when(client.apps()).thenReturn(appsAPIGroupDSL); - when(appsAPIGroupDSL.deployments()).thenReturn(deploymentOperation); - when(deploymentOperation.inNamespace(anyString())).thenReturn(deploymentOperation); - when(deploymentOperation.withName(anyString())).thenReturn(deploymentResource); - when(deploymentResource.get()).thenReturn(deployment); - - remoteService.restartDeployment(namespace, deploymentName); - - - verify(deploymentResource).get(); - verify(deploymentResource).replace(deployment); - verify(remoteService).setRestartFlag(deployment); - } - - @Test - void testSetRestartFlag() { - Map<String, String> annotations = new HashMap<>(); - deployment.getSpec().getTemplate().getMetadata().setAnnotations(annotations); - - remoteService.setRestartFlag(deployment); - - assert annotations.containsKey("kubectl.kubernetes.io/restartedAt"); - assert annotations.get("kubectl.kubernetes.io/restartedAt") != null; - } -} + Deployment deployment = new Deployment(); + + @BeforeEach + void setUp() { + deployment.setSpec(new DeploymentSpec()); + deployment.getSpec().setTemplate(new PodTemplateSpec()); + deployment.getSpec().getTemplate().setMetadata(new ObjectMeta()); + } + + @DisplayName("replace deployment") + @Nested + class TestReplaceDeployment { + + @BeforeEach + void setUp() { + when(client.apps()).thenReturn(appsAPIGroupDSL); + when(appsAPIGroupDSL.deployments()).thenReturn(deploymentOperation); + when(deploymentOperation.inNamespace(anyString())).thenReturn(deploymentOperation); + when(deploymentOperation.withName(anyString())).thenReturn(deploymentResource); + } + + @Test + void shouldCallReplaceDeployment() { + + when(deploymentResource.get()).thenReturn(deployment); + + remoteService.restartDeployment(namespace, deploymentName); + + verify(deploymentResource).replace(deployment); + } + + @Test + void shouldCallSetRestartFlag() { - @Test - void shouldCallCreateOrUpdateSecret() { - when(client.secrets()).thenReturn(secretOperation); - when(secretOperation.inNamespace(anyString())).thenReturn(secretOperation); - when(secretOperation.resource(any(Secret.class))).thenReturn(secretResource); - - String userPassword = "test-password"; - Secret secret = new SecretBuilder() + when(deploymentResource.get()).thenReturn(deployment); + + remoteService.restartDeployment(namespace, deploymentName); + + verify(remoteService).setRestartFlag(deployment); + } + + @Test + void shouldCallGetDeployment() { + + remoteService.restartDeployment(namespace, deploymentName); + + verify(deploymentResource).get(); + } + } + + @DisplayName("set restart flag") + @Nested + class TestSetRestartFlag { + @Test + void shouldSetRestartedAtAnnotation() { + Map<String, String> annotations = new HashMap<>(); + deployment.getSpec().getTemplate().getMetadata().setAnnotations(annotations); + + remoteService.setRestartFlag(deployment); + + assert annotations.containsKey("kubectl.kubernetes.io/restartedAt"); + assert annotations.get("kubectl.kubernetes.io/restartedAt") != null; + } + } + } + + @Test + void shouldCallCreateOrUpdateSecret() { + when(client.secrets()).thenReturn(secretOperation); + when(secretOperation.inNamespace(anyString())).thenReturn(secretOperation); + when(secretOperation.resource(any(Secret.class))).thenReturn(secretResource); + + String userPassword = "test-password"; + Secret secret = new SecretBuilder() .withNewMetadata() .withName(secretName) .endMetadata() @@ -222,14 +271,10 @@ class OzgCloudElsterTransferUserRemoteServiceTest { .addToData("password", Base64.getEncoder().encodeToString(userPassword.getBytes())) .build(); - remoteService.createOrUpdateSecret(namespace, userPassword, secretName); + remoteService.createOrUpdateSecret(namespace, userPassword, secretName); + + verify(client.secrets().inNamespace(namespace).resource(secret)).createOrReplace(); - //verify(secretOperation).inNamespace(namespace); - //verify(secretOperation).resource(secret); - // verify(secretResource).createOrReplace(); - verify(client.secrets().inNamespace(namespace).resource(secret)).createOrReplace(); - + } - } - }