Skip to content
Snippets Groups Projects
Commit dc6521a4 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6177 add junittests

parent e4bc8640
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.operator.elstertransfer.user;
import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
import io.fabric8.kubernetes.api.model.ConfigMapList;
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
import io.fabric8.kubernetes.api.model.PodTemplateSpec;
import io.fabric8.kubernetes.api.model.Secret;
import io.fabric8.kubernetes.api.model.SecretBuilder;
import io.fabric8.kubernetes.api.model.SecretList;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentList;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.dsl.Resource;
import io.fabric8.kubernetes.client.dsl.RollableScalableResource;
import io.fabric8.kubernetes.api.model.ObjectMeta;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentSpec;
import io.fabric8.kubernetes.api.model.PodTemplateSpec;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.dsl.AppsAPIGroupDSL;
import io.fabric8.kubernetes.client.dsl.MixedOperation;
import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.mockito.Spy;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
class OzgCloudElsterTransferUserRemoteServiceTest {
@Mock
private KubernetesClient client;
@Mock
private RollableScalableResource<Deployment> deploymentResource;
@Mock
private AppsAPIGroupDSL appsAPIGroupDSL;
@Mock
private Resource<Secret> secretResource;
@Spy
@InjectMocks
private OzgCloudElsterTransferUserRemoteService remoteService;
@Mock
private MixedOperation<Deployment, DeploymentList, RollableScalableResource<Deployment>> deploymentOperation;
@Mock
private MixedOperation<ConfigMap, ConfigMapList, Resource<ConfigMap>> configMapOperation;
@Mock
private NonNamespaceOperation<ConfigMap, ConfigMapList, Resource<ConfigMap>> nonNamespaceOperation;
@Mock
private Resource<ConfigMap> configMapResource;
@Mock
private MixedOperation<Secret, SecretList, Resource<Secret>> secretOperation;
@Mock
private ConfigMap configMap;
private static final String namespace = OzgCloudElsterTransferUserTestFactory.METADATA_NAMESPACE;
private static final String configMapName = OzgCloudElsterTransferUserTestFactory.CONFIG_MAP_NAME;
private static final String deploymentName = OzgCloudElsterTransferUserTestFactory.ETR_DEPLOYMENT_NAME;
private static final String secretName = OzgCloudElsterTransferUserTestFactory.MUK_USER_SECRET_NAME;
private static final String configmapNamespace = "etr-user-creation";
@DisplayName("test configmap")
@Nested
class TestConfigMap {
@BeforeEach
void setUp() {
// MockitoAnnotations.openMocks(this);
when(client.configMaps()).thenReturn(configMapOperation);
when(configMapOperation.inNamespace(configmapNamespace)).thenReturn(nonNamespaceOperation);
}
@Test
void testCallGetConfigMap() {
when(nonNamespaceOperation.withName(configMapName)).thenReturn(configMapResource);
when(configMapResource.get()).thenReturn(configMap);
remoteService.getConfigMap(configmapNamespace, configMapName);
//verify(configMapOperation.inNamespace(namespace).withName(configMapName)).get();
//verify(configMapOperation).inNamespace(configmapNamespace);
//verify(nonNamespaceOperation).withName(configMapName);
//verify(configMapResource).get();
verify(client.configMaps().inNamespace(configmapNamespace).withName(configMapName)).get();
}
@Test
void testCreateConfigMap() {
when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource);
configMap = new ConfigMapBuilder()
.withNewMetadata()
.withName(configMapName)
.endMetadata()
.addToData("key", "value")
.build();
when(configMapResource.create()).thenReturn(configMap);
ConfigMap result = remoteService.createConfigMap(configmapNamespace, configMapName);
assertNotNull(result);
assert configMapName.equals(result.getMetadata().getName());
//
// verify(client).configMaps();
//verify(configMapOperation).inNamespace(configmapNamespace);
// verify(nonNamespaceOperation).resource(any(ConfigMap.class));
// verify(configMapResource).create();
verify(client.configMaps().inNamespace(configmapNamespace).resource(result)).create();
}
@Test
void testUpdateConfigMapData() {
when(nonNamespaceOperation.resource(any(ConfigMap.class))).thenReturn(configMapResource);
String key = "test-key";
String data = "new-data";
Map<String, String> mapData = new HashMap<>();
mapData.put("initial-key", "initial-value");
ConfigMap configMap = new ConfigMap();
configMap.setMetadata(new io.fabric8.kubernetes.api.model.ObjectMeta());
configMap.getMetadata().setNamespace(configmapNamespace);
configMap.setData(mapData);
remoteService.updateConfigMapData(configMap, key, data);
// Assert: Verify the data is updated in the ConfigMap
assert configMap.getData().containsKey(key);
assert "new-data".equals(configMap.getData().get(key));
// Verify interactions with Kubernetes client
verify(client).configMaps();
verify(configMapOperation).inNamespace(configmapNamespace);
verify(nonNamespaceOperation).resource(configMap);
verify(configMapResource).update();
}
}
@DisplayName("restart deployment")
@Nested
class TestRestartDeployment {
Deployment deployment= new Deployment();
@BeforeEach
void setUp() {
deployment.setSpec(new DeploymentSpec());
deployment.getSpec().setTemplate(new PodTemplateSpec());
deployment.getSpec().getTemplate().setMetadata(new ObjectMeta());
}
@Test
void testRestartDeployment() {
when(client.apps()).thenReturn(appsAPIGroupDSL);
when(appsAPIGroupDSL.deployments()).thenReturn(deploymentOperation);
when(deploymentOperation.inNamespace(anyString())).thenReturn(deploymentOperation);
when(deploymentOperation.withName(anyString())).thenReturn(deploymentResource);
when(deploymentResource.get()).thenReturn(deployment);
remoteService.restartDeployment(namespace, deploymentName);
verify(deploymentResource).get();
verify(deploymentResource).replace(deployment);
verify(remoteService).setRestartFlag(deployment);
}
@Test
void testSetRestartFlag() {
Map<String, String> annotations = new HashMap<>();
deployment.getSpec().getTemplate().getMetadata().setAnnotations(annotations);
remoteService.setRestartFlag(deployment);
assert annotations.containsKey("kubectl.kubernetes.io/restartedAt");
assert annotations.get("kubectl.kubernetes.io/restartedAt") != null;
}
}
@Test
void shouldCallCreateOrUpdateSecret() {
when(client.secrets()).thenReturn(secretOperation);
when(secretOperation.inNamespace(anyString())).thenReturn(secretOperation);
when(secretOperation.resource(any(Secret.class))).thenReturn(secretResource);
String userPassword = "test-password";
Secret secret = new SecretBuilder()
.withNewMetadata()
.withName(secretName)
.endMetadata()
.addToData("login", Base64.getEncoder().encodeToString(namespace.getBytes()))
.addToData("password", Base64.getEncoder().encodeToString(userPassword.getBytes()))
.build();
remoteService.createOrUpdateSecret(namespace, userPassword, secretName);
//verify(secretOperation).inNamespace(namespace);
//verify(secretOperation).resource(secret);
// verify(secretResource).createOrReplace();
verify(client.secrets().inNamespace(namespace).resource(secret)).createOrReplace();
}
}
package de.ozgcloud.operator.elstertransfer.user;
public class OzgCloudElsterTransferUserServiceTest {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment