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 752f4b01e2627443ecbb3dcd805863d9630b7954..efeb0f6812edd33f00c9e383dfee2c6f76df5ac1 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java @@ -1,7 +1,6 @@ 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; @@ -32,10 +31,10 @@ public class OzgCloudElsterTransferUserService { 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); + LOG.info("Restarting Deployment"); + restartDeployment(ETR_NAMESPACE, ETR_DEPLOYMENT_NAME); + LOG.info("Creating Secret"); + createOrUpdateSecret(namespace, userPassword, MUK_USER_SECRET_NAME); } } @@ -72,9 +71,9 @@ public class OzgCloudElsterTransferUserService { String usersYaml = ""; ConfigMapUserList users; if (configMap != null) { - users = getUsersFromConfigMap(configMap); + users = getUsersFromConfigMap(configMap); } else { - users = new ConfigMapUserList(new ArrayList<>()); + users = new ConfigMapUserList(new ArrayList<>()); } // use namespace as user "login" and "group" @@ -161,7 +160,7 @@ public class OzgCloudElsterTransferUserService { return sb.toString(); } - String generatePassword() { + String generatePassword() { return UUID.randomUUID().toString(); } diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserListTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserListTest.java new file mode 100644 index 0000000000000000000000000000000000000000..cf9526e62cc0def263ca4e5a07a35c64a03acff6 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserListTest.java @@ -0,0 +1,95 @@ +package de.ozgcloud.operator.elstertransfer.user; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.util.*; + +import static org.junit.jupiter.api.Assertions.*; + +class ConfigMapUserListTest { + + private ConfigMapUserList configMapUserList; + private List<Map<String, Object>> users; + + @BeforeEach + void setUp() { + users = new ArrayList<>(); + Map<String, Object> user = Map.of( + "login", "user1", + "rolle", "USER", + "credentials", Map.of("passwortHash", "$2a$12$abc123"), + "gruppe", "user1" + ); + users.add(user); + configMapUserList = new ConfigMapUserList(users); + } + + @Nested + class ExistsUserTests { + @Test + void shouldReturnTrueWhenUserExists() { + assertTrue(configMapUserList.existsUser("user1")); + } + + @Test + void shouldReturnFalseWhenUserDoesNotExist() { + assertFalse(configMapUserList.existsUser("nonExistentUser")); + } + } + + @Nested + class AddUserTests { + @Test + void shouldAddUserCorrectly() { + configMapUserList.addUserToList("newUser", "$2a$12$newHash", "USER"); + + assertTrue(configMapUserList.existsUser("newUser")); + + Map<String, Object> addedUser = configMapUserList.getUsersList() + .stream() + .filter(user -> "newUser".equals(user.get("login"))) + .findFirst() + .orElseThrow(); + + assertEquals("USER", addedUser.get("rolle")); + assertEquals(Map.of("passwortHash", "$2a$12$newHash"), addedUser.get("credentials")); + assertEquals("newUser", addedUser.get("gruppe")); + } + } + + @Nested + class RemoveUserTests { + @Test + void shouldRemoveUserCorrectly() { + configMapUserList.removeDeleted("user1"); + + assertFalse(configMapUserList.existsUser("user1")); + } + } + + @Nested + class GetUsersListTests { + + @Test + void shouldReturnCurrentUsersList() { + List<Map<String, Object>> userList = configMapUserList.getUsersList(); + + assertEquals(1, userList.size()); + + Map<String, Object> user = userList.get(0); + assertEquals("user1", user.get("login")); + assertEquals("USER", user.get("rolle")); + assertEquals(Map.of("passwortHash", "$2a$12$abc123"), user.get("credentials")); + assertEquals("user1", user.get("gruppe")); + } + + @Test + void shouldReturnEmptyListIfNoUsers() { + ConfigMapUserList emptyConfigMapUserList = new ConfigMapUserList(new ArrayList<>()); + + assertTrue(emptyConfigMapUserList.getUsersList().isEmpty(), "Users list should be empty"); + } + } +} 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 f2262af9a3b705f0297448a46a1362b723707392..82051a243627db24d080b5ec7107eb561dbc0308 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserRemoteServiceTest.java @@ -71,7 +71,7 @@ class OzgCloudElsterTransferUserRemoteServiceTest { 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; - //todo + // todo private static final String configmapNamespace = "etr-user-creation"; @DisplayName("test ConfigMap") 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 e7266e21715684fcc48906eda62bbf5650c2dc1c..f64ca260ee4c1b8bc16479b856f62d722bc0ae26 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java @@ -83,6 +83,24 @@ class OzgCloudElsterTransferUserServiceTest { verify(service).createOrUpdateSecret(namespace, psw, secretName); } + @Test + void shouldNotCallRestartDeployment() { + when(service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName)).thenReturn(""); + + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service, never()).restartDeployment(any(), any()); + } + + @Test + void shouldNotCallCreateOrUpdateSecret() { + when(service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName)).thenReturn(""); + + service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); + + verify(service, never()).createOrUpdateSecret(any(), any(), any()); + } + } @Nested @@ -134,14 +152,12 @@ class OzgCloudElsterTransferUserServiceTest { String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); - when(users.getUsersList()).thenReturn(List.of(Map.of( "login", "testUser", "rolle", "USER", "credentials", Map.of("passwortHash", "hashedPassword"), "gruppe", "testGroup"))); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); @@ -166,7 +182,6 @@ class OzgCloudElsterTransferUserServiceTest { String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); - OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(false); @@ -181,7 +196,6 @@ class OzgCloudElsterTransferUserServiceTest { String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); - when(users.getUsersList()).thenReturn(List.of(Map.of( "login", "testUser", "rolle", "USER", @@ -249,6 +263,24 @@ class OzgCloudElsterTransferUserServiceTest { 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.generateUsersYamlAndUpdateConfigMap(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.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName); + + assertFalse(userPassword.isEmpty()); + } + @Test void shouldCalladdUserToUserYaml() { service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName);