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 e2f43d7540847c99c84563e2e0671cac8a249199..23a43fa9ee92c4d7fa67907fa035d82ee7ea2868 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteService.java @@ -25,12 +25,10 @@ public class OzgCloudElsterTransferUserRemoteService { } public ConfigMap createConfigMap(String configmapNamespace, String configMapName) { - String yaml = "fileFormat: 1\nusers:\n"; ConfigMap configMap = new ConfigMapBuilder() .withNewMetadata() .withName(configMapName) .endMetadata() - .addToData("users.yaml", yaml) .build(); return client.configMaps().inNamespace(configmapNamespace).resource(configMap).create(); } 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 d0a59038f431f35abcb48b19e5aa52e93570da7f..752f4b01e2627443ecbb3dcd805863d9630b7954 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java @@ -1,5 +1,7 @@ package de.ozgcloud.operator.elstertransfer.user; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -29,10 +31,12 @@ public class OzgCloudElsterTransferUserService { public void updateConfigMapAndRestartDeploymentAndCreateSecret(String namespace) { LOG.info("Updating/Creating Configmap"); String userPassword = generateUsersYamlAndUpdateConfigMap(namespace, ETR_NAMESPACE, CONFIG_MAP_NAME); + if (!userPassword.isEmpty()) { LOG.info("Restarting Deployment"); restartDeployment(ETR_NAMESPACE, ETR_DEPLOYMENT_NAME); LOG.info("Creating Secret"); createOrUpdateSecret(namespace, userPassword, MUK_USER_SECRET_NAME); + } } public void deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(OzgCloudElsterTransferUser user) { @@ -54,22 +58,24 @@ public class OzgCloudElsterTransferUserService { String userPassword = generatePassword(); ConfigMap configMap = remoteService.getConfigMap(configmapNamespace, configMapName); - if (configMap == null) { - LOG.debug("Creating ConfigMap '{}' in namespace '{}'", configMapName, configmapNamespace); - configMap = remoteService.createConfigMap(configmapNamespace, configMapName); - } - String usersYaml = addUserToUserYaml(namespace, configMap, userPassword); if (!usersYaml.isEmpty()) { updateConfigMap(configmapNamespace, configMapName, configMap, usersYaml); + } else { + userPassword = ""; } return userPassword; } String addUserToUserYaml(String namespace, ConfigMap configMap, String userPassword) { String usersYaml = ""; - ConfigMapUserList users = getUsersFromConfigMap(configMap); + ConfigMapUserList users; + if (configMap != null) { + users = getUsersFromConfigMap(configMap); + } else { + users = new ConfigMapUserList(new ArrayList<>()); + } // use namespace as user "login" and "group" if (userExistsInList(users, namespace)) { @@ -82,7 +88,10 @@ public class OzgCloudElsterTransferUserService { } void updateConfigMap(String configmapNamespace, String configMapName, ConfigMap configMap, String usersYaml) { - + if (configMap == null) { + LOG.debug("Creating ConfigMap '{}' in namespace '{}'", configMapName, configmapNamespace); + configMap = remoteService.createConfigMap(configmapNamespace, configMapName); + } remoteService.updateConfigMapData(configMap, USERS_KEY, usersYaml); LOG.debug("ConfigMap updated successfully: {}", configMapName); } 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 c1758fd19287d85eb601dbf03e9f9af3217b1371..f2262af9a3b705f0297448a46a1362b723707392 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java @@ -128,7 +128,6 @@ class OzgCloudElsterTransferUserRemoteServiceTest { .withNewMetadata() .withName(configMapName) .endMetadata() - .addToData("users.yaml", "value") .build(); when(configMapResource.create()).thenReturn(configMap); @@ -141,8 +140,6 @@ class OzgCloudElsterTransferUserRemoteServiceTest { assertNotNull(result); assert configMapName.equals(result.getMetadata().getName()); - assert "value".equals(result.getData().get("users.yaml")); - } @Test 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 da257934817f3db976a611cca016511acbf60f82..e7266e21715684fcc48906eda62bbf5650c2dc1c 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java @@ -210,16 +210,6 @@ class OzgCloudElsterTransferUserServiceTest { when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); } - @Test - void shouldCallCreateConfigMap() { - when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(null); - when(remoteService.createConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); - - service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName); - - verify(remoteService).createConfigMap(configMapNamespace, configMapName); - } - @Test void shouldNotCallCreateConfigMap() { when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); @@ -269,24 +259,31 @@ class OzgCloudElsterTransferUserServiceTest { } @Nested - class addUserToUserYamlTests { + class addUserToUserYamlTests { - @BeforeEach - public void setUp() { + @Test + void shouldCallgetUsersFromConfigMap() { Map<String, String> mockData = new HashMap<>(); mockData.put("users.yaml", "users: []"); when(configMap.getData()).thenReturn(mockData); - } - @Test - void shouldCallgetUsersFromConfigMap() { 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() { + Map<String, String> mockData = new HashMap<>(); + mockData.put("users.yaml", "users: []"); + when(configMap.getData()).thenReturn(mockData); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); when(users.getUsersList()).thenReturn(List.of(Map.of( "login", "testUser", @@ -301,6 +298,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallAddNewUserToListWhenUserNotExists() { + Map<String, String> mockData = new HashMap<>(); + mockData.put("users.yaml", "users: []"); + when(configMap.getData()).thenReturn(mockData); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); service.addUserToUserYaml(namespace, configMap, "password"); @@ -310,6 +310,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallconstructYamlEntries() { + Map<String, String> mockData = new HashMap<>(); + mockData.put("users.yaml", "users: []"); + when(configMap.getData()).thenReturn(mockData); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); service.addUserToUserYaml(namespace, configMap, "password"); @@ -319,6 +322,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void TestUserYamlShouldNotBeEmpty() { + Map<String, String> mockData = new HashMap<>(); + mockData.put("users.yaml", "users: []"); + when(configMap.getData()).thenReturn(mockData); // when(service.getUsersFromConfigMap(configMap)).thenReturn(users); String userYaml = service.addUserToUserYaml(namespace, configMap, "password"); @@ -328,6 +334,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void TestUserYamlShouldBeEmpty() { + Map<String, String> mockData = new HashMap<>(); + mockData.put("users.yaml", "users: []"); + when(configMap.getData()).thenReturn(mockData); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); when(service.userExistsInList(users, namespace)).thenReturn(true); @@ -340,13 +349,26 @@ class OzgCloudElsterTransferUserServiceTest { @Nested class UpdateConfigMapTests { + @Test + void shouldCallCreateConfigMapIfConfigMapNotExists() { + service.updateConfigMap(configMapNamespace, configMapName, null, "mockedUsersYaml"); + + verify(remoteService).createConfigMap(configMapNamespace, configMapName); + } + + @Test + void shouldNotCallCreateConfigMapIfConfigMapExists() { + service.updateConfigMap(configMapNamespace, configMapName, configMap, "mockedUsersYaml"); + + verify(remoteService, never()).createConfigMap(any(), any()); + } + @Test void shouldCallUpdateConfigMapData() { service.updateConfigMap(configMapNamespace, configMapName, configMap, "mockedUsersYaml"); verify(remoteService).updateConfigMapData(configMap, usersKey, "mockedUsersYaml"); - verify(remoteService, never()).createConfigMap(any(), any()); } }