package dev.fitko.fitconnect.integrationtests; import dev.fitko.fitconnect.api.config.ApplicationConfig; import dev.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup; import dev.fitko.fitconnect.client.factory.ClientFactory; import dev.fitko.fitconnect.client.sender.model.SendableSubmission; import dev.fitko.fitconnect.integrationtests.condition.EnableIfEnvironmentVariablesAreSet; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; @EnableIfEnvironmentVariablesAreSet public class SubscriberClientIT extends IntegrationTestBase { @Test void testListSubmissionsForDestination() { // Given final ApplicationConfig config = getConfigWithCredentialsFromEnvironment("TESTING", true); final var senderClient = ClientFactory.getSenderClient(config); final var subscriberClient = ClientFactory.getSubscriberClient(config); final UUID destinationId = UUID.fromString(System.getenv("TEST_DESTINATION_ID")); final String leikaKey = "urn:de:fim:leika:leistung:99400048079000"; final String serviceName = "Test Service"; final var submissionOne = SendableSubmission.Builder() .setDestination(destinationId) .setServiceType(leikaKey, serviceName) .setJsonData("{ \"data\": \"Beispiel Fachdaten 1\" }") .build(); final var submissionTwo = SendableSubmission.Builder() .setDestination(destinationId) .setServiceType(leikaKey, serviceName) .setJsonData("{ \"data\": \"Beispiel Fachdaten 2\" }") .build(); final var sentSubmissionOne = senderClient.send(submissionOne); final var sentSubmissionTwo = senderClient.send(submissionTwo); Assertions.assertNotNull(sentSubmissionOne); Assertions.assertNotNull(sentSubmissionTwo); // When final Set<SubmissionForPickup> submissions = subscriberClient.getAvailableSubmissionsForDestination(destinationId); // Then Assertions.assertFalse(submissions.isEmpty()); final List<UUID> submissionIds = submissions.stream().map(SubmissionForPickup::getSubmissionId).collect(Collectors.toList()); MatcherAssert.assertThat(submissionIds, Matchers.hasItems(sentSubmissionOne.getSubmissionId(), sentSubmissionTwo.getSubmissionId())); // remove by confirming subscriberClient.requestSubmission(sentSubmissionOne.getSubmissionId()).acceptSubmission(); subscriberClient.requestSubmission(sentSubmissionTwo.getSubmissionId()).acceptSubmission(); } }