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