diff --git a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java
index 0c5b0aba8a6d1b8e31e3eb68d807f8f201dda65d..0af051e0dfa93660def895befd25af55300a1829 100644
--- a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java
+++ b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/OzgCloudElasticsearchServiceTest.java
@@ -441,8 +441,7 @@ class OzgCloudElasticsearchServiceTest {
 					.addToData(SERVER_CERTIFICATE_SECRET_DATA_KEY, SERVER_CERTIFICATE_SECRET_DATA)
 					.build();
 			private static final Secret CREDENTIAL_SECRET = SecretTestFactory.create();
-			@Mock
-			private OzgCloudElasticsearchServerProperties serverProperties;
+
 			@Mock
 			private ResourceAdapter<Secret> resourceAdapter;
 
@@ -480,4 +479,96 @@ class OzgCloudElasticsearchServiceTest {
 			}
 		}
 	}
+
+	@DisplayName("Copy and Update certificate")
+	@Nested
+	class TestCopyAndUpdateCertificate {
+
+		private static final String CERTIFICATE_NAME = "dummySecretName";
+
+		@Mock
+		private Resource<Secret> secretResource;
+
+		@DisplayName("process flow")
+		@Nested
+		class TestProcessFlow {
+
+			@Mock
+			private OzgCloudElasticsearchServerProperties serverProperties;
+
+			@BeforeEach
+			void mock() {
+				when(kubernetesService.getSecretResource(any(), any())).thenReturn(secretResource);
+				when(properties.getCertificateSecretName()).thenReturn(CERTIFICATE_NAME);
+			}
+
+			@Test
+			void shouldGetCertificateSecret() {
+				doNothing().when(service).createOrReplaceCredentialSecret(any(), any());
+
+				service.copyAndUpdateElasticCertificate(NAMESPACE);
+
+				verify(kubernetesService).getSecretResource(NAMESPACE, CERTIFICATE_NAME);
+			}
+
+			@Test
+			void shouldCreateOrUpdate() {
+				doNothing().when(service).createOrReplaceCredentialSecret(any(), any());
+
+				service.copyAndUpdateElasticCertificate(NAMESPACE);
+
+				verify(service).createOrReplaceCredentialSecret(NAMESPACE, secretResource);
+			}
+		}
+
+		@DisplayName("create or replace credential secret")
+		@Nested
+		class TestCreateOrReplaceCredentialSecret {
+
+			private static final String SERVER_CERTIFICATE_SECRET_NAME = LoremIpsum.getInstance().getWords(1);
+			private static final String SERVER_CERTIFICATE_SECRET_DATA_KEY = LoremIpsum.getInstance().getWords(1);
+			private static final String SERVER_CERTIFICATE_SECRET_DATA = LoremIpsum.getInstance().getWords(1);
+			private static final String SERVER_CERTIFICATE_NAMESPACE = LoremIpsum.getInstance().getWords(1);
+			private static final Secret SERVER_CERTIFICATE_SECRET = SecretTestFactory.createBuilder()
+					.addToData(SERVER_CERTIFICATE_SECRET_DATA_KEY, SERVER_CERTIFICATE_SECRET_DATA)
+					.build();
+			private static final Secret CREDENTIAL_SECRET = SecretTestFactory.create();
+
+			@Mock
+			private ResourceAdapter<Secret> resourceAdapter;
+
+			@BeforeEach
+			void mock() {
+				when(properties.getServer()).thenReturn(serverProperties);
+				when(serverProperties.getCertificateSecretName()).thenReturn(SERVER_CERTIFICATE_SECRET_NAME);
+				when(serverProperties.getCertificateSecretDataKey()).thenReturn(SERVER_CERTIFICATE_SECRET_DATA_KEY);
+				when(serverProperties.getCertificateNamespace()).thenReturn(SERVER_CERTIFICATE_NAMESPACE);
+				when(kubernetesService.getSecretResource(any(), any())).thenReturn(secretResource);
+				when(secretResource.get()).thenReturn(SERVER_CERTIFICATE_SECRET);
+				doReturn(resourceAdapter).when(service).createAdapter(any());
+				when(secretHelper.buildCertificateSecret(any(), any())).thenReturn(CREDENTIAL_SECRET);
+			}
+
+			@Test
+			void shouldGetCertificateSecret() {
+				service.createOrReplaceCredentialSecret(NAMESPACE, secretResource);
+
+				verify(kubernetesService).getSecretResource(SERVER_CERTIFICATE_NAMESPACE, SERVER_CERTIFICATE_SECRET_NAME);
+			}
+
+			@Test
+			void shouldBuildSecret() {
+				service.createOrReplaceCredentialSecret(NAMESPACE, secretResource);
+
+				verify(secretHelper).buildCertificateSecret(NAMESPACE, SERVER_CERTIFICATE_SECRET_DATA);
+			}
+
+			@Test
+			void shouldCreateOrReplace() {
+				service.createOrReplaceCredentialSecret(NAMESPACE, secretResource);
+
+				verify(resourceAdapter).createOrReplace(CREDENTIAL_SECRET);
+			}
+		}
+	}
 }
\ No newline at end of file