diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java index 3ee94d186e7973d2bfd1a484688cfb223be23e55..70e3922dc1f9ef381c95048de545bd127c328bc5 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java @@ -15,6 +15,7 @@ import lombok.extern.log4j.Log4j2; @Log4j2 class BescheidService { + // TODO: Fehlernachricht anpassen private static final String ERROR_MESSAGE_NO_SERVICE = "'CREATE_BESCHEID' Command received but no Bescheid Endpoint is configured."; @Autowired @@ -24,7 +25,7 @@ class BescheidService { @PostConstruct void logStatus() { - if (Objects.isNull(ERROR_MESSAGE_NO_SERVICE)) { + if (Objects.isNull(remoteService)) { LOG.info("No BescheidRemoteService configured - Bescheid creation is not possible."); } else { LOG.info("Bescheid-Manager is configured."); diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidDocumentITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidDocumentITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..2f92bdab4e516fb2f0075e00e2b2591b4b6e00bd --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidDocumentITCase.java @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.bescheid; + +import static de.ozgcloud.bescheid.BescheidEventListener.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import org.awaitility.Awaitility; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.test.mock.mockito.SpyBean; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.test.annotation.DirtiesContext; + +import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; +import de.ozgcloud.command.Command; +import de.ozgcloud.command.CommandCreatedEvent; +import de.ozgcloud.command.CommandFailedEvent; +import de.ozgcloud.common.test.ITCase; +import de.ozgcloud.vorgang.VorgangManagerServerApplication; +import de.ozgcloud.vorgang.command.CommandTestFactory; + +public class BescheidDocumentITCase { + + @Nested + @SpringBootTest(classes = VorgangManagerServerApplication.class) + @ITCase + @DirtiesContext + class TestDocumentProzessorNotConfigured { + + @Autowired + private ApplicationEventPublisher eventPublisher; + @SpyBean + private BescheidEventListener eventListener; + @SpyBean + private TestEventListener testEventListener; + + @MockBean + private CurrentUserService currentUserService; + + @Captor + private ArgumentCaptor<CommandFailedEvent> commandFailedEventCaptor; + + @Test + void shouldFailWhenNoDocumentProcessor() { + var command = buildCreateDocumentCommand(); + + eventPublisher.publishEvent(new CommandCreatedEvent(command)); + + Awaitility.await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> { + verify(testEventListener).onCommandFailed(commandFailedEventCaptor.capture()); + assertThat(commandFailedEventCaptor.getValue().getSource()).isEqualTo(command.getId()); + assertThat(commandFailedEventCaptor.getValue().getErrorMessage()).isNotEmpty(); + }); + + } + + private Command buildCreateDocumentCommand() { + return CommandTestFactory.createBuilder() + .vorgangId("vorgang-id") + .relationId("bescheidItem-id") + .order(BescheidEventListener.CREATE_BESCHEID_DOCUMENT_ORDER) + .bodyObject(Map.of(BESCHEID_VOM_BODYKEY, "2024-01-01", + GENEHMIGT_BODYKEY, true)) + .build(); + } + + } +} diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java index 15dcb732418dc6e62afd04798a13887f79007efd..3459b1eb82b422055ba37bbe8553a184e9c91a7e 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java @@ -41,7 +41,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.event.EventListener; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @@ -167,11 +166,4 @@ class BescheidEventListenerITCase { var fileId = getBescheidDocument().getItem().get(Document.FIELD_DOCUMENT_FILE).toString(); return gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(fileId))); } - - static class TestEventListener { - - @EventListener - public void onBescheidDocumentCreated(BescheidDocumentCreatedEvent event) { - } - } } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/TestEventListener.java b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/TestEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..8bdce71b100372e8673a30b8b2d16b33b2f5d34f --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/TestEventListener.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.bescheid; + +import org.springframework.context.event.EventListener; + +import de.ozgcloud.command.CommandFailedEvent; +import de.ozgcloud.document.BescheidDocumentCreatedEvent; + +public class TestEventListener { + + @EventListener + public void onBescheidDocumentCreated(BescheidDocumentCreatedEvent event) { + } + + @EventListener + public void onCommandFailed(CommandFailedEvent event) { + } +}