diff --git a/ozgcloud-elastic-operator/pom.xml b/ozgcloud-elastic-operator/pom.xml index bc621e55a2acbcce53183bf9a8eaa5d1860dd63d..966dd7378e65d89a06e8909594d8521bc5ee20bf 100644 --- a/ozgcloud-elastic-operator/pom.xml +++ b/ozgcloud-elastic-operator/pom.xml @@ -29,6 +29,37 @@ <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> + + <!-- test --> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>elasticsearch</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.javaoperatorsdk</groupId> + <artifactId>jenvtest-fabric8-client-support</artifactId> + <version>0.9.5</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.javaoperatorsdk</groupId> + <artifactId>jenvtest</artifactId> + <version>0.9.5</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.specto</groupId> + <artifactId>hoverfly-java-junit5</artifactId> + <version>0.13.0</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.specto</groupId> + <artifactId>hoverfly-java</artifactId> + <version>0.13.0</version> + <scope>test</scope> + </dependency> </dependencies> <build> diff --git a/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchProperties.java b/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchProperties.java index 1aeef178a3d96626e24d239a307b702b315adb4b..78d2c7a04e01c74f4c7c3f2e8b0db457ff56b92a 100644 --- a/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchProperties.java +++ b/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchProperties.java @@ -1,11 +1,15 @@ package de.ozgcloud.operator.common.elasticsearch; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; import lombok.Getter; +import lombok.Setter; @Getter +@Setter @ConfigurationProperties("ozgcloud.elastic") +@Configuration public class ElasticSearchProperties { private String namespace; diff --git a/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteService.java b/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteService.java index 76a212790e738ff76499f2818f54d4e729d7f094..af52fe81475d6b6eb4ededb98599e233df52fd3c 100644 --- a/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteService.java +++ b/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteService.java @@ -73,8 +73,8 @@ class ElasticSearchRemoteService { return new RestClientTransport(restClient, new JacksonJsonpMapper()); } - private String getPassword() { - var resource = kubernetesService.getSecretResource(elasticSearchProperties.getNamespace(), ""); + String getPassword() { + var resource = kubernetesService.getSecretResource(elasticSearchProperties.getNamespace(), elasticSearchProperties.getSecretName()); var password = MapUtils.getString(resource.get().getStringData(), elasticSearchProperties.getSecretData()); return password; } diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/ElasticOperatorApplicationTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/ElasticOperatorApplicationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..46680e71500a169bafc453c472785e907ff0eafe --- /dev/null +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/ElasticOperatorApplicationTest.java @@ -0,0 +1,46 @@ +package de.ozgcloud.operator; + +//import org.junit.jupiter.api.BeforeAll; +//import org.junit.jupiter.api.Test; +//import org.springframework.beans.factory.annotation.Autowired; +// +//import io.fabric8.kubernetes.api.model.ConfigMap; +//import io.fabric8.kubernetes.api.model.ConfigMapBuilder; +//import io.fabric8.kubernetes.client.Config; +//import io.fabric8.kubernetes.client.KubernetesClient; +//import io.specto.hoverfly.junit.core.Hoverfly; +// +//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +//@ExtendWith(HoverflyExtension.class) +//class ElasticOperatorApplicationTest { +// +// @Test +// void contextLoads() { // NOSONAR +// } +// +// @Autowired +// KubernetesClient client; +// +// @BeforeAll +// static void setup(Hoverfly hoverfly) { +// System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true"); +// System.setProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY, "false"); +// System.setProperty(Config.KUBERNETES_AUTH_TRYSERVICEACCOUNT_SYSTEM_PROPERTY, +// "false"); +// System.setProperty(Config.KUBERNETES_HTTP2_DISABLE, "true"); +// System.setProperty(Config.KUBERNETES_NAMESPACE_SYSTEM_PROPERTY, "default"); +// +//// hoverfly.simulate(SimulationSource.dsl(service("kubernetes.default.svc") +//// .get("/api/v1/namespaces/default/configmaps/department") +//// .willReturn(success().body(json(buildConfigMap()))))); +// } +// +// private static ConfigMap buildConfigMap() { +// return new ConfigMapBuilder().withNewMetadata() +// .withName("department").withNamespace("default") +// .endMetadata() +// .addToData("application.properties", +// "spring.data.mongodb.uri=mongodb://localhost:27017/test") +// .build(); +// } +//} diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteServiceTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteServiceTest.java index 94334ef7f1126f55f5cd6aad6786e3384d39533a..be55962f5b1d5d5b9a3a4d24c502f7db278d377a 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteServiceTest.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchRemoteServiceTest.java @@ -1,24 +1,70 @@ package de.ozgcloud.operator.common.elasticsearch; +import static org.mockito.Mockito.*; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; + +import org.junit.jupiter.api.Disabled; 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.testcontainers.elasticsearch.ElasticsearchContainer; import de.ozgcloud.operator.common.kubernetes.KubernetesService; +import lombok.SneakyThrows; class ElasticSearchRemoteServiceTest { + @Spy @InjectMocks private ElasticSearchRemoteService service; @Mock private ElasticSearchProperties elasticSearchProperties; @Mock private KubernetesService kubernetesService; - + + private static final String DOCKER_IMAGE_NAME = "docker.elastic.co/elasticsearch/elasticsearch:8.11.3"; + private static final String CONTAINER_PASSWORD = "s3cret"; + private static final String CONTAINER_NAME = "elastic"; + + @Disabled("FIXME: Connection Refused") @DisplayName("Exists index") @Nested class TestExistsIndex { - + + @SneakyThrows + @Test + void shouldTest() { + when(elasticSearchProperties.getHost()).thenReturn("localhost"); + when(elasticSearchProperties.getPort()).thenReturn(9200); + when(elasticSearchProperties.getSecretData()).thenReturn(CONTAINER_NAME); + doReturn(CONTAINER_PASSWORD).when(service).getPassword(); + + var client = service.createClient(CONTAINER_NAME, CONTAINER_PASSWORD); + + try (var container = createContainer()) { + container.getEnvMap().remove("xpack.security.enabled"); +// container.setWaitStrategy(new LogMessageWaitStrategy().withRegEx(".*\"message\":\"started\".*")); + container.start(); + + try { + client.indices().create(builder -> builder.index("test")); + } catch(Exception e) { + e.printStackTrace(); + } + container.stop(); + } + } + + private static ElasticsearchContainer createContainer() { + return new ElasticsearchContainer(DOCKER_IMAGE_NAME) + .withExposedPorts(9200) + .withPassword(CONTAINER_PASSWORD) + .withStartupTimeout(Duration.of(2, ChronoUnit.MINUTES)); + } } -} +} \ No newline at end of file diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchServiceTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchServiceTest.java index 8a60a19dc9d9fbdd4585b45434c62dc9b514d8f4..c3efd5477913c251e90239a5d9199acfad8ec44b 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchServiceTest.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchServiceTest.java @@ -1,6 +1,6 @@ package de.ozgcloud.operator.common.elasticsearch; -import static de.ozgcloud.operator.user.ObjectMetaTestFactory.*; +import static de.ozgcloud.operator.common.kubernetes.NamespaceTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchTest2.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchTest2.java new file mode 100644 index 0000000000000000000000000000000000000000..0357956ac1676f5e01251476aeee460500c04289 --- /dev/null +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/ElasticSearchTest2.java @@ -0,0 +1,195 @@ +package de.ozgcloud.operator.common.elasticsearch; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; + +import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.elasticsearch.client.RestClient; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.testcontainers.elasticsearch.ElasticsearchContainer; + +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.json.jackson.JacksonJsonpMapper; +import co.elastic.clients.transport.rest_client.RestClientTransport; +import lombok.SneakyThrows; + +public class ElasticSearchTest2 { + + private static final String IMAGE_NAME = "docker.elastic.co/elasticsearch/elasticsearch:8.11.3"; + private static final String USER = "elastic"; + private static final String PASSWORD = "s3cret"; + private static final int PORT = 9200; + private static final String SCHEME = "https"; + + private static final ElasticsearchContainer container = new ElasticsearchContainer(IMAGE_NAME) + .withExposedPorts(PORT) + .withPassword(PASSWORD) +// .waitingFor(Wait.forHttps("/").withStartupTimeout(Duration.of(2, ChronoUnit.MINUTES))) + .withStartupTimeout(Duration.of(2, ChronoUnit.MINUTES)); + +// private static final NodeSelector INGEST_NODE_SELECTOR = nodes -> { +// final Iterator<Node> iterator = nodes.iterator(); +// while (iterator.hasNext()) { +// Node node = iterator.next(); +// // roles may be null if we don't know, thus we keep the node in then... +// if (node.getRoles() != null && node.getRoles().isIngest() == false) { +// iterator.remove(); +// } +// } +// }; + private static final String INDEX_NAME = "test_index"; + private static ElasticsearchClient client; + private static RestClient restClient; + + @BeforeAll + public static void startContainer() throws Exception { + container.start(); + + restClient = buildRestClient(); + + client = buildClient(); + } + + private static RestClient buildRestClient() { + var host = new HttpHost("localhost", container.getMappedPort(PORT), SCHEME); + var credentialsProvider = buildCredentialsProvider(); + var builder = RestClient.builder(host); + + builder.setHttpClientConfigCallback(clientBuilder -> { + clientBuilder.setSSLContext(container.createSslContextFromCa()); + clientBuilder.setDefaultCredentialsProvider(credentialsProvider); + return clientBuilder; + }); +// builder.setNodeSelector(INGEST_NODE_SELECTOR); +// final ObjectMapper mapper = new ObjectMapper(); +// mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); +// mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + return builder.build(); + } + + private static BasicCredentialsProvider buildCredentialsProvider() { + var credentialsProvider = new BasicCredentialsProvider(); + credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(USER, PASSWORD)); + return credentialsProvider; + } + + private static ElasticsearchClient buildClient() { +// var transport = new RestClientTransport(restClient, new JacksonJsonpMapper(mapper)); + var transport = new RestClientTransport(restClient, new JacksonJsonpMapper()); + return new ElasticsearchClient(transport); + } + +// @BeforeAll +// public static void startElasticsearchCreateCloudClient() { +// String cloudId = ""; +// String user = "elastic"; +// String password = ""; +// +// // basic auth, preemptive authentication +// final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); +// credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, password)); +// +// final RestClientBuilder builder = RestClient.builder(cloudId); +// builder.setHttpClientConfigCallback(b -> b.setDefaultCredentialsProvider(credentialsProvider)); +// +// client = new RestHighLevelClient(builder); +// productService = new ProductServiceImpl(INDEX, client); +// } + + @DisplayName("Exists index") + @Nested + class TestExistsIndex { + + @Test + void shouldReturnTrueIfExists() { + + } + + @Test + void shouldReturnFalseIfMissing() { + + } + } + + @DisplayName("Create index") + @Nested + class TestCreateIndex { + + @Test + void shouldCreateIndex() { + + } + } + + @SneakyThrows + @Test + void shouldCreateIndex() { + client.indices().create(builder -> builder.index("blubb")); + } + + @AfterAll + public static void closeResources() throws Exception { + restClient.close(); + } + + +// @Test +// public void testClusterVersion() throws Exception { +// // this just exists to index some data, so the index deletion does not fail +// productService.save(createProducts(1)); +// +// final HealthResponse response = client.cluster().health(); +// // check for yellow or green cluster health +// assertThat(response.status()).isNotEqualTo(HealthStatus.Red); +// +// // TODO: add back one async health request request +// CountDownLatch latch = new CountDownLatch(1); +// asyncClient.cluster().health() +// .whenComplete((resp, throwable) -> { +// assertThat(resp.status()).isNotEqualTo(HealthStatus.Red); +// latch.countDown(); +// }); +// latch.await(10, TimeUnit.SECONDS); +// } + +// @Test +// public void indexProductWithoutId() throws Exception { +// Product product = createProducts(1).get(0); +// product.setId(null); +// assertThat(product.getId()).isNull(); +// +// productService.save(product); +// +// assertThat(product.getId()).isNotNull(); +// } +// +// @Test +// public void indexProductWithId() throws Exception { +// Product product = createProducts(1).get(0); +// assertThat(product.getId()).isEqualTo("0"); +// +// productService.save(product); +// +// product = productService.findById("0"); +// assertThat(product.getId()).isEqualTo("0"); +// } + +// @Test +// public void testFindProductById() throws Exception { +// productService.save(createProducts(3)); +// +// final Product product1 = productService.findById("0"); +// assertThat(product1.getId()).isEqualTo("0"); +// final Product product2 = productService.findById("1"); +// assertThat(product2.getId()).isEqualTo("1"); +// final Product product3 = productService.findById("2"); +// assertThat(product3.getId()).isEqualTo("2"); +// } +} \ No newline at end of file diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceITCase.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..88de1719b1fa9bf4e6c29a9b5c75a353fe3f0d01 --- /dev/null +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceITCase.java @@ -0,0 +1,58 @@ +package de.ozgcloud.operator.common.kubernetes; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.extension.ResourceAdapter; +import io.javaoperatorsdk.jenvtest.junit.EnableKubeAPIServer; + +@EnableKubeAPIServer +class KubernetesServiceITCase { + + private static KubernetesClient client; + private static KubernetesService service; + + @BeforeAll + static void init() { + service = new KubernetesService(client); + } + + @DisplayName("Get secret resource") + @Nested + class TestGetSecretResource { + + @Test + void shouldReturnEmptyResourceIfMissing() { + var resource = service.getSecretResource(NamespaceTestFactory.NAMESPACE, SecretTestFactory.NAME); + + assertThat(resource.get()).isNull(); + } + + @Test + void shouldReturnSecretResourceIfExists() { + createNamespace(); + createSecret(); + + var resource = service.getSecretResource(NamespaceTestFactory.NAMESPACE, SecretTestFactory.NAME); + + assertThat(resource.get()).isNotNull(); + } + } + + private void createNamespace() { + var resource = client.namespaces().withName(NamespaceTestFactory.NAMESPACE); + var adapter = new ResourceAdapter<>(resource); + adapter.create(NamespaceTestFactory.create()); + } + + private void createSecret() { + var resource = client.secrets().inNamespace(NamespaceTestFactory.NAMESPACE).withName(SecretTestFactory.NAME); + var adapter = new ResourceAdapter<>(resource); + adapter.create(SecretTestFactory.create()); + } +} \ No newline at end of file diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java index 98cdd53276f540dce2ffb793fb30cf7ad0436488..e93286d3f7300b6e263cf87629b70cf59f2da79f 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java @@ -8,7 +8,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import de.ozgcloud.operator.user.ObjectMetaTestFactory; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.extension.ResourceAdapter; @@ -58,7 +57,7 @@ class KubernetesServiceTest { } private Secret getSecret() { - return service.getSecretResource(ObjectMetaTestFactory.NAMESPACE, SecretTestFactory.NAME).get(); + return service.getSecretResource(NamespaceTestFactory.NAMESPACE, SecretTestFactory.NAME).get(); } } } \ No newline at end of file diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/NamespaceTestFactory.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/NamespaceTestFactory.java index 6c1e6760d5441a75a9d8ea4bd16db7a37ea8d3ee..b4982af7f0898f21c29810ecead06822087ba5c1 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/NamespaceTestFactory.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/NamespaceTestFactory.java @@ -1,16 +1,17 @@ package de.ozgcloud.operator.common.kubernetes; -import de.ozgcloud.operator.user.ObjectMetaTestFactory; import io.fabric8.kubernetes.api.model.Namespace; import io.fabric8.kubernetes.api.model.NamespaceBuilder; public class NamespaceTestFactory { + + public static final String NAMESPACE ="test-namespace"; public static final Namespace create() { return createBuilder().build(); } public static NamespaceBuilder createBuilder() { - return new NamespaceBuilder().withNewMetadata().withName(ObjectMetaTestFactory.NAMESPACE).endMetadata(); + return new NamespaceBuilder().withNewMetadata().withName(NAMESPACE).endMetadata(); } } diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/SecretTestFactory.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/SecretTestFactory.java index ff8a3b337971cd0d78b6fda3da83696f738da59b..9820f6ec977ce5b615273d13f3487d3b492f4f28 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/SecretTestFactory.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/SecretTestFactory.java @@ -1,12 +1,11 @@ package de.ozgcloud.operator.common.kubernetes; -import de.ozgcloud.operator.user.ObjectMetaTestFactory; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.SecretBuilder; public class SecretTestFactory { - public final static String NAME = "secretName"; + public final static String NAME = "secret-name"; public static final Secret create() { return createBuilder().build(); @@ -14,7 +13,7 @@ public class SecretTestFactory { public static final SecretBuilder createBuilder() { var builder = new SecretBuilder(); - builder.withNewMetadata().withName(NAME).withNamespace(ObjectMetaTestFactory.NAMESPACE).endMetadata().build(); + builder.withNewMetadata().withName(NAME).withNamespace(NamespaceTestFactory.NAMESPACE).endMetadata().build(); return builder; } diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java index f04a07e273f02a0607690802f357390cb43b7109..f89dc36b413de237f0fe01c4d39f425afd6a2a6b 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java @@ -14,6 +14,7 @@ import org.mockito.Spy; import de.ozgcloud.operator.CustomResourceStatus; import de.ozgcloud.operator.common.elasticsearch.ElasticSearchService; +import de.ozgcloud.operator.common.kubernetes.NamespaceTestFactory; import de.ozgcloud.operator.common.kubernetes.SecretTestFactory; import io.fabric8.kubernetes.api.model.Secret; import io.javaoperatorsdk.operator.api.reconciler.Context; @@ -63,7 +64,7 @@ class ElasticUserReconcilerTest { void shouldCheckIndex() { reconcile(); - verify(searchService).checkIndex(ObjectMetaTestFactory.NAMESPACE); + verify(searchService).checkIndex(NamespaceTestFactory.NAMESPACE); } @SneakyThrows @@ -71,7 +72,7 @@ class ElasticUserReconcilerTest { void shouldCheckSecurityRole() { reconcile(); - verify(searchService).checkSecurityRole(ObjectMetaTestFactory.NAMESPACE); + verify(searchService).checkSecurityRole(NamespaceTestFactory.NAMESPACE); } @SneakyThrows @@ -79,7 +80,7 @@ class ElasticUserReconcilerTest { void shouldCheckSecurityUser() { reconcile(); - verify(searchService).checkSecurityUser(ObjectMetaTestFactory.NAMESPACE, PASSWORD); + verify(searchService).checkSecurityUser(NamespaceTestFactory.NAMESPACE, PASSWORD); } } diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java index 88f2365f011cea12eee87f9dac43f7467cf8b171..5851373fb7bfb90163a9991d71788dc32e7727ad 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java @@ -12,6 +12,7 @@ import org.mockito.Mock; import org.mockito.Spy; import de.ozgcloud.operator.common.elasticsearch.ElasticSearchProperties; +import de.ozgcloud.operator.common.kubernetes.NamespaceTestFactory; import de.ozgcloud.operator.common.kubernetes.SecretTestFactory; import io.fabric8.kubernetes.api.model.Secret; @@ -58,7 +59,7 @@ class ElasticUserSecretBuilderTest { void shouldContainNamespace() { var secret = buildCredentialSecret(); - assertThat(secret.getMetadata().getNamespace()).isEqualTo(ObjectMetaTestFactory.NAMESPACE); + assertThat(secret.getMetadata().getNamespace()).isEqualTo(NamespaceTestFactory.NAMESPACE); } } @@ -92,7 +93,7 @@ class ElasticUserSecretBuilderTest { void shouldContainIndex() { var secret = buildCredentialSecret(); - assertThat(secret.getStringData()).containsEntry(ElasticSecretHelper.SECRET_INDEX_FIELD, ObjectMetaTestFactory.NAMESPACE); + assertThat(secret.getStringData()).containsEntry(ElasticSecretHelper.SECRET_INDEX_FIELD, NamespaceTestFactory.NAMESPACE); } @Test @@ -107,11 +108,11 @@ class ElasticUserSecretBuilderTest { void shouldContainUsername() { var secret = buildCredentialSecret(); - assertThat(secret.getStringData()).containsEntry(ElasticSecretHelper.SECRET_USERNAME_FIELD, ObjectMetaTestFactory.NAMESPACE); + assertThat(secret.getStringData()).containsEntry(ElasticSecretHelper.SECRET_USERNAME_FIELD, NamespaceTestFactory.NAMESPACE); } private Secret buildCredentialSecret() { - return builder.buildCredentialSecret(ObjectMetaTestFactory.NAMESPACE, SecretTestFactory.NAME); + return builder.buildCredentialSecret(NamespaceTestFactory.NAMESPACE, SecretTestFactory.NAME); } } } diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserServiceTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserServiceTest.java index e9380b124c265cf632c4ed5bedef512f4180a4a3..6fa99ce1fb6af4d9fd4299323392646e6106f2e5 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserServiceTest.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserServiceTest.java @@ -13,6 +13,7 @@ import org.mockito.Mock; import org.mockito.Spy; import de.ozgcloud.operator.common.kubernetes.KubernetesService; +import de.ozgcloud.operator.common.kubernetes.NamespaceTestFactory; import de.ozgcloud.operator.common.kubernetes.SecretTestFactory; import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.client.dsl.Resource; @@ -54,7 +55,7 @@ class ElasticUserServiceTest { void shouldGetSecret() { service.getOrCreateCredentialSecret(resource, context); - verify(kubernetesService).getSecretResource(ObjectMetaTestFactory.NAMESPACE, ElasticUserService.ELASTIC_USER_SECRET_NAME); + verify(kubernetesService).getSecretResource(NamespaceTestFactory.NAMESPACE, ElasticUserService.ELASTIC_USER_SECRET_NAME); } @DisplayName("on existing") @@ -84,7 +85,7 @@ class ElasticUserServiceTest { void shouldBuildSecret() { service.getOrCreateCredentialSecret(resource, context); - verify(secretHelper).buildCredentialSecret(ObjectMetaTestFactory.NAMESPACE, ElasticUserService.ELASTIC_USER_SECRET_NAME); + verify(secretHelper).buildCredentialSecret(NamespaceTestFactory.NAMESPACE, ElasticUserService.ELASTIC_USER_SECRET_NAME); } @Test diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ObjectMetaTestFactory.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ObjectMetaTestFactory.java index 817ff947b80cd762ed1d2faa9274518375777c77..9a1a120460dd9c720841c45c4542ad1757f1e880 100644 --- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ObjectMetaTestFactory.java +++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ObjectMetaTestFactory.java @@ -1,14 +1,13 @@ package de.ozgcloud.operator.user; +import de.ozgcloud.operator.common.kubernetes.NamespaceTestFactory; import io.fabric8.kubernetes.api.model.ObjectMeta; public class ObjectMetaTestFactory { - - public static final String NAMESPACE ="TestNamespace"; public static ObjectMeta create() { var objectMeta = new ObjectMeta(); - objectMeta.setNamespace(NAMESPACE); + objectMeta.setNamespace(NamespaceTestFactory.NAMESPACE); return objectMeta; } diff --git a/ozgcloud-elastic-operator/src/test/resources/application.yml b/ozgcloud-elastic-operator/src/test/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..1154419c5a8c12808b905389395e025d716d4381 --- /dev/null +++ b/ozgcloud-elastic-operator/src/test/resources/application.yml @@ -0,0 +1,8 @@ +ozgcloud: + elastic: + namespace: elastic-system + secretName: ozg-search-cluster-es-elastic-user + secretData: elastic + host: https://ozg-search-cluster-es-http + address: ozg-search-cluster-es-http.elastic-system + port: 9200 \ No newline at end of file