Loading src/test/java/org/etsi/osl/hypo/api/tmf/api/kafka/peering/api/incoming/PeeringApiListenerKafkaTest.java +39 −18 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package org.etsi.osl.hypo.api.tmf.api.kafka.peering.api.incoming; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.etsi.osl.hypo.api.tmf.ServiceCategoriesConstants.FIVE_G_SERVICES; import static org.etsi.osl.hypo.api.tmf.ServiceCategoriesConstants.K8S_SERVICES; import static org.etsi.osl.hypo.api.tmf.common.constants.OssConstants.EAST_WEST_PEERING_FAILURE; Loading @@ -13,6 +14,9 @@ import static org.etsi.osl.hypo.api.tmf.common.constants.OssConstants.UPDATED_PE import static org.etsi.osl.hypo.api.tmf.services.catalog.api.services.ServiceSpecificationService.PEERED_SPECIFICATION_NAME_DELIMITER; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import io.micrometer.common.util.StringUtils; import io.quarkus.test.common.QuarkusTestResource; Loading @@ -28,7 +32,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; import org.awaitility.Awaitility; import org.etsi.osl.hypo.api.tmf.common.api.kafka.peering.api.incoming.PeeringApiListener; import org.etsi.osl.hypo.api.tmf.common.api.kafka.peering.api.incoming.helper.PeeringHelper; import org.etsi.osl.hypo.api.tmf.common.api.services.RelatedPartyService; Loading @@ -53,6 +56,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; @QuarkusTest Loading Loading @@ -128,11 +132,11 @@ class PeeringApiListenerKafkaTest { incomingChannelCreateSpecs.send(peeredOrganizationData); // VERIFY LISTENER METHOD Awaitility.await() await() .atMost(5, SECONDS) .untilAsserted( () -> Mockito.verify(peeringApiListener) verify(peeringApiListener) .addPeeredOrganizationServiceSpecs( argThat(msg -> msg.getPayload().equals(peeredOrganizationData)))); Loading @@ -145,7 +149,7 @@ class PeeringApiListenerKafkaTest { .atMost(DURATION); // VERIFY SUBSEQUENT CALLS Mockito.verify(serviceSpecificationService) verify(serviceSpecificationService) .persistPeeredServiceSpecList(serviceSpecificationEntityList, ORGANIZATION_ID); // ASSERT FIRST SPEC Loading @@ -172,7 +176,7 @@ class PeeringApiListenerKafkaTest { serviceSpecificationEntity, SECOND_SERVICE_SPECIFICATION_NAME)); // ASSERT ORGANIZATION Awaitility.await() await() .atMost(DURATION) .untilAsserted( () -> { Loading Loading @@ -229,11 +233,11 @@ class PeeringApiListenerKafkaTest { // ACT: create the first specification incomingChannelCreateSpecs.send(peeredOrganizationData); Awaitility.await() await() .atMost(5, SECONDS) .untilAsserted( () -> Mockito.verify(peeringApiListener) verify(peeringApiListener) .addPeeredOrganizationServiceSpecs( argThat(msg -> msg.getPayload().equals(peeredOrganizationData)))); Loading Loading @@ -261,11 +265,11 @@ class PeeringApiListenerKafkaTest { incomingChannelUpdateSpecs.send(peeredOrganizationData); Awaitility.await() await() .atMost(5, SECONDS) .untilAsserted( () -> Mockito.verify(peeringApiListener) verify(peeringApiListener) .updatePeeredOrganizationServiceSpecs( argThat(msg -> msg.getPayload().equals(peeredOrganizationData)))); Loading @@ -291,17 +295,16 @@ class PeeringApiListenerKafkaTest { serviceSpecificationService.getSpecificationById(secondSpecificationId); assertThat(secondServiceSpecificationEntityRetrievedFromDatabase).isPresent(); Mockito.verify(serviceSpecificationService, Mockito.times(1)) verify(serviceSpecificationService, Mockito.times(1)) .updateServiceSpecificationViaPeering(any(), any()); Mockito.verify(peeringHelper, Mockito.times(2)).addPeeredServiceSpecs(any()); verify(peeringHelper, Mockito.times(2)).addPeeredServiceSpecs(any()); } @ParameterizedTest @ValueSource(strings = {PEERED_ORGANIZATION_HEARTBEAT_FAILURE, EAST_WEST_PEERING_TERMINATION}) @Order(3) void shouldReceiveHeartBeatFailure(String channelName) { InMemorySource<String> incomingChannelForDeletionOrFailure = connector.source(channelName); String specificationId = SPECIFICATION_ID; Loading Loading @@ -333,6 +336,24 @@ class PeeringApiListenerKafkaTest { .await() .atMost(DURATION); // awaitility call ArgumentCaptor<String> valueCaptor = ArgumentCaptor.captor(); await() .atMost(Duration.ofSeconds(3)) .untilAsserted( () -> verify(organizationService, times(2)) .updatePeeredOrganizationCharacteristic( eq(ORGANIZATION_ID), eq(PEERED_ORGANIZATION), any())); verify(organizationService, times(2)) .updatePeeredOrganizationCharacteristic( eq(ORGANIZATION_ID), eq(PEERED_ORGANIZATION), valueCaptor.capture()); List<String> values = valueCaptor.getAllValues(); assertThat(values).isNotNull().isNotEmpty().hasSize(2).containsExactly("true", "false"); // organization assertions assertThat(relatedPartyService.getOptionalRelatedPartyById(ORGANIZATION_ID)).isPresent(); Organization organizationFromDB = organizationService.getById(ORGANIZATION_ID); Loading @@ -347,17 +368,17 @@ class PeeringApiListenerKafkaTest { assertThat(peeredOrganizationOptional.get().getValue().getValue()).isEqualTo("false"); if (channelName.equals(PEERED_ORGANIZATION_HEARTBEAT_FAILURE)) { Mockito.verify(peeringApiListener) verify(peeringApiListener) .deleteServiceSpecificationsAfterFailedHeartbeat( argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID))); } else if (channelName.equals(EAST_WEST_PEERING_TERMINATION)) { Mockito.verify(peeringApiListener) verify(peeringApiListener) .peeringTermination(argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID))); } Mockito.verify(serviceSpecificationService) verify(serviceSpecificationService) .deleteServiceSpecificationsByOrganizationId(ORGANIZATION_ID); Mockito.verify(organizationService) verify(organizationService) .updatePeeredOrganizationCharacteristic(ORGANIZATION_ID, PEERED_ORGANIZATION, "false"); } Loading @@ -378,9 +399,9 @@ class PeeringApiListenerKafkaTest { assertThat(peeredOrganizationOptional).isPresent(); assertThat(peeredOrganizationOptional.get().getValue().getValue()).isEqualTo("false"); Mockito.verify(peeringApiListener) verify(peeringApiListener) .peeringFailure(argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID))); Mockito.verify(organizationService) verify(organizationService) .updatePeeredOrganizationCharacteristic(ORGANIZATION_ID, PEERED_ORGANIZATION, "false"); } Loading Loading
src/test/java/org/etsi/osl/hypo/api/tmf/api/kafka/peering/api/incoming/PeeringApiListenerKafkaTest.java +39 −18 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package org.etsi.osl.hypo.api.tmf.api.kafka.peering.api.incoming; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.etsi.osl.hypo.api.tmf.ServiceCategoriesConstants.FIVE_G_SERVICES; import static org.etsi.osl.hypo.api.tmf.ServiceCategoriesConstants.K8S_SERVICES; import static org.etsi.osl.hypo.api.tmf.common.constants.OssConstants.EAST_WEST_PEERING_FAILURE; Loading @@ -13,6 +14,9 @@ import static org.etsi.osl.hypo.api.tmf.common.constants.OssConstants.UPDATED_PE import static org.etsi.osl.hypo.api.tmf.services.catalog.api.services.ServiceSpecificationService.PEERED_SPECIFICATION_NAME_DELIMITER; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import io.micrometer.common.util.StringUtils; import io.quarkus.test.common.QuarkusTestResource; Loading @@ -28,7 +32,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; import org.awaitility.Awaitility; import org.etsi.osl.hypo.api.tmf.common.api.kafka.peering.api.incoming.PeeringApiListener; import org.etsi.osl.hypo.api.tmf.common.api.kafka.peering.api.incoming.helper.PeeringHelper; import org.etsi.osl.hypo.api.tmf.common.api.services.RelatedPartyService; Loading @@ -53,6 +56,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; @QuarkusTest Loading Loading @@ -128,11 +132,11 @@ class PeeringApiListenerKafkaTest { incomingChannelCreateSpecs.send(peeredOrganizationData); // VERIFY LISTENER METHOD Awaitility.await() await() .atMost(5, SECONDS) .untilAsserted( () -> Mockito.verify(peeringApiListener) verify(peeringApiListener) .addPeeredOrganizationServiceSpecs( argThat(msg -> msg.getPayload().equals(peeredOrganizationData)))); Loading @@ -145,7 +149,7 @@ class PeeringApiListenerKafkaTest { .atMost(DURATION); // VERIFY SUBSEQUENT CALLS Mockito.verify(serviceSpecificationService) verify(serviceSpecificationService) .persistPeeredServiceSpecList(serviceSpecificationEntityList, ORGANIZATION_ID); // ASSERT FIRST SPEC Loading @@ -172,7 +176,7 @@ class PeeringApiListenerKafkaTest { serviceSpecificationEntity, SECOND_SERVICE_SPECIFICATION_NAME)); // ASSERT ORGANIZATION Awaitility.await() await() .atMost(DURATION) .untilAsserted( () -> { Loading Loading @@ -229,11 +233,11 @@ class PeeringApiListenerKafkaTest { // ACT: create the first specification incomingChannelCreateSpecs.send(peeredOrganizationData); Awaitility.await() await() .atMost(5, SECONDS) .untilAsserted( () -> Mockito.verify(peeringApiListener) verify(peeringApiListener) .addPeeredOrganizationServiceSpecs( argThat(msg -> msg.getPayload().equals(peeredOrganizationData)))); Loading Loading @@ -261,11 +265,11 @@ class PeeringApiListenerKafkaTest { incomingChannelUpdateSpecs.send(peeredOrganizationData); Awaitility.await() await() .atMost(5, SECONDS) .untilAsserted( () -> Mockito.verify(peeringApiListener) verify(peeringApiListener) .updatePeeredOrganizationServiceSpecs( argThat(msg -> msg.getPayload().equals(peeredOrganizationData)))); Loading @@ -291,17 +295,16 @@ class PeeringApiListenerKafkaTest { serviceSpecificationService.getSpecificationById(secondSpecificationId); assertThat(secondServiceSpecificationEntityRetrievedFromDatabase).isPresent(); Mockito.verify(serviceSpecificationService, Mockito.times(1)) verify(serviceSpecificationService, Mockito.times(1)) .updateServiceSpecificationViaPeering(any(), any()); Mockito.verify(peeringHelper, Mockito.times(2)).addPeeredServiceSpecs(any()); verify(peeringHelper, Mockito.times(2)).addPeeredServiceSpecs(any()); } @ParameterizedTest @ValueSource(strings = {PEERED_ORGANIZATION_HEARTBEAT_FAILURE, EAST_WEST_PEERING_TERMINATION}) @Order(3) void shouldReceiveHeartBeatFailure(String channelName) { InMemorySource<String> incomingChannelForDeletionOrFailure = connector.source(channelName); String specificationId = SPECIFICATION_ID; Loading Loading @@ -333,6 +336,24 @@ class PeeringApiListenerKafkaTest { .await() .atMost(DURATION); // awaitility call ArgumentCaptor<String> valueCaptor = ArgumentCaptor.captor(); await() .atMost(Duration.ofSeconds(3)) .untilAsserted( () -> verify(organizationService, times(2)) .updatePeeredOrganizationCharacteristic( eq(ORGANIZATION_ID), eq(PEERED_ORGANIZATION), any())); verify(organizationService, times(2)) .updatePeeredOrganizationCharacteristic( eq(ORGANIZATION_ID), eq(PEERED_ORGANIZATION), valueCaptor.capture()); List<String> values = valueCaptor.getAllValues(); assertThat(values).isNotNull().isNotEmpty().hasSize(2).containsExactly("true", "false"); // organization assertions assertThat(relatedPartyService.getOptionalRelatedPartyById(ORGANIZATION_ID)).isPresent(); Organization organizationFromDB = organizationService.getById(ORGANIZATION_ID); Loading @@ -347,17 +368,17 @@ class PeeringApiListenerKafkaTest { assertThat(peeredOrganizationOptional.get().getValue().getValue()).isEqualTo("false"); if (channelName.equals(PEERED_ORGANIZATION_HEARTBEAT_FAILURE)) { Mockito.verify(peeringApiListener) verify(peeringApiListener) .deleteServiceSpecificationsAfterFailedHeartbeat( argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID))); } else if (channelName.equals(EAST_WEST_PEERING_TERMINATION)) { Mockito.verify(peeringApiListener) verify(peeringApiListener) .peeringTermination(argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID))); } Mockito.verify(serviceSpecificationService) verify(serviceSpecificationService) .deleteServiceSpecificationsByOrganizationId(ORGANIZATION_ID); Mockito.verify(organizationService) verify(organizationService) .updatePeeredOrganizationCharacteristic(ORGANIZATION_ID, PEERED_ORGANIZATION, "false"); } Loading @@ -378,9 +399,9 @@ class PeeringApiListenerKafkaTest { assertThat(peeredOrganizationOptional).isPresent(); assertThat(peeredOrganizationOptional.get().getValue().getValue()).isEqualTo("false"); Mockito.verify(peeringApiListener) verify(peeringApiListener) .peeringFailure(argThat(msg -> msg.getPayload().equals(ORGANIZATION_ID))); Mockito.verify(organizationService) verify(organizationService) .updatePeeredOrganizationCharacteristic(ORGANIZATION_ID, PEERED_ORGANIZATION, "false"); } Loading