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