From 0746fbe0f748994f98a54c76db98cabef0389fd3 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 12 Dec 2024 14:19:31 +0100 Subject: [PATCH] update junittests --- ...gCloudElsterTransferUserRemoteService.java | 2 +- .../OzgCloudElsterTransferUserService.java | 6 +- ...udElsterTransferConfigMapUserListTest.java | 3 +- ...CloudElsterTransferUserReconcilerTest.java | 12 +- ...udElsterTransferUserRemoteServiceTest.java | 221 +++- ...OzgCloudElsterTransferUserServiceTest.java | 1022 +++++++++-------- 6 files changed, 744 insertions(+), 522 deletions(-) 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 2e830ff..0b7533e 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java @@ -67,7 +67,7 @@ class OzgCloudElsterTransferUserRemoteService { public void updateConfigMapData(ConfigMap configMap, String key, String data) { configMap.getData().put(key, data); - client.configMaps().inNamespace(configMap.getMetadata().getNamespace()).resource(configMap).update(); + getConfigMapNonNamespaceOperation(configMap.getMetadata().getNamespace()).resource(configMap).update(); } public void restartDeployment(String namespace, String deploymentName) { diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java index aa27e22..946a696 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java @@ -67,12 +67,12 @@ class OzgCloudElsterTransferUserService { public void delete(OzgCloudElsterTransferUser user) { String namespace = user.getMetadata().getNamespace(); - if (!userExists(namespace, etrNamespace, Constants.ELSTER_TRANSFER_USER_LOGIN_KEY)) { + if (!userExists(namespace, etrNamespace, Constants.CONFIG_MAP_NAME)) { LOG.info("User not exists"); return; } LOG.info("{} do cleanup...", user.getMetadata()); - deleteUser(user.getMetadata().getNamespace(), Constants.ELSTER_TRANSFER_USER_LOGIN_KEY); + deleteUser(namespace, etrNamespace); restartDeployment(etrNamespace, Constants.ETR_DEPLOYMENT_NAME); } @@ -141,7 +141,7 @@ class OzgCloudElsterTransferUserService { OzgCloudElsterTransferConfigMapUserList getUsersFromConfigMap(ConfigMap configMap) { String usersYaml = configMap.getData().get(Constants.USERS_KEY); - if (Objects.isNull(usersYaml)) { + if (Objects.isNull(usersYaml) || usersYaml.isBlank() ) { LOG.debug("userYaml is empty"); return new OzgCloudElsterTransferConfigMapUserList(new ArrayList<>()); } diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListTest.java index cd6719e..2aadbaf 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListTest.java @@ -24,7 +24,6 @@ package de.ozgcloud.operator.elstertransfer.user; import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; import java.util.ArrayList; import java.util.List; @@ -110,7 +109,7 @@ class OzgCloudElsterTransferConfigMapUserListTest { void shouldReturnEmptyListIfNoUsers() { OzgCloudElsterTransferConfigMapUserList emptyConfigMapUserList = new OzgCloudElsterTransferConfigMapUserList(new ArrayList<>()); - assertThat(emptyConfigMapUserList.getUsersList().isEmpty()).isTrue(); + assertThat(emptyConfigMapUserList.getUsersList()).isEmpty(); } } } 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 2962849..9c8a513 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconcilerTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserReconcilerTest.java @@ -24,7 +24,6 @@ package de.ozgcloud.operator.elstertransfer.user; import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import org.junit.jupiter.api.DisplayName; @@ -36,7 +35,6 @@ import org.mockito.Spy; import de.ozgcloud.operator.ElsterTransferOperatorConfiguration; import de.ozgcloud.operator.elstertransfer.OzgCloudCustomResourceStatus; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; class OzgCloudElsterTransferUserReconcilerTest { @@ -75,6 +73,16 @@ class OzgCloudElsterTransferUserReconcilerTest { assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK); } + @Test + void shouldRescheduleOnError() { + doThrow(RuntimeException.class).when(service) + .updateConfigMapAndRestartDeploymentAndCreateSecret(OzgCloudElsterTransferUserTestFactory.METADATA_NAMESPACE); + + var response = reconciler.reconcile(user, null); + + assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.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 19807c1..c341d90 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java @@ -23,7 +23,7 @@ */ package de.ozgcloud.operator.elstertransfer.user; -import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -102,27 +102,48 @@ class OzgCloudElsterTransferUserRemoteServiceTest { private static final String deploymentName = Constants.ETR_DEPLOYMENT_NAME; private static final String secretName = Constants.MUK_USER_SECRET_NAME; private static final String configmapNamespace = "elster-transfer"; + private static final String userPassword = "userPassword"; @DisplayName("test ConfigMap") @Nested class TestConfigMap { @BeforeEach void init() { - when(client.configMaps()).thenReturn(configMapOperation); - when(configMapOperation.inNamespace(configmapNamespace)).thenReturn(nonNamespaceOperation); + lenient().when(client.configMaps()).thenReturn(configMapOperation); + lenient().when(configMapOperation.inNamespace(configmapNamespace)).thenReturn(nonNamespaceOperation); } - @DisplayName("get configmap") + @DisplayName("get configMap") @Nested class TestGetConfigMap { @Test - void shouldCallGetConfigMap() { + void shouldCallGetConfigMapNonNamespaceOperation() { + when(nonNamespaceOperation.withName(configMapName)).thenReturn(configMapResource); + ConfigMap configMap = new ConfigMapBuilder() + .withNewMetadata() + .withName(configMapName) + .endMetadata() + .build(); + when(configMapResource.get()).thenReturn(configMap); + + remoteService.getConfigMap(configmapNamespace, configMapName); + + verify(remoteService).getConfigMapNonNamespaceOperation(configmapNamespace); + } + @Test + void shouldCallWithNameGet() { when(nonNamespaceOperation.withName(configMapName)).thenReturn(configMapResource); + ConfigMap configMap = new ConfigMapBuilder() + .withNewMetadata() + .withName(configMapName) + .endMetadata() + .build(); + when(configMapResource.get()).thenReturn(configMap); remoteService.getConfigMap(configmapNamespace, configMapName); - verify(client.configMaps().inNamespace(configmapNamespace).withName(configMapName)).get(); + verify(nonNamespaceOperation.withName(configMapName)).get(); } @Test @@ -137,11 +158,32 @@ class OzgCloudElsterTransferUserRemoteServiceTest { ConfigMap result = remoteService.getConfigMap(configmapNamespace, configMapName); - assertNotNull(result); - assert configMapName.equals(result.getMetadata().getName()); - + assertThat(result.getMetadata().getName()).isEqualTo(configMapName); } + @DisplayName("getConfigMapNonNamespaceOperation") + @Nested + class TestgetConfigMapNonNamespaceOperation { + + @Test + void shouldCallInNamespace() { + when(client.configMaps().inNamespace(configmapNamespace)).thenReturn(nonNamespaceOperation); + + remoteService.getConfigMapNonNamespaceOperation(configmapNamespace); + + verify(client.configMaps()).inNamespace(configmapNamespace); + } + + @Test + void shouldReturnConfigMapNonNamespaceOperation() { + when(client.configMaps().inNamespace(configmapNamespace)).thenReturn(nonNamespaceOperation); + + NonNamespaceOperation<ConfigMap, ConfigMapList, Resource<ConfigMap>> result = remoteService + .getConfigMapNonNamespaceOperation(configmapNamespace); + + assertThat(nonNamespaceOperation).isEqualTo(result); + } + } } @DisplayName("create configmap") @@ -152,31 +194,48 @@ class OzgCloudElsterTransferUserRemoteServiceTest { @BeforeEach void init() { - when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource); + lenient().when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource); configMap = new ConfigMapBuilder() .withNewMetadata() .withName(configMapName) .endMetadata() .build(); - when(configMapResource.create()).thenReturn(configMap); - } @Test void shouldCreateConfigMap() { + when(configMapResource.create()).thenReturn(configMap);when(configMapResource.create()).thenReturn(configMap); ConfigMap result = remoteService.createConfigMap(configmapNamespace, configMapName); - assertNotNull(result); - assert configMapName.equals(result.getMetadata().getName()); + assertThat(result.getMetadata().getName()).isEqualTo(configMapName); } @Test - void shouldCallCreateConfigMap() { + void shouldCallGetConfigMapNonNamespaceOperation() { + remoteService.createConfigMap(configmapNamespace, configMapName); - ConfigMap result = remoteService.createConfigMap(configmapNamespace, configMapName); + verify(remoteService).getConfigMapNonNamespaceOperation(configmapNamespace); + } + + @Test + void shouldCallResourceCreate() { + remoteService.createConfigMap(configmapNamespace, configMapName); + + verify(nonNamespaceOperation.resource(configMap)).create(); + } - verify(client.configMaps().inNamespace(configmapNamespace).resource(result)).create(); + @DisplayName("ConfigMapBuilderTest") + @Nested + class TestConfigMapBuilder { + + @Test + void shouldBuildConfigMap() { + ConfigMap result = remoteService.buildConfigMap(configMapName); + + assertThat(result.getMetadata()).isNotNull(); + assertThat(configMapName).isEqualTo(result.getMetadata().getName()); + } } } @@ -189,27 +248,33 @@ class OzgCloudElsterTransferUserRemoteServiceTest { @BeforeEach void init() { - when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource); + when(configMapResource.update()).thenReturn(configMap); + configMap.setMetadata(new io.fabric8.kubernetes.api.model.ObjectMeta()); configMap.getMetadata().setNamespace(configmapNamespace); } @Test - void shouldCallUpdateConfigMapData() { + void shouldCallGetConfigMapNonNamespaceOperation() { + remoteService.updateConfigMapData(configMap, key, data); + + verify(remoteService).getConfigMapNonNamespaceOperation(configmapNamespace); + } + @Test + void shouldCallResourceUpdate() { remoteService.updateConfigMapData(configMap, key, data); - verify(client.configMaps().inNamespace(configmapNamespace).resource(configMap)).update(); + verify(nonNamespaceOperation.resource(configMap)).update(); } @Test void shouldUpdateConfigMapData() { - remoteService.updateConfigMapData(configMap, key, data); - assert configMap.getData().containsKey(key); - assert "new-data".equals(configMap.getData().get(key)); + assertThat(configMap.getData()).containsKey(key); + assertThat(configMap.getData().get(key)).isEqualTo(data); } } @@ -241,7 +306,6 @@ class OzgCloudElsterTransferUserRemoteServiceTest { @Test void shouldCallUpdateDeployment() { - when(deploymentResource.get()).thenReturn(deployment); when(client.resource(deployment)).thenReturn(namespaceableDeployment); @@ -263,11 +327,18 @@ class OzgCloudElsterTransferUserRemoteServiceTest { @Test void shouldCallGetDeployment() { - remoteService.restartDeployment(namespace, deploymentName); verify(deploymentResource).get(); } + + @Test + void shouldCallGetDeploymentResource() { + remoteService.restartDeployment(namespace, deploymentName); + + verify(remoteService).getDeploymentResource(namespace, deploymentName); + } + } @DisplayName("set restart flag") @@ -280,27 +351,93 @@ class OzgCloudElsterTransferUserRemoteServiceTest { remoteService.setRestartAt(deployment); - assert annotations.containsKey("kubectl.kubernetes.io/restartedAt"); - assert annotations.get("kubectl.kubernetes.io/restartedAt") != null; + assertThat(annotations).containsKey("kubectl.kubernetes.io/restartedAt"); + assertThat(annotations.get("kubectl.kubernetes.io/restartedAt")).isNotNull(); + } + } + + @DisplayName("getDeploymentResource") + @Nested + class TestGetDeploymentResource { + @Test + void shouldGetDeploymentResource() { + when(client.apps()).thenReturn(appsAPIGroupDSL); + when(appsAPIGroupDSL.deployments()).thenReturn(deploymentOperation); + when(deploymentOperation.inNamespace(anyString())).thenReturn(deploymentOperation); + when(deploymentOperation.withName(anyString())).thenReturn(deploymentResource); + + Resource<Deployment> result = remoteService.getDeploymentResource(namespace, deploymentName); + + assertThat(result).isEqualTo(deploymentResource); + } + + @Test + void shouldCallAppsDeploymentsInNamespaceWithName() { + when(client.apps()).thenReturn(appsAPIGroupDSL); + when(appsAPIGroupDSL.deployments()).thenReturn(deploymentOperation); + when(deploymentOperation.inNamespace(anyString())).thenReturn(deploymentOperation); + when(deploymentOperation.withName(anyString())).thenReturn(deploymentResource); + + remoteService.getDeploymentResource(namespace, deploymentName); + + verify(client).apps(); + verify(client.apps()).deployments(); + verify(client.apps().deployments()).inNamespace(namespace); + verify(client.apps().deployments().inNamespace(namespace)).withName(deploymentName); } + } } - @Test - void shouldCallCreateOrUpdateSecret() { - String userPassword = "test-password"; - Secret secret = new SecretBuilder() - .withNewMetadata() - .withName(secretName) - .endMetadata() - .addToData("login", Base64.getEncoder().encodeToString(namespace.getBytes())) - .addToData("password", Base64.getEncoder().encodeToString(userPassword.getBytes())) - .build(); - when(client.resource(secret)).thenReturn(namespaceableSecret); - - remoteService.createOrUpdateSecret(namespace, userPassword, secretName); - - verify(client.resource(secret)).serverSideApply(); + @DisplayName("createOrUpdateSecret") + @Nested + class TestCreateOrUpdateSecret { + Secret secret; + @BeforeEach + void setUp() { + secret = new SecretBuilder() + .withNewMetadata() + .withName(secretName) + .endMetadata() + .addToData("login", Base64.getEncoder().encodeToString(namespace.getBytes())) + .addToData("password", Base64.getEncoder().encodeToString(userPassword.getBytes())) + .build(); + } + + @Test + void shouldCallBuildUserSecret() { + when(client.resource(secret)).thenReturn(namespaceableSecret); + + remoteService.createOrUpdateSecret(namespace, userPassword, secretName); + + verify(remoteService).buildUserSecret(namespace, userPassword, secretName); + } + + @Test + void shouldCallServerSideApply() { + when(client.resource(secret)).thenReturn(namespaceableSecret); + + remoteService.createOrUpdateSecret(namespace, userPassword, secretName); + + verify(client.resource(secret)).serverSideApply(); + } + + @DisplayName("buildUserSecret") + @Nested + class TestBuildUserSecret { + + @Test + void shouldCallCreateOrUpdateSecret() { + Secret secret = remoteService.buildUserSecret(namespace, userPassword, secretName); + + assertThat(secret.getMetadata()).isNotNull(); + assertThat(secretName).isEqualTo(secret.getMetadata().getName()); + assertThat(secret.getData().containsKey(Constants.ELSTER_TRANSFER_USER_LOGIN_KEY)).isTrue(); + assertThat(secret.getData().containsKey(Constants.ELSTER_TRANSFER_USER_PASSWORD_KEY)).isTrue(); + assertThat(secret.getData().get(Constants.ELSTER_TRANSFER_USER_LOGIN_KEY)).isEqualTo(Base64.getEncoder().encodeToString(namespace.getBytes())); + assertThat(secret.getData().get(Constants.ELSTER_TRANSFER_USER_PASSWORD_KEY)).isEqualTo(Base64.getEncoder().encodeToString(userPassword.getBytes())); + } + } } } diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java index d2314f5..3372845 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java @@ -29,19 +29,17 @@ import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.HashMap; -import java.util.List; 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 org.springframework.test.util.ReflectionTestUtils; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; class OzgCloudElsterTransferUserServiceTest { @@ -64,473 +62,553 @@ class OzgCloudElsterTransferUserServiceTest { private static final String secretName = Constants.MUK_USER_SECRET_NAME; private static final String configMapNamespace = "elster-transfer"; private static final String usersKey = Constants.USERS_KEY; + private static final String userPassword = "userPassword"; - /* - * @Nested class TestUpdateConfigMapAndRestartDeploymentAndCreateSecret { - * - * @BeforeEach void setUp() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(anyString(), - * anyString())).thenReturn(configMap); when(users.getUsersList()).thenReturn( - * OzgCloudElsterTransferConfigMapUserListFactory.create()); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); } - * - * @Test void shouldCallupdateConfigMapAndGenerateUserPassword() { - * service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); - * - * verify(service).updateConfigMapAndGenerateUserPassword(namespace, - * configMapNamespace, configMapName); } - * - * @Test void shouldCallRestartDeployment() { - * service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); - * - * verify(service).restartDeployment(configMapNamespace, deploymentName); } - * - * @Test void shouldCallCreateOrUpdateSecret() { String psw = "password"; - * when(service.updateConfigMapAndGenerateUserPassword(namespace, - * configMapNamespace, configMapName)).thenReturn(psw); - * - * service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); - * - * verify(service).createOrUpdateSecret(namespace, psw, secretName); } - * - * @Test void shouldNotCallRestartDeployment() { - * when(service.updateConfigMapAndGenerateUserPassword(namespace, - * configMapNamespace, configMapName)).thenReturn(""); - * - * service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); - * - * verify(service, never()).restartDeployment(any(), any()); } - * - * @Test void shouldNotCallCreateOrUpdateSecret() { - * when(service.updateConfigMapAndGenerateUserPassword(namespace, - * configMapNamespace, configMapName)).thenReturn(""); - * - * service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); - * - * verify(service, never()).createOrUpdateSecret(any(), any(), any()); } - * - * } - * - * @Nested class Testdelete { - * - * @Test void keepAfterDeleteShouldReturnFalseAsDefault() { - * - * configMap = OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(anyString(), - * anyString())).thenReturn(configMap); OzgCloudElsterTransferUser user = - * OzgCloudElsterTransferUserTestFactory.create(); - * - * service.delete(user); - * - * assertFalse(user.getSpec().isKeepAfterDelete()); - * - * } - * - * @Test void shouldCallUserExists() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(anyString(), - * anyString())).thenReturn(configMap); - * - * service.delete(OzgCloudElsterTransferUserTestFactory.create()); - * - * verify(service).userExists(namespace, configMapNamespace, configMapName); - * - * } - * - * @Test void shouldNotCallUserExists() { - * - * OzgCloudElsterTransferUser user = - * OzgCloudElsterTransferUserTestFactory.create(); - * user.getSpec().setKeepAfterDelete(true); - * - * service.delete(user); - * - * verify(service, never()).userExists(any(), any(), any()); - * - * } - * - * @Test void shouldCallDeleteUser() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(anyString(), - * anyString())).thenReturn(configMap); when(users.getUsersList()).thenReturn( - * OzgCloudElsterTransferConfigMapUserListFactory.create()); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * OzgCloudElsterTransferUser user = - * OzgCloudElsterTransferUserTestFactory.create(); - * when(service.userExists(namespace, configMapNamespace, - * configMapName)).thenReturn(true); - * - * service.delete(user); - * - * verify(service).deleteUser(user.getMetadata().getNamespace(), configMapName); - * } - * - * @Test void shouldNotCallDeleteUserOrRestartDeploymentIfKeepAfterDelete() { - * OzgCloudElsterTransferUser user = - * OzgCloudElsterTransferUserTestFactory.create(); - * user.getSpec().setKeepAfterDelete(true); - * - * service.delete(user); - * - * verify(service, never()).deleteUser(any(), any()); verify(service, - * never()).restartDeployment(any(), any()); } - * - * @Test void shouldNotCallDeleteUserOrRestartDeploymentIfUserNotExists() { - * configMap = OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(anyString(), - * anyString())).thenReturn(configMap); OzgCloudElsterTransferUser user = - * OzgCloudElsterTransferUserTestFactory.create(); - * when(service.userExists(namespace, configMapNamespace, - * configMapName)).thenReturn(false); - * - * service.delete(user); - * - * verify(service, never()).deleteUser(any(), any()); verify(service, - * never()).restartDeployment(any(), any()); } - * - * @Test void shouldCallRestartDeployment() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(anyString(), - * anyString())).thenReturn(configMap); when(users.getUsersList()).thenReturn( - * OzgCloudElsterTransferConfigMapUserListFactory.create()); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * OzgCloudElsterTransferUser user = - * OzgCloudElsterTransferUserTestFactory.create(); - * when(service.userExists(namespace, configMapNamespace, - * configMapName)).thenReturn(true); - * - * service.delete(user); - * - * verify(service).restartDeployment(configMapNamespace, deploymentName); } } - * - * @Nested - * - * @DisplayName("updateConfigMapAndGenerateUserPassword") class - * TestupdateConfigMapAndGenerateUserPassword { - * - * @BeforeEach public void setUp() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(anyString(), - * anyString())).thenReturn(configMap); } - * - * @Test void shouldNotCallCreateConfigMap() { - * when(remoteService.getConfigMap(configMapNamespace, - * configMapName)).thenReturn(configMap); - * - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * verify(remoteService, never()).createConfigMap(any(), any()); } - * - * @Test void shouldCallGetConfigMap() { - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * verify(remoteService).getConfigMap(configMapNamespace, configMapName); } - * - * @Test void shouldReturnGeneratedPassword() { String userPassword = - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * assertNotNull(userPassword); } - * - * @Test void shouldCallUpdateConfigMap() { - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * verify(service).updateConfigMap(eq(configMapNamespace), eq(configMapName), - * eq(configMap), anyString()); } - * - * @Test void shouldNotCallUpdateConfigMap() { - * when(service.generatePassword()).thenReturn("psw"); - * when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn(""); - * - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * verify(service, never()).updateConfigMap(any(), any(), any(), anyString()); } - * - * @Test void shouldSetUserPSEmptyWWhenUserYamlEmpty() { - * when(service.generatePassword()).thenReturn("psw"); - * when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn(""); - * - * String userPassword = - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * assertTrue(userPassword.isEmpty()); } - * - * @Test void shouldSetUserPSWWhenUserYamlNotEmpty() { - * when(service.generatePassword()).thenReturn("psw"); - * when(service.addUserToUserYaml(namespace, configMap, - * "psw")).thenReturn("someYaml"); - * - * String userPassword = - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * assertFalse(userPassword.isEmpty()); } - * - * @Test void shouldCalladdUserToUserYaml() { - * service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, - * configMapName); - * - * verify(service).addUserToUserYaml(eq(namespace), eq(configMap), anyString()); - * } - * - * } - * - * @Nested class addUserToUserYamlTests { - * - * @Test void shouldCallgetUsersFromConfigMap() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * - * service.addUserToUserYaml(namespace, configMap, "password"); - * - * verify(service).getUsersFromConfigMap(configMap); } - * - * @Test void shouldNotCallgetUsersFromConfigMap() { - * service.addUserToUserYaml(namespace, null, "password"); - * - * verify(service, never()).getUsersFromConfigMap(any()); } - * - * @Test void shouldCallUserExistsInList() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * when(users.getUsersList()).thenReturn( - * OzgCloudElsterTransferConfigMapUserListFactory.create()); - * - * service.addUserToUserYaml(namespace, configMap, "password"); - * - * verify(service).userExistsInList(users, namespace); } - * - * @Test void shouldCallAddNewUserToListWhenUserNotExists() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * - * service.addUserToUserYaml(namespace, configMap, "password"); - * - * verify(service).addNewUserToList(eq(users), eq(namespace), anyString()); } - * - * @Test void shouldCallconstructYamlEntries() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * - * service.addUserToUserYaml(namespace, configMap, "password"); - * - * verify(service).constructYamlEntries(users); } - * - * @Test void TestUserYamlShouldNotBeEmpty() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * - * - * String userYaml = service.addUserToUserYaml(namespace, configMap, - * "password"); - * - * assertFalse(userYaml.isEmpty()); } - * - * @Test void TestUserYamlShouldBeEmpty() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * - * - * String userYaml = service.addUserToUserYaml(namespace, configMap, - * "password"); - * - * assertTrue(userYaml.isEmpty()); } } - * - * @Nested class UpdateConfigMapTests { - * - * @Test void shouldCallCreateConfigMapIfConfigMapNotExists() { - * service.updateConfigMap(configMapName, null, "mockedUsersYaml"); - * - * verify(remoteService).createConfigMap(configMapNamespace, configMapName); } - * - * @Test void shouldNotCallCreateConfigMapIfConfigMapExists() { - * service.updateConfigMap(configMapName, configMap, "mockedUsersYaml"); - * - * verify(remoteService, never()).createConfigMap(any(), any()); } - * - * @Test void shouldCallUpdateConfigMapData() { - * service.updateConfigMap(configMapName, configMap, "mockedUsersYaml"); - * - * verify(remoteService).updateConfigMapData(configMap, usersKey, - * "mockedUsersYaml"); } - * - * } - * - * @Nested class RestartDeploymentTests { - * - * @Test void shouldCallCreateConfigMap() { - * service.restartDeployment(configMapNamespace, deploymentName); - * - * verify(remoteService).restartDeployment(configMapNamespace, deploymentName); - * } } - * - * @Nested class UserExistsTests { - * - * @BeforeEach public void setUp() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(configMapNamespace, - * configMapName)).thenReturn(configMap); } - * - * @Test void shouldCallGetConfigMap() { service.userExists(namespace, - * configMapNamespace, configMapName); - * - * verify(remoteService).getConfigMap(configMapNamespace, configMapName); } - * - * @Test void shouldReturnUserExistsTrueIfUserExists() { - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * when(users.existsUser(namespace)).thenReturn(true); - * - * boolean userExists = service.userExists(namespace, configMapNamespace, - * configMapName); - * - * assertTrue(userExists); } - * - * @Test void shouldReturnUserExistsTrueIfUserNotExists() { boolean userExists = - * service.userExists(namespace, configMapNamespace, configMapName); - * - * assertFalse(userExists); } - * - * @Test void shouldCallgetUsersFromConfigMap() { service.userExists(namespace, - * configMapNamespace, configMapName); - * - * verify(service).getUsersFromConfigMap(configMap); } - * - * @Test void shouldCallExistsUser() { - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * - * service.userExists(namespace, configMapNamespace, configMapName); - * - * verify(users).existsUser(namespace); } - * - * } - * - * @Nested class DeleteUserTests { - * - * @BeforeEach public void setUp() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); - * when(remoteService.getConfigMap(configMapNamespace, - * configMapName)).thenReturn(configMap); } - * - * @Test void shouldCallGetConfigMap() { service.deleteUser(namespace, - * configMapName); - * - * verify(remoteService).getConfigMap(configMapNamespace, configMapName); } - * - * @Test void shouldCallGetUsersFromConfigMap() { service.deleteUser(namespace, - * configMapName); - * - * verify(service).getUsersFromConfigMap(configMap); } - * - * @Test void shouldCallremoveDeleted() { - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * - * service.deleteUser(namespace, configMapName); - * - * verify(users).removeDeleted(namespace); } - * - * @Test void ShouldCallConstructYamlEntries() { - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * - * service.deleteUser(namespace, configMapName); - * - * verify(service).constructYamlEntries(users); } - * - * @Test void ShouldCallUpdateConfigMapData() { - * when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - * when(service.constructYamlEntries(users)).thenReturn("updatedUsersYaml"); - * - * service.deleteUser(namespace, configMapName); - * - * verify(remoteService).updateConfigMapData(configMap, usersKey, - * "updatedUsersYaml"); } } - * - * @Nested class CreateOrUpdateSecretTests { - * - * @Test void shouldCallCreateOrUpdateSecret() { - * service.createOrUpdateSecret(namespace, "psw", secretName); - * - * verify(remoteService).createOrUpdateSecret(namespace, "psw", secretName); } - * - * } - * - * @Nested class GetUsersFromConfigMapTests { - * - * @BeforeEach public void setUp() { configMap = - * OzgCloudElsterTransferConfigMapFactory.create(); } - * - * @Test void shouldReturnObjectConfigMapUserList() { - * OzgCloudElsterTransferConfigMapUserList result = - * service.getUsersFromConfigMap(configMap); - * - * assertNotNull(result); - * assertInstanceOf(OzgCloudElsterTransferConfigMapUserList.class, result); } - * - * @Test void shouldReturnConfigMapUserListWithContent() { - * OzgCloudElsterTransferConfigMapUserList result = - * service.getUsersFromConfigMap(configMap); - * - * List<Map<String, Object>> usersList = result.getUsersList(); - * - * assertThat(usersList).hasSize(1); } - * - * } - * - * @Nested class UserExistsInListTests { - * - * @Test void shouldCallExistsUser() { service.userExistsInList(users, - * namespace); - * - * verify(users).existsUser(namespace); } - * - * } - * - * @Nested class AddNewUserToListTests { - * - * @Test void shouldCallAddUserToList() { service.addNewUserToList(users, - * namespace, "pswHash"); - * - * verify(users).addUserToList(namespace, "pswHash", "USER"); } - * - * } - * - * @Nested class ConstructYamlEntriesTests { - * - * @Test void shouldHaveResultWithCorrectContentStart() { String result = - * service.constructYamlEntries(users); - * - * assertTrue(result.startsWith("fileFormat: 1\nusers:\n")); } - * - * @Test void shouldHaveResultWithCorrectContent() { - * when(users.getUsersList()).thenReturn( - * OzgCloudElsterTransferConfigMapUserListFactory.create()); String expectedYaml - * = "fileFormat: 1\n" + "users:\n" + - * " - { login: \"user1\", rolle: \"USER\", credentials: { passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\" }, gruppe: \"user1\" }\n" - * ; - * - * String result = service.constructYamlEntries(users); - * - * assertThat(expectedYaml).isEqualTo(result); } } - * - * @Nested class GetYamlForUserTests { - * - * @Test void shouldReturnExpectedYamlForUser() { Map<String, Object> userEntry - * = new HashMap<>(); userEntry.put("login", "user1"); userEntry.put("rolle", - * "USER"); userEntry.put("gruppe", "user1"); Map<String, String> credentials = - * new HashMap<>(); credentials.put("passwortHash", - * "$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a"); - * userEntry.put("credentials", credentials); String expectedYaml = - * " - { login: \"user1\", rolle: \"USER\", credentials: { passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\" }, gruppe: \"user1\" }\n" - * ; - * - * String result = service.getYamlForUser(userEntry); - * - * assertThat(expectedYaml).isEqualTo(result); } - * - * } - */ -} + @Nested + class TestUpdateConfigMapAndRestartDeploymentAndCreateSecret { + + @BeforeEach + void setUp() { + configMap = OzgCloudElsterTransferConfigMapFactory.create(); + lenient().when(remoteService.getConfigMap(anyString(), + anyString())).thenReturn(configMap); + ReflectionTestUtils.setField(service, "etrNamespace", "elster-transfer"); + } + + @Test + void shouldCallUserExists() { + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service).userExists(namespace, configMapNamespace, configMapName); + } + + @Test + void shouldCallupdateConfigMapAndGenerateUserPasswordIfUserNotExists() { + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service).updateConfigMapAndGenerateUserPassword(namespace, + configMapNamespace, configMapName); + } + + @Test + void shouldCallRestartDeploymentIfUserNotExists() { + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service).restartDeployment(configMapNamespace, deploymentName); + } + + @Test + void shouldCallCreateOrUpdateSecretIfUserNotExists() { + when(service.updateConfigMapAndGenerateUserPassword(namespace, + configMapNamespace, configMapName)).thenReturn(userPassword); + + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service).createOrUpdateSecret(namespace, userPassword, secretName); + } + + @Test + void shouldNotCallRestartDeploymentIfUserExists() { + when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); + + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service, never()).restartDeployment(any(), any()); + } + + @Test + void shouldNotCallUpdateConfigMapAndGenerateUserPasswordIfUserExists() { + when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); + + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service, never()).updateConfigMapAndGenerateUserPassword(any(), any(), any()); + } + + @Test + void shouldNotCallCreateOrUpdateSecretIfUserExists() { + when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); + + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service, never()).createOrUpdateSecret(any(), any(), any()); + } + + @Nested + class TestUpdateConfigMapAndGenerateUserPassword { + + @Test + void shouldCallCreateOrGetConfigMap() { + service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, configMapName); + + verify(service).createOrGetConfigMap(configMapNamespace, configMapName); + } + + @Test + void shouldCallGeneratePassword() { + service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, configMapName); + + verify(service).generatePassword(); + } + + @Test + void shouldCallAddUserToUserYaml() { + service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, configMapName); + + verify(service).addUserToUserYaml(any(), any(), any()); + } + + @Test + void shouldCallGetUsersFromConfigMap() { + when(service.createOrGetConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + + service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, configMapName); + + verify(service).getUsersFromConfigMap(configMap); + } + + @Test + void shouldCallUpdateConfigMap() { + String usersYaml = "usersYaml"; + when(service.createOrGetConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(service.generatePassword()).thenReturn(userPassword); + when(service.addUserToUserYaml(users, namespace, userPassword)).thenReturn(usersYaml); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + + service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, configMapName); + + verify(service).updateConfigMap(configMapName, configMap, usersYaml); + } + + @Test + void shouldReturnUserPassword() { + when(service.generatePassword()).thenReturn(userPassword); + + String result = service.updateConfigMapAndGenerateUserPassword(namespace, configMapNamespace, configMapName); + + assertThat(result).isEqualTo(userPassword); + } + + @Nested + class TestCreateOrGetConfigMap { + + @Test + void shouldCallGetConfigMap() { + service.createOrGetConfigMap(configMapNamespace, configMapName); + + verify(service).getConfigMap(configMapNamespace, configMapName); + } + + @Test + void shouldCallCreateConfigMap() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(null); + + service.createOrGetConfigMap(configMapNamespace, configMapName); + + verify(remoteService).createConfigMap(configMapNamespace, configMapName); + } + + @Test + void shouldCreateConfigMap() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(null); + when(remoteService.createConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + + ConfigMap result = service.createOrGetConfigMap(configMapNamespace, configMapName); + + assertThat(result).isEqualTo(configMap); + + } + + @Test + void shouldNotCallCreateConfigMap() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + + service.createOrGetConfigMap(configMapNamespace, configMapName); + + verify(remoteService, never()).createConfigMap(any(), any()); + } + + @Nested + class TestGetConfigMap { + + @Test + void shouldCallGetConfigMap() { + service.getConfigMap(configMapNamespace, configMapName); + + verify(remoteService).getConfigMap(configMapNamespace, configMapName); + } + + @Test + void shouldReturnConfigMap() { + when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + + ConfigMap result = service.getConfigMap(configMapNamespace, configMapName); + + assertThat(result).isEqualTo(configMap); + } + + } + + } + + @Nested + class TestAddUserToUserYaml { + @Test + void shouldCallAddNewUserToList() { + service.addUserToUserYaml(users, namespace, userPassword); + + verify(service).addNewUserToList(eq(users), eq(namespace), anyString()); + } + + @Test + void shouldCallConstructYamlEntries() { + service.addUserToUserYaml(users, namespace, userPassword); + + verify(service).constructYamlEntries(users); + } + + @Test + void shouldReturnUsersYaml() { + when(service.constructYamlEntries(users)).thenReturn("usersYaml"); + + String result = service.addUserToUserYaml(users, namespace, userPassword); + + assertThat(result).isEqualTo("usersYaml"); + } + + @Nested + class TestAddNewUserToList { + @Test + void shouldCallAddUserToList() { + service.addNewUserToList(users, namespace, "passwordHash"); + + verify(users).addUserToList(namespace, "passwordHash", Constants.USER_ROLE); + + } + } + + @Nested + class TestConstructYamlEntries { + @Test + void shouldCallGetUsersList() { + service.constructYamlEntries(users); + + verify(users).getUsersList(); + + } + + @Test + void shouldHaveResultWithCorrectContentStart() { + String result = service.constructYamlEntries(users); + + assertTrue(result.startsWith("fileFormat: 1\nusers:\n")); + } + + @Test + void shouldHaveResultWithCorrectContent() { + when(users.getUsersList()).thenReturn( + OzgCloudElsterTransferConfigMapUserListFactory.create()); + String expectedYaml = "fileFormat: 1\n" + "users:\n" + + " - { login: \"user1\", rolle: \"USER\", credentials: { passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\" }, gruppe: \"user1\" }\n"; + + String result = service.constructYamlEntries(users); + + assertThat(expectedYaml).isEqualTo(result); + } + + @Nested + class TestGetYamlForUser { + @Test + void shouldReturnExpectedYamlForUser() { + Map<String, Object> userEntry = new HashMap<>(); + userEntry.put("login", "user1"); + userEntry.put("rolle", + "USER"); + userEntry.put("gruppe", "user1"); + Map<String, String> credentials = new HashMap<>(); + credentials.put("passwortHash", + "$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a"); + userEntry.put("credentials", credentials); + String expectedYaml = " - { login: \"user1\", rolle: \"USER\", credentials: { passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\" }, gruppe: \"user1\" }"; + + String result = service.getYamlForUser(userEntry); + + assertThat(expectedYaml).isEqualTo(result); + } + + } + + } + + } + + @Nested + class TestUpdateConfigMap { + @Test + void shouldCallUpdateConfigMapData() { + service.updateConfigMap(configMapName, configMap, "usersYaml"); + + verify(remoteService).updateConfigMapData(configMap, usersKey, "usersYaml"); + } + } + + @Nested + class TestGetUsersFromConfigMap { + @Test + void shouldReturnEmptyUserList() { + ConfigMap configMap = new ConfigMap(); + configMap.setData(new HashMap<>()); + + OzgCloudElsterTransferConfigMapUserList result = service.getUsersFromConfigMap(configMap); + + assertThat(result.getUsersList()).isEmpty(); + } + + @Test + void shouldReturnEmptyUserListWhenUsersYamlIsEmpty() { + ConfigMap configMap = new ConfigMap(); + Map<String, String> data = new HashMap<>(); + data.put(usersKey, ""); + configMap.setData(data); + + OzgCloudElsterTransferConfigMapUserList result = service.getUsersFromConfigMap(configMap); + + assertNotNull(result); + assertThat(result.getUsersList()).isEmpty(); + } + + void shouldReturnParsedUserListWhenUsersYamlIsValid() { + ConfigMap configMap = OzgCloudElsterTransferConfigMapFactory.create(); + + OzgCloudElsterTransferConfigMapUserList result = service.getUsersFromConfigMap(configMap); + Map<String, Object> user1 = result.getUsersList().get(0); + + assertThat(result.getUsersList()).hasSize(1); + assertThat(user1.get("login")).isEqualTo("admin"); + assertThat(user1.get("role")).isEqualTo("ADMIN"); + assertThat(user1.get("passwordHash")).isEqualTo("$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a"); + assertThat(user1.get("group")).isEqualTo("Administratoren"); + } + + } + + } + + @Nested + class TestRestartDeployment { + + @Test + void shouldCallRestartDeployment() { + service.restartDeployment(configMapNamespace, deploymentName); + + verify(remoteService).restartDeployment(configMapNamespace, deploymentName); + } + + } + + @Nested + class TestCreateOrUpdateSecret { + + @Test + void shouldCallRestartDeployment() { + service.createOrUpdateSecret(namespace, userPassword, secretName); + + verify(remoteService).createOrUpdateSecret(namespace, userPassword, secretName); + } + + } + + } + + @Nested + class TestDelete { + + @BeforeEach + void setUp() { + ReflectionTestUtils.setField(service, "etrNamespace", "elster-transfer"); + } + + @Test + void shouldCallUserExists() { + service.delete(OzgCloudElsterTransferUserTestFactory.create()); + + verify(service).userExists(namespace, configMapNamespace, configMapName); + } + + @Test + void shouldCallDeleteUser() { + when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); + when(remoteService.getConfigMap(anyString(), + anyString())).thenReturn(configMap); + + service.delete(OzgCloudElsterTransferUserTestFactory.create()); + + verify(service).deleteUser(namespace, configMapNamespace); + } + + @Test + void shouldCallRestartDeployment() { + when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); + when(remoteService.getConfigMap(anyString(), + anyString())).thenReturn(configMap); + + service.delete(OzgCloudElsterTransferUserTestFactory.create()); + + verify(service).restartDeployment(configMapNamespace, deploymentName); + } + + @Test + void shouldNotCallRestartDeploymentIfUserNotExists() { + service.delete(OzgCloudElsterTransferUserTestFactory.create()); + + verify(service, never()).restartDeployment(any(), any()); + } + + @Test + void shouldNotCallDeleteUserIfUserNotExists() { + service.delete(OzgCloudElsterTransferUserTestFactory.create()); + + verify(service, never()).deleteUser(any(), any()); + } + + @Nested + class TestUserExists { + + @Test + void shouldCallGetConfigMap() { + service.userExists(namespace, configMapNamespace, configMapName); + + verify(service).getConfigMap(configMapNamespace, configMapName); + } + + @Test + void shouldCallGetUsersFromConfigMap() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + + service.userExists(namespace, configMapNamespace, configMapName); + + verify(service).getUsersFromConfigMap(configMap); + } + + @Test + void shouldNotCallGetUsersFromConfigMap() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(null); + + service.userExists(namespace, configMapNamespace, configMapName); + + verify(service, never()).getUsersFromConfigMap(any()); + } + + @Test + void shouldCallExistsUser() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + + service.userExists(namespace, configMapNamespace, configMapName); + + verify(users, times(2)).existsUser(namespace); + } + + @Test + void shouldNotCallExistsUser() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(null); + + service.userExists(namespace, configMapNamespace, configMapName); + + verify(users, never()).existsUser(any()); + } + + @Test + void shouldReturnFalseWhenConfigMapNotExists() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(null); + + boolean result = service.userExists(namespace, configMapNamespace, configMapName); + + assertThat(result).isFalse(); + } + + @Test + void shouldReturnTrueWhenConfigMapExistsAndUserExists() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + when(users.existsUser(namespace)).thenReturn(true); + + boolean result = service.userExists(namespace, configMapNamespace, configMapName); + + assertThat(result).isTrue(); + } + + @Test + void shouldReturnFalseWhenConfigMapExistsButUserNotExists() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + when(users.existsUser(namespace)).thenReturn(false); + + boolean result = service.userExists(namespace, configMapNamespace, configMapName); + + assertThat(result).isFalse(); + } + + } + + @Nested + class TestDeleteUser { + + @BeforeEach + void setUp() { + configMap = OzgCloudElsterTransferConfigMapFactory.create(); + when(remoteService.getConfigMap(anyString(), + anyString())).thenReturn(configMap); + } + + @Test + void shouldCallGetConfigMap() { + service.deleteUser(namespace, configMapName); + + verify(service).getConfigMap(configMapNamespace, configMapName); + } + + @Test + void shouldCallGetUsersFromConfigMap() { + service.deleteUser(namespace, configMapName); + + verify(service).getUsersFromConfigMap(configMap); + } + + @Test + void shouldCallRemoveDeleted() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + + service.deleteUser(namespace, configMapName); + + verify(users).removeDeleted(namespace); + } + + @Test + void shouldCallConstructYamlEntries() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + + service.deleteUser(namespace, configMapName); + + verify(service).constructYamlEntries(users); + } + + @Test + void shouldCallUpdateConfigMapData() { + when(service.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + when(service.constructYamlEntries(users)).thenReturn("updatedUsersYaml"); + + service.deleteUser(namespace, configMapName); + + verify(remoteService).updateConfigMapData(configMap, usersKey, "updatedUsersYaml"); + } + + } + + } +} \ No newline at end of file -- GitLab