diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserList.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserList.java similarity index 69% rename from src/main/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserList.java rename to src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserList.java index f0e1b13d4cedc1fdcb25034126ba44befd8deb68..4c6b1a30c6d1aa9ced1a6199796c8c279fe63a90 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserList.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserList.java @@ -1,6 +1,5 @@ package de.ozgcloud.operator.elstertransfer.user; - import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -10,15 +9,15 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @Builder -public class ConfigMapUserList { +public class OzgCloudElsterTransferConfigMapUserList { private List<Map<String, Object>> usersList; - public ConfigMapUserList(List<Map<String, Object>> usersList) { - this.usersList = usersList; + public OzgCloudElsterTransferConfigMapUserList(List<Map<String, Object>> usersList) { + this.usersList = new ArrayList<>(usersList); } - boolean existsUser(String login){ + boolean existsUser(String login) { for (Map<String, Object> existingUser : usersList) { if (login.equals(existingUser.get("login"))) { return true; @@ -27,7 +26,6 @@ public class ConfigMapUserList { return false; } - void addUserToList(String login, String passwordHash, String role) { Map<String, Object> formattedUser = Map.of( "login", login, @@ -37,11 +35,12 @@ public class ConfigMapUserList { usersList.add(formattedUser); } - void removeDeleted(String userLogin){ + void removeDeleted(String userLogin) { usersList.removeIf(userMap -> userLogin.equals(userMap.get("login"))); } - //TODO Prüfen, ob diese Methode tatsächlich gebraucht wird! Sonst überall mit der Klasse arbeiten. + // TODO Prüfen, ob diese Methode tatsächlich gebraucht wird! Sonst überall mit + // der Klasse arbeiten. public List<Map<String, Object>> getUsersList() { return usersList; } 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 efeb0f6812edd33f00c9e383dfee2c6f76df5ac1..23c4ea08ad9fd1f64c3277b4e96caf6b6663e0c3 100644 --- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java +++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java @@ -69,11 +69,11 @@ public class OzgCloudElsterTransferUserService { String addUserToUserYaml(String namespace, ConfigMap configMap, String userPassword) { String usersYaml = ""; - ConfigMapUserList users; + OzgCloudElsterTransferConfigMapUserList users; if (configMap != null) { users = getUsersFromConfigMap(configMap); } else { - users = new ConfigMapUserList(new ArrayList<>()); + users = new OzgCloudElsterTransferConfigMapUserList(new ArrayList<>()); } // use namespace as user "login" and "group" @@ -102,7 +102,7 @@ public class OzgCloudElsterTransferUserService { boolean userExists(String userLogin, String configMapNamespace, String configMapName) { ConfigMap configMap = remoteService.getConfigMap(configMapNamespace, configMapName); - ConfigMapUserList users = getUsersFromConfigMap(configMap); + OzgCloudElsterTransferConfigMapUserList users = getUsersFromConfigMap(configMap); boolean userExists = users.existsUser(userLogin); LOG.info("User with login '{}' exists in ConfigMap '{}'", userLogin, configMapName); return userExists; @@ -111,7 +111,7 @@ public class OzgCloudElsterTransferUserService { void deleteUser(String userLogin, String configMapName) { ConfigMap configMap = remoteService.getConfigMap(ETR_NAMESPACE, configMapName); - ConfigMapUserList usersList = getUsersFromConfigMap(configMap); + OzgCloudElsterTransferConfigMapUserList usersList = getUsersFromConfigMap(configMap); usersList.removeDeleted(userLogin); String updatedUsersYaml = constructYamlEntries(usersList); @@ -124,22 +124,22 @@ public class OzgCloudElsterTransferUserService { LOG.info("Secret for user in namespace '{}' created successfully", namespace); } - ConfigMapUserList getUsersFromConfigMap(ConfigMap configMap) { + OzgCloudElsterTransferConfigMapUserList getUsersFromConfigMap(ConfigMap configMap) { String usersYaml = configMap.getData().get(USERS_KEY); Map<String, Object> load = new Yaml().load(usersYaml); List<Map<String, Object>> usersList = (List<Map<String, Object>>) load.get("users"); - return new ConfigMapUserList(usersList); + return new OzgCloudElsterTransferConfigMapUserList(usersList); } - boolean userExistsInList(ConfigMapUserList usersList, String login) { + boolean userExistsInList(OzgCloudElsterTransferConfigMapUserList usersList, String login) { return usersList.existsUser(login); } - void addNewUserToList(ConfigMapUserList usersList, String login, String passwordHash) { + void addNewUserToList(OzgCloudElsterTransferConfigMapUserList usersList, String login, String passwordHash) { usersList.addUserToList(login, passwordHash, USER_ROLE); } - String constructYamlEntries(ConfigMapUserList userList) { + String constructYamlEntries(OzgCloudElsterTransferConfigMapUserList userList) { List<Map<String, Object>> usersList = userList.getUsersList(); StringBuilder usersYaml = new StringBuilder(); usersYaml.append("fileFormat: 1\nusers:\n"); diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserListTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserListTest.java deleted file mode 100644 index cf9526e62cc0def263ca4e5a07a35c64a03acff6..0000000000000000000000000000000000000000 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/ConfigMapUserListTest.java +++ /dev/null @@ -1,95 +0,0 @@ -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/OzgCloudElsterTransferConfigMapFactory.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..5b643cbf8acbe49649b4f4f06dfaae6bfbb3d821 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapFactory.java @@ -0,0 +1,33 @@ +package de.ozgcloud.operator.elstertransfer.user; + +import java.util.HashMap; +import java.util.Map; + +import io.fabric8.kubernetes.api.model.ConfigMap; +import io.fabric8.kubernetes.api.model.ConfigMapBuilder; + +public class OzgCloudElsterTransferConfigMapFactory { + private static final String CONFIG_MAP_NAME = "etr-user-config"; + private static final String USERS_KEY = "users.yaml"; + + public static ConfigMap create() { + String usersYaml = "fileFormat: 1\n" + + "users:\n" + + " - login: \"admin\"\n" + + " rolle: \"ADMIN\"\n" + + " credentials:\n" + + " passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\"\n" + + " gruppe: \"Administratoren\"\n"; + + Map<String, String> data = new HashMap<>(); + data.put(USERS_KEY, usersYaml); + ConfigMap configMap = new ConfigMapBuilder() + .withNewMetadata() + .withName(CONFIG_MAP_NAME) + .endMetadata() + .withData(data) + .build(); + return configMap; + } + +} diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListFactory.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..42b6a4da500b43ae7846b6ae3bef1b7ecbaea511 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListFactory.java @@ -0,0 +1,22 @@ +package de.ozgcloud.operator.elstertransfer.user; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class OzgCloudElsterTransferConfigMapUserListFactory { + + public static List<Map<String, Object>> create() { + Map<String, Object> user1 = new HashMap<>(); + user1.put("login", "user1"); + user1.put("rolle", "USER"); + user1.put("gruppe", "user1"); + Map<String, String> credentials = new HashMap<>(); + credentials.put("passwortHash", "$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a"); + user1.put("credentials", credentials); + List<Map<String, Object>> usersList = Arrays.asList(user1); + return usersList; + } + +} diff --git a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListTest.java b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListTest.java new file mode 100644 index 0000000000000000000000000000000000000000..5ca2987f257db8d1fe720ee64224545157dd21d3 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferConfigMapUserListTest.java @@ -0,0 +1,91 @@ +package de.ozgcloud.operator.elstertransfer.user; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +class OzgCloudElsterTransferConfigMapUserListTest { + + private OzgCloudElsterTransferConfigMapUserList configMapUserList; + + @BeforeEach + void setUp() { + configMapUserList = new OzgCloudElsterTransferConfigMapUserList(OzgCloudElsterTransferConfigMapUserListFactory.create()); + } + + @Nested + class ExistsUserTests { + @Test + void shouldReturnTrueWhenUserExists() { + assertTrue(configMapUserList.existsUser("user1")); + } + + @Test + void shouldReturnFalseWhenUserDoesNotExist() { + assertFalse(configMapUserList.existsUser("nonExistentUser")); + } + } + + @Nested + class AddUserTests { + @Test + void shouldAddUser() { + configMapUserList.addUserToList("newUser", "$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a", "USER"); + + assertTrue(configMapUserList.existsUser("newUser")); + } + + @Test + void shouldAddUserWithCorrectInput() { + configMapUserList.addUserToList("newUser", "$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a", "USER"); + 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$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a"), 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(); + Map<String, Object> user = userList.get(0); + + assertEquals(1, userList.size()); + assertEquals("user1", user.get("login")); + assertEquals("USER", user.get("rolle")); + assertEquals(Map.of("passwortHash", "$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a"), user.get("credentials")); + assertEquals("user1", user.get("gruppe")); + } + + @Test + void shouldReturnEmptyListIfNoUsers() { + OzgCloudElsterTransferConfigMapUserList emptyConfigMapUserList = new OzgCloudElsterTransferConfigMapUserList(new ArrayList<>()); + + assertTrue(emptyConfigMapUserList.getUsersList().isEmpty()); + } + } +} 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 f64ca260ee4c1b8bc16479b856f62d722bc0ae26..2fa129108811c51895d83482227154b736b70833 100644 --- a/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserServiceTest.java @@ -4,7 +4,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -32,7 +31,7 @@ class OzgCloudElsterTransferUserServiceTest { private ConfigMap configMap; @Mock - private ConfigMapUserList users; + private OzgCloudElsterTransferConfigMapUserList users; private static final String namespace = OzgCloudElsterTransferUserTestFactory.METADATA_NAMESPACE; private static final String configMapName = OzgCloudElsterTransferUserTestFactory.CONFIG_MAP_NAME; @@ -46,20 +45,14 @@ class OzgCloudElsterTransferUserServiceTest { @BeforeEach void setUp() { - String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; - when(configMap.getData()).thenReturn(Map.of(usersKey, mockedUsersYaml)); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); 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(users.getUsersList()).thenReturn(OzgCloudElsterTransferConfigMapUserListFactory.create()); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); } @Test void shouldCallGenerateUsersYamlAndUpdateConfigMap() { - service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); verify(service).generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName); @@ -67,7 +60,6 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallRestartDeployment() { - service.updateConfigMapAndRestartDeploymentAndCreateSecret(namespace); verify(service).restartDeployment(configMapNamespace, deploymentName); @@ -100,7 +92,7 @@ class OzgCloudElsterTransferUserServiceTest { verify(service, never()).createOrUpdateSecret(any(), any(), any()); } - + } @Nested @@ -109,10 +101,8 @@ class OzgCloudElsterTransferUserServiceTest { @Test void keepAfterDeleteShouldReturnFalseAsDefault() { - String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; - when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); - OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); @@ -123,13 +113,10 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallUserExists() { - String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; - when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); - OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); - - service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(user); + service.deleteUserAndRestartDeploymentIfNotKeepUserAndUserExists(OzgCloudElsterTransferUserTestFactory.create()); verify(service).userExists(namespace, configMapNamespace, configMapName); @@ -149,14 +136,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallDeleteUser() { - String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; - when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); 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(users.getUsersList()).thenReturn(OzgCloudElsterTransferConfigMapUserListFactory.create()); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); @@ -179,8 +161,7 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldNotCallDeleteUserOrRestartDeploymentIfUserNotExists() { - String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; - when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(false); @@ -193,16 +174,10 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallRestartDeployment() { - String mockedUsersYaml = "fileFormat: 1\nusers:\n - login: testUser\n"; - when(configMap.getData()).thenReturn(Map.of("users.yaml", mockedUsersYaml)); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); 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(users.getUsersList()).thenReturn(OzgCloudElsterTransferConfigMapUserListFactory.create()); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - OzgCloudElsterTransferUser user = OzgCloudElsterTransferUserTestFactory.create(); when(service.userExists(namespace, configMapNamespace, configMapName)).thenReturn(true); @@ -218,15 +193,13 @@ class OzgCloudElsterTransferUserServiceTest { @BeforeEach public void setUp() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(remoteService.getConfigMap(anyString(), anyString())).thenReturn(configMap); } - @Test + @Test void shouldNotCallCreateConfigMap() { - when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); + when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName); @@ -254,10 +227,11 @@ class OzgCloudElsterTransferUserServiceTest { verify(service).updateConfigMap(eq(configMapNamespace), eq(configMapName), eq(configMap), anyString()); } - @Test + @Test void shouldNotCallUpdateConfigMap() { - when(service.generatePassword()).thenReturn("psw"); - when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn(""); + when(service.generatePassword()).thenReturn("psw"); + when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn(""); + service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName); verify(service, never()).updateConfigMap(any(), any(), any(), anyString()); @@ -265,8 +239,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldSetUserPSEmptyWWhenUserYamlEmpty() { - when(service.generatePassword()).thenReturn("psw"); - when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn(""); + when(service.generatePassword()).thenReturn("psw"); + when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn(""); + String userPassword = service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName); assertTrue(userPassword.isEmpty()); @@ -274,8 +249,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldSetUserPSWWhenUserYamlNotEmpty() { - when(service.generatePassword()).thenReturn("psw"); - when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn("someYaml"); + when(service.generatePassword()).thenReturn("psw"); + when(service.addUserToUserYaml(namespace, configMap, "psw")).thenReturn("someYaml"); + String userPassword = service.generateUsersYamlAndUpdateConfigMap(namespace, configMapNamespace, configMapName); assertFalse(userPassword.isEmpty()); @@ -291,13 +267,11 @@ class OzgCloudElsterTransferUserServiceTest { } @Nested - class addUserToUserYamlTests { + class addUserToUserYamlTests { @Test void shouldCallgetUsersFromConfigMap() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); service.addUserToUserYaml(namespace, configMap, "password"); @@ -305,7 +279,7 @@ class OzgCloudElsterTransferUserServiceTest { } @Test - void shouldNotCallgetUsersFromConfigMap() { + void shouldNotCallgetUsersFromConfigMap() { service.addUserToUserYaml(namespace, null, "password"); verify(service, never()).getUsersFromConfigMap(any()); @@ -313,15 +287,9 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallUserExistsInList() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); - when(users.getUsersList()).thenReturn(List.of(Map.of( - "login", "testUser", - "rolle", "USER", - "credentials", Map.of("passwortHash", "hashedPassword"), - "gruppe", "testGroup"))); + when(users.getUsersList()).thenReturn(OzgCloudElsterTransferConfigMapUserListFactory.create()); service.addUserToUserYaml(namespace, configMap, "password"); @@ -330,9 +298,7 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallAddNewUserToListWhenUserNotExists() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); service.addUserToUserYaml(namespace, configMap, "password"); @@ -342,9 +308,7 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldCallconstructYamlEntries() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); service.addUserToUserYaml(namespace, configMap, "password"); @@ -354,10 +318,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); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); + when(service.getUsersFromConfigMap(configMap)).thenReturn(users); + when(service.userExistsInList(users, namespace)).thenReturn(false); String userYaml = service.addUserToUserYaml(namespace, configMap, "password"); @@ -366,9 +329,7 @@ class OzgCloudElsterTransferUserServiceTest { @Test void TestUserYamlShouldBeEmpty() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(service.getUsersFromConfigMap(configMap)).thenReturn(users); when(service.userExistsInList(users, namespace)).thenReturn(true); @@ -395,7 +356,6 @@ class OzgCloudElsterTransferUserServiceTest { verify(remoteService, never()).createConfigMap(any(), any()); } - @Test void shouldCallUpdateConfigMapData() { service.updateConfigMap(configMapNamespace, configMapName, configMap, "mockedUsersYaml"); @@ -420,15 +380,12 @@ class OzgCloudElsterTransferUserServiceTest { @BeforeEach public void setUp() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); } @Test void shouldCallGetConfigMap() { - // service.userExists(namespace, configMapNamespace, configMapName); verify(remoteService).getConfigMap(configMapNamespace, configMapName); @@ -473,9 +430,7 @@ class OzgCloudElsterTransferUserServiceTest { class DeleteUserTests { @BeforeEach public void setUp() { - Map<String, String> mockData = new HashMap<>(); - mockData.put("users.yaml", "users: []"); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); when(remoteService.getConfigMap(configMapNamespace, configMapName)).thenReturn(configMap); } @@ -537,34 +492,23 @@ class OzgCloudElsterTransferUserServiceTest { class GetUsersFromConfigMapTests { @BeforeEach public void setUp() { - String usersYaml = "fileFormat: 1\n" + - "users:\n" + - " - login: \"admin\"\n" + - " rolle: \"ADMIN\"\n" + - " credentials:\n" + - " passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\"\n" + - " gruppe: \"Administratoren\"\n"; - - Map<String, String> mockData = new HashMap<>(); - mockData.put(usersKey, usersYaml); - when(configMap.getData()).thenReturn(mockData); + configMap = OzgCloudElsterTransferConfigMapFactory.create(); } @Test void shouldReturnObjectConfigMapUserList() { - - ConfigMapUserList result = service.getUsersFromConfigMap(configMap); + OzgCloudElsterTransferConfigMapUserList result = service.getUsersFromConfigMap(configMap); assertNotNull(result); - assertInstanceOf(ConfigMapUserList.class, result); + assertInstanceOf(OzgCloudElsterTransferConfigMapUserList.class, result); } @Test void shouldReturnConfigMapUserListWithContent() { - - ConfigMapUserList result = service.getUsersFromConfigMap(configMap); + OzgCloudElsterTransferConfigMapUserList result = service.getUsersFromConfigMap(configMap); List<Map<String, Object>> usersList = result.getUsersList(); + assertEquals(1, usersList.size()); } @@ -603,26 +547,12 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldHaveResultWithCorrectContent() { - Map<String, Object> user1 = new HashMap<>(); - user1.put("login", "admin"); - user1.put("rolle", "ADMIN"); - Map<String, Object> user2 = new HashMap<>(); - user2.put("login", "user"); - user2.put("rolle", "USER"); - - List<Map<String, Object>> usersList = Arrays.asList(user1, user2); - when(users.getUsersList()).thenReturn(usersList); - doReturn(" - login: admin\n rolle: ADMIN\n").when(service).getYamlForUser(user1); - doReturn(" - login: user\n rolle: USER\n").when(service).getYamlForUser(user2); - - String result = service.constructYamlEntries(users); - + when(users.getUsersList()).thenReturn(OzgCloudElsterTransferConfigMapUserListFactory.create()); String expectedYaml = "fileFormat: 1\n" + "users:\n" + - " - login: admin\n" + - " rolle: ADMIN\n" + - " - login: user\n" + - " rolle: USER\n"; + " - { login: \"user1\", rolle: \"USER\", credentials: { passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\" }, gruppe: \"user1\" }\n"; + + String result = service.constructYamlEntries(users); assertEquals(expectedYaml, result); } @@ -633,17 +563,16 @@ class OzgCloudElsterTransferUserServiceTest { @Test void shouldReturnExpectedYamlForUser() { Map<String, Object> userEntry = new HashMap<>(); - userEntry.put("login", "admin"); - userEntry.put("rolle", "ADMIN"); - userEntry.put("gruppe", "Administratoren"); + 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); - String expectedYaml = " - { login: \"admin\", rolle: \"ADMIN\", credentials: { passwortHash: \"$2a$12$cqKZMcwTUe/tju7PIFGhperWdV2Xa9o4fVw5eClbzatRhvxZphE1a\" }, gruppe: \"Administratoren\" }\n"; - assertEquals(expectedYaml, result); }