diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java index 8fd50e588aabbf6f67f6af76b760657750e40f3f..ada68e5d7b3dcc83dd1aeacc8998ba32b8702820 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java @@ -44,7 +44,6 @@ import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.binaryfile.BinaryFileService; import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; import de.ozgcloud.bescheid.common.user.UserProfileService; -import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.vorgang.VorgangId; import de.ozgcloud.command.Command; import de.ozgcloud.command.CommandCreatedEvent; @@ -94,14 +93,12 @@ class BescheidEventListener { private final BescheidService service; private final BinaryFileService fileService; - private final NachrichtService nachrichtService; private final AttachedItemService attachedItemService; private final DocumentService documentService; private final ApplicationEventPublisher eventPublisher; private final CurrentUserService userService; private final UserProfileService userProfileService; - private final BescheidFeatureProperties bescheidFeatureProperties; @EventListener(condition = IS_CREATE_BESCHEID) public void onCreateBescheidCommand(CommandCreatedEvent event) { @@ -109,12 +106,6 @@ class BescheidEventListener { } void doCreateBescheid(Command command) { - if (bescheidFeatureProperties.isKielHackathonRoute()) { - var bescheid = doCreateBescheidBiz(command); - nachrichtService.createNachrichtDraft(bescheid); - eventPublisher.publishEvent(new BescheidCreatedEvent(command)); - return; - } var createdItemId = attachedItemService.createBescheidDraft(command); eventPublisher.publishEvent(new BescheidCreatedEvent(command, createdItemId)); } diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidFeatureProperties.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidFeatureProperties.java deleted file mode 100644 index 1b0011890ab72654176613f9dfd31ec1eb41fdc8..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidFeatureProperties.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -import lombok.Getter; -import lombok.Setter; - -@Configuration -@ConfigurationProperties(prefix = "ozgcloud.feature.bescheid") -@Getter -@Setter -public class BescheidFeatureProperties { - - private boolean storeAsDocument = false; - - private boolean kielHackathonRoute = false; -} 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 aa027989797574f34930c1249e922d370029d2da..fb010f5dff17f3406354455944fab3a4f168be2c 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java @@ -26,7 +26,6 @@ import de.ozgcloud.bescheid.attacheditem.AttachedItem; import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.attributes.ClientAttributeService; import de.ozgcloud.bescheid.common.user.UserProfileService; -import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.vorgang.Vorgang; import de.ozgcloud.bescheid.vorgang.VorgangId; import de.ozgcloud.bescheid.vorgang.VorgangService; @@ -43,10 +42,19 @@ import lombok.extern.log4j.Log4j2; class BescheidService { private static final String ERROR_MESSAGE_NO_SERVICE = "No Bescheid Endpoint is configured."; + static final String VORGANG_BESCHEIDEN_ORDER = "VORGANG_BESCHEIDEN"; static final String SUBCOMMANDS_EXECUTION_MODE = "PARALLEL"; static final String SEND_POSTFACH_NACHRICHT_ORDER = "SEND_POSTFACH_NACHRICHT"; + static final String FIELD_POSTFACH_ID = "postfachId"; + static final String FIELD_REPLY_OPTION = "replyOption"; + static final String REPLY_OPTION = "FORBIDDEN"; + static final String FIELD_SUBJECT = "subject"; + static final String FIELD_MAIL_BODY = "mailBody"; + static final String FIELD_ATTACHMENTS = "attachments"; + static final String SUBJECT = "Ihr Bescheid zum Antrag"; + private final VorgangService vorgangService; private final AttachedItemService attachedItemService; private final UserProfileService userProfileService; @@ -210,10 +218,10 @@ class BescheidService { Map<String, Object> buildSendNachrichtCommandBody(AttachedItem bescheidItem, Map<String, Object> postfachAddress) { return Map.of( - NachrichtService.FIELD_REPLY_OPTION, NachrichtService.REPLY_OPTION, - NachrichtService.FIELD_SUBJECT, getNachrichtSubject(bescheidItem).orElse(NachrichtService.SUBJECT), - NachrichtService.FIELD_MAIL_BODY, getNachrichtText(bescheidItem).orElse(StringUtils.EMPTY), - NachrichtService.FIELD_ATTACHMENTS, buildAttachments(bescheidItem), + FIELD_REPLY_OPTION, REPLY_OPTION, + FIELD_SUBJECT, getNachrichtSubject(bescheidItem).orElse(SUBJECT), + FIELD_MAIL_BODY, getNachrichtText(bescheidItem).orElse(StringUtils.EMPTY), + FIELD_ATTACHMENTS, buildAttachments(bescheidItem), Vorgang.ServiceKonto.FIELD_POSTFACH_ADDRESS, postfachAddress); } diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/Nachricht.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/Nachricht.java deleted file mode 100644 index 1f352d1d9efab6714236d1fbd00b01b33c1ea0dc..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/Nachricht.java +++ /dev/null @@ -1,33 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import java.time.ZonedDateTime; - -import de.ozgcloud.bescheid.UserId; -import de.ozgcloud.bescheid.vorgang.Vorgang; -import de.ozgcloud.bescheid.vorgang.VorgangId; -import de.ozgcloud.common.binaryfile.FileId; -import lombok.Builder; -import lombok.Getter; -import lombok.NonNull; - -@Getter -@Builder -public class Nachricht { - - private NachrichtId id; - private VorgangId vorgangId; - - @NonNull - private String subject; - @NonNull - private String mailBody; - - private FileId bescheidFileId; - - @NonNull - private UserId createdBy; - @Builder.Default - private ZonedDateTime createdAt = ZonedDateTime.now(); - - private Vorgang.PostfachAddress postfachAddress; -} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtId.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtId.java deleted file mode 100644 index b8fd29a9345542580177104549207a731e2c7139..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtId.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import de.ozgcloud.common.datatype.StringBasedValue; - -public class NachrichtId extends StringBasedValue { - - NachrichtId(String nachrichtId) { - super(nachrichtId); - } - - public static NachrichtId from(String nachrichtId) { - return new NachrichtId(nachrichtId); - } -} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtMapper.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtMapper.java deleted file mode 100644 index 45bba2af3b3d076f92ed3b114fccd601a52ea2b4..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtMapper.java +++ /dev/null @@ -1,55 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.NullValueCheckStrategy; -import org.mapstruct.ReportingPolicy; - -import de.ozgcloud.bescheid.UserId; -import de.ozgcloud.bescheid.vorgang.Vorgang; -import de.ozgcloud.common.binaryfile.FileId; -import de.ozgcloud.nachrichten.postfach.GrpcPostfachNachricht; -import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper; -import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress; - -@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, // - nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, unmappedTargetPolicy = ReportingPolicy.ERROR, uses = { GrpcObjectMapper.class }) -public interface NachrichtMapper { - - @Mapping(target = "createdAtBytes", ignore = true) - @Mapping(target = "mergePostfachAddress", ignore = true) - @Mapping(target = "mergeFrom", ignore = true) - @Mapping(target = "clearField", ignore = true) - @Mapping(target = "clearOneof", ignore = true) - @Mapping(target = "mergeUnknownFields", ignore = true) - @Mapping(target = "idBytes", ignore = true) - @Mapping(target = "mailBodyBytes", ignore = true) - @Mapping(target = "replyOptionBytes", ignore = true) - @Mapping(target = "subjectBytes", ignore = true) - @Mapping(target = "unknownFields", ignore = true) - @Mapping(target = "allFields", ignore = true) - - @Mapping(target = "id", ignore = true) - @Mapping(target = "attachmentList", source = "bescheidFileId") - @Mapping(target = "replyOption", constant = "FORBIDDEN") - GrpcPostfachNachricht mapToGrpc(Nachricht nachricht); - - @Mapping(target = "mergeFrom", ignore = true) - @Mapping(target = "clearField", ignore = true) - @Mapping(target = "clearOneof", ignore = true) - @Mapping(target = "mergeIdentifier", ignore = true) - @Mapping(target = "mergeUnknownFields", ignore = true) - @Mapping(target = "unknownFields", ignore = true) - @Mapping(target = "versionBytes", ignore = true) - @Mapping(target = "allFields", ignore = true) - GrpcPostfachAddress mapAddress(Vorgang.PostfachAddress address); - - default String mapToString(FileId fileId) { - return fileId.toString(); - } - - default String mapToString(UserId userId) { - return userId.toString(); - } -} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtRemoteService.java deleted file mode 100644 index 594c6eb77ab84ffa026550f5fa4c0c65b1f1b698..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtRemoteService.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import de.ozgcloud.nachrichten.postfach.GrpcSaveNachrichtDraftRequest; -import de.ozgcloud.nachrichten.postfach.PostfachServiceGrpc.PostfachServiceBlockingStub; -import io.grpc.ClientInterceptor; -import net.devh.boot.grpc.client.inject.GrpcClient; - -@Service -class NachrichtRemoteService { - - @GrpcClient("nachrichten-manager") - private PostfachServiceBlockingStub serviceStub; - - @Autowired - private NachrichtMapper mapper; - - @Autowired - private ClientInterceptor bescheidCallContextInterceptor; - - public void saveDraft(Nachricht nachricht) { - serviceStub.withInterceptors(bescheidCallContextInterceptor) - .saveNachrichtDraft(buildRequest(nachricht)); - } - - GrpcSaveNachrichtDraftRequest buildRequest(Nachricht nachricht) { - return GrpcSaveNachrichtDraftRequest.newBuilder() - .setVorgangId(nachricht.getVorgangId().toString()) - .setNachricht(mapper.mapToGrpc(nachricht)) - .build(); - } -} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtService.java deleted file mode 100644 index 4c3655447451ffdd42a19676c0f9216259b16d3c..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/nachricht/NachrichtService.java +++ /dev/null @@ -1,70 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import java.util.Objects; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -import de.ozgcloud.apilib.common.command.OzgCloudCommandService; -import de.ozgcloud.apilib.common.command.grpc.CommandMapper; -import de.ozgcloud.bescheid.Bescheid; -import de.ozgcloud.bescheid.common.freemarker.TemplateHandler; -import de.ozgcloud.bescheid.vorgang.Vorgang.PostfachAddress; -import lombok.extern.log4j.Log4j2; - -@Service -@Log4j2 -public class NachrichtService { - - public static final String FIELD_POSTFACH_ID = "postfachId"; - public static final String FIELD_REPLY_OPTION = "replyOption"; - public static final String REPLY_OPTION = "FORBIDDEN"; - public static final String FIELD_SUBJECT = "subject"; - public static final String FIELD_MAIL_BODY = "mailBody"; - public static final String FIELD_ATTACHMENTS = "attachments"; - public static final String SUBJECT = "Ihr Bescheid zum Antrag"; - - @Autowired - private NachrichtRemoteService remoteService; - @Autowired - @Qualifier("bescheid_OzgCloudCommandService") - private OzgCloudCommandService commandService; - @Autowired - private CommandMapper commandMapper; - @Autowired - private TemplateHandler templateHandler; - - - private static final String TEMPLATE_FILE = "bescheid.nachrichtTemplate.txt.ftlh"; - - public void createNachrichtDraft(Bescheid bescheid) { - buildNachricht(bescheid).ifPresentOrElse(remoteService::saveDraft, () -> LOG.warn("No ServiceKonto given on Vorgang.")); - } - - Optional<Nachricht> buildNachricht(Bescheid bescheid) { - return getAddress(bescheid).map(address -> Nachricht.builder() - .vorgangId(bescheid.getVorgangId()) - .postfachAddress(address) - .subject(bescheid.getNachrichtSubject().orElse(SUBJECT)) - .mailBody(buildMessage(bescheid)) - .createdBy(bescheid.getCreatedBy()) - .bescheidFileId(bescheid.getBescheidFileId()) - .build()); - } - - String buildMessage(Bescheid bescheid) { - return bescheid.getNachrichtText() - .orElseGet(() -> templateHandler.fillTemplate(TEMPLATE_FILE, bescheid)); - } - - Optional<PostfachAddress> getAddress(Bescheid bescheid) { - var serviceKonto = bescheid.getServiceKonto(); - if (Objects.nonNull(serviceKonto)) { - return Optional.of(serviceKonto.getPostfachAddresses().get(0)); - } - return Optional.empty(); - } - -} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java index 6347a9570ea12e841e2c6231ed798394daf809d2..a4c77b54a873cf167eb1ce027467114391322744 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java @@ -33,8 +33,6 @@ class BescheidEventListenerITCase { private ApplicationEventPublisher publisher; @SpyBean private BescheidEventListener listener; - @Autowired - private BescheidFeatureProperties bescheidFeatureProperties; @MockBean private BescheidService service; @@ -62,16 +60,11 @@ class BescheidEventListenerITCase { private final Command command = CommandTestFactory.createBuilder().order(BescheidEventListener.CREATE_BESCHEID_ORDER).build(); - @BeforeEach - void init() { - bescheidFeatureProperties.setKielHackathonRoute(true); - } - @Test void shouldCallService() { publisher.publishEvent(CommandCreatedEventTestFactory.withCommand(command)); - verify(service).createBescheid(any()); + verify(attachedItemService).createBescheidDraft(command); } @Test diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java index 1940fb2bf4294d0d48bfab82be1b5550d7986c00..ba29a266aeb99969217d43cee2a15a485b12718a 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java @@ -32,7 +32,6 @@ import de.ozgcloud.bescheid.common.freemarker.TemplateHandler; import de.ozgcloud.bescheid.common.user.UserProfile; import de.ozgcloud.bescheid.common.user.UserProfileService; import de.ozgcloud.bescheid.common.user.UserProfileTestFactory; -import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.command.Command; import de.ozgcloud.command.CommandCreatedEventTestFactory; import de.ozgcloud.command.CommandExecutedEvent; @@ -55,12 +54,8 @@ class BescheidEventListenerTest { @Mock private BinaryFileService fileService; @Mock - private NachrichtService nachrichtService; - @Mock private AttachedItemService attachedItemService; @Mock - private BescheidFeatureProperties featureProperties; - @Mock private DocumentService documentService; @Mock @@ -105,77 +100,36 @@ class BescheidEventListenerTest { @Captor private ArgumentCaptor<BescheidCreatedEvent> eventCaptor; - @Nested - class TestKielConfigured { - - @BeforeEach - void init() { - when(featureProperties.isKielHackathonRoute()).thenReturn(true); - } - - @Test - void shouldCallDoCreateBescheidBiz() { - listener.doCreateBescheid(COMMAND); - - verify(listener).doCreateBescheidBiz(COMMAND); - verify(attachedItemService, never()).createBescheidDraft(any()); - } - - @Test - void shouldCallNachrichtService() { - var bescheid = BescheidTestFactory.create(); - doReturn(bescheid).when(listener).doCreateBescheidBiz(any()); - - listener.doCreateBescheid(COMMAND); - - verify(nachrichtService).createNachrichtDraft(bescheid); - } - - @Test - void shouldPublishBescheidCreatedEvent() { - listener.doCreateBescheid(COMMAND); + @Test + void shouldCallCreateBescheidDraft() { + listener.doCreateBescheid(COMMAND); - verify(eventPublisher).publishEvent(eventCaptor.capture()); - assertThat(eventCaptor.getValue().getSource()).isEqualTo(CommandTestFactory.ID); - } + verify(attachedItemService).createBescheidDraft(COMMAND); } - @Nested - class TestNotKielConfigured { - - @Test - void shouldCallCreateBescheidDraft() { - listener.doCreateBescheid(COMMAND); - - verify(attachedItemService).createBescheidDraft(COMMAND); - verify(listener, never()).doCreateBescheidBiz(any()); - } - - @Test - @DisplayName("should publish BescheidCreatedEvent after creating BescheidDraft") - void shouldPublishBescheidCreatedEventWithCommand() { - var createdResource = "item-id"; - when(attachedItemService.createBescheidDraft(any())).thenReturn(createdResource); + @Test + @DisplayName("should publish BescheidCreatedEvent after creating BescheidDraft") + void shouldPublishBescheidCreatedEventWithCommand() { + var createdResource = "item-id"; + when(attachedItemService.createBescheidDraft(any())).thenReturn(createdResource); - listener.doCreateBescheid(COMMAND); + listener.doCreateBescheid(COMMAND); - verify(eventPublisher).publishEvent(eventCaptor.capture()); - assertThat(eventCaptor.getValue().getCommand()).isSameAs(COMMAND); - } + verify(eventPublisher).publishEvent(eventCaptor.capture()); + assertThat(eventCaptor.getValue().getCommand()).isSameAs(COMMAND); + } - @Test - @DisplayName("should publish BescheidCreatedEvent with created resource") - void shouldPublishBescheidCreatedEventWithCreatedResource() { - var createdResource = "item-id"; - when(attachedItemService.createBescheidDraft(any())).thenReturn(createdResource); + @Test + @DisplayName("should publish BescheidCreatedEvent with created resource") + void shouldPublishBescheidCreatedEventWithCreatedResource() { + var createdResource = "item-id"; + when(attachedItemService.createBescheidDraft(any())).thenReturn(createdResource); - listener.doCreateBescheid(COMMAND); + listener.doCreateBescheid(COMMAND); - verify(eventPublisher).publishEvent(eventCaptor.capture()); - assertThat(eventCaptor.getValue().getCreatedResource()).isEqualTo(createdResource); - } + verify(eventPublisher).publishEvent(eventCaptor.capture()); + assertThat(eventCaptor.getValue().getCreatedResource()).isEqualTo(createdResource); } - } @Nested diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java index 6db0af2e5937ab0084001a0727e0be54689ddac6..c810b402d1b51e1b1cea5017f3fcaf7530c1d690 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java @@ -1,6 +1,7 @@ package de.ozgcloud.bescheid; import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.InstanceOfAssertFactories.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -45,7 +46,6 @@ import de.ozgcloud.bescheid.attributes.ClientAttributeService; import de.ozgcloud.bescheid.common.user.UserProfile; import de.ozgcloud.bescheid.common.user.UserProfileService; import de.ozgcloud.bescheid.common.user.UserProfileTestFactory; -import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.vorgang.PostfachAddressTestFactory; import de.ozgcloud.bescheid.vorgang.ServiceKontoTestFactory; import de.ozgcloud.bescheid.vorgang.Vorgang; @@ -930,7 +930,7 @@ class BescheidServiceTest { var result = buildPostfachAddress(); assertThat(result).extracting(Vorgang.PostfachAddress.FIELD_IDENTIFIER, MAP) - .containsEntry(NachrichtService.FIELD_POSTFACH_ID, PostfachAddressTestFactory.POSTFACH_ID); + .containsEntry(BescheidService.FIELD_POSTFACH_ID, PostfachAddressTestFactory.POSTFACH_ID); } @Test @@ -971,7 +971,7 @@ class BescheidServiceTest { void shouldSetReplyOption() { var result = buildSendNachrichtCommandBody(); - assertThat(result).containsEntry(NachrichtService.FIELD_REPLY_OPTION, NachrichtService.REPLY_OPTION); + assertThat(result).containsEntry(BescheidService.FIELD_REPLY_OPTION, BescheidService.REPLY_OPTION); } @Test @@ -985,7 +985,7 @@ class BescheidServiceTest { void shouldSetSubject() { var result = buildSendNachrichtCommandBody(); - assertThat(result).containsEntry(NachrichtService.FIELD_SUBJECT, AttachedItemTestFactory.NACHRICHT_SUBJECT); + assertThat(result).containsEntry(BescheidService.FIELD_SUBJECT, AttachedItemTestFactory.NACHRICHT_SUBJECT); } @Test @@ -999,7 +999,7 @@ class BescheidServiceTest { void shouldSetMailBody() { var result = buildSendNachrichtCommandBody(); - assertThat(result).containsEntry(NachrichtService.FIELD_MAIL_BODY, AttachedItemTestFactory.NACHRICHT_TEXT); + assertThat(result).containsEntry(BescheidService.FIELD_MAIL_BODY, AttachedItemTestFactory.NACHRICHT_TEXT); } @Test @@ -1013,7 +1013,7 @@ class BescheidServiceTest { void shouldSetAttachments() { var result = buildSendNachrichtCommandBody(); - assertThat(result).extracting(NachrichtService.FIELD_ATTACHMENTS, LIST).containsExactly(AttachedItemTestFactory.ATTACHMENT); + assertThat(result).extracting(BescheidService.FIELD_ATTACHMENTS, LIST).containsExactly(AttachedItemTestFactory.ATTACHMENT); } @Test @@ -1038,14 +1038,14 @@ class BescheidServiceTest { void shouldSetSubject() { var result = buildSendNachrichtCommandBody(); - assertThat(result).containsEntry(NachrichtService.FIELD_SUBJECT, NachrichtService.SUBJECT); + assertThat(result).containsEntry(BescheidService.FIELD_SUBJECT, BescheidService.SUBJECT); } @Test void shouldSetMailBody() { var result = buildSendNachrichtCommandBody(); - assertThat(result).containsEntry(NachrichtService.FIELD_MAIL_BODY, StringUtils.EMPTY); + assertThat(result).containsEntry(BescheidService.FIELD_MAIL_BODY, StringUtils.EMPTY); } } } diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/GrpcPostfachNachrichtTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/GrpcPostfachNachrichtTestFactory.java deleted file mode 100644 index c42e9fb32e68ea5a86de3e41e682927c87d77019..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/GrpcPostfachNachrichtTestFactory.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import de.ozgcloud.nachrichten.postfach.GrpcPostfachNachricht; - -public class GrpcPostfachNachrichtTestFactory { - - public static final GrpcPostfachNachricht create() { - return createBuilder().build(); - } - - public static final GrpcPostfachNachricht.Builder createBuilder() { - return GrpcPostfachNachricht.newBuilder() - .setCreatedAt(NachrichtTestFactory.CREATED_AT.toString()) - .setMailBody(NachrichtTestFactory.MAIL_BODY) - .setSubject(NachrichtTestFactory.SUBJECT); - } -} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtMapperTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtMapperTest.java deleted file mode 100644 index ac7a466e044dcd7e0c5a95b3a0f1f6e1332e1230..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtMapperTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; - -class NachrichtMapperTest { - - @InjectMocks - private NachrichtMapper mapper = Mappers.getMapper(NachrichtMapper.class);; - - @Nested - class TestMapToGrpc { - @Test - void shouldMapNachricht() { - var mapped = mapper.mapToGrpc(NachrichtTestFactory.create()); - - assertThat(mapped).usingRecursiveComparison() - .ignoringFields("replyOption_", "memoizedHashCode") - .isEqualTo(GrpcPostfachNachrichtTestFactory.create()); - } - - @Test - void shouldIgnoreMissingFileId() { - var mapped = mapper.mapToGrpc(NachrichtTestFactory.createBuilder().bescheidFileId(null).build()); - - assertThat(mapped.getAttachmentList()).isEmpty(); - } - - @Test - void shouldSetReplyOption() { - var mapped = mapper.mapToGrpc(NachrichtTestFactory.create()); - - assertThat(mapped.getReplyOption()).isEqualTo("FORBIDDEN"); - } - - @Test - void shouldNotMapId() { - var mapped = mapper.mapToGrpc(NachrichtTestFactory.create()); - - assertThat(mapped.getId()).isEmpty(); - } - } - -} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtRemoteServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtRemoteServiceTest.java deleted file mode 100644 index fb796252a7f562a824b4f1b1e9dd1a323e7fc8ed..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtRemoteServiceTest.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; -import de.ozgcloud.nachrichten.postfach.GrpcPostfachNachricht; - -class NachrichtRemoteServiceTest { - - @InjectMocks - private NachrichtRemoteService remoteService; - - @Mock - private NachrichtMapper mapper; - - @Nested - class TestSaveDarft { - @Nested - class BuildRequest { - private Nachricht nachricht = NachrichtTestFactory.create(); - private GrpcPostfachNachricht grpcNachricht = GrpcPostfachNachrichtTestFactory.create(); - - @BeforeEach - void initMocks() { - when(mapper.mapToGrpc(any())).thenReturn(grpcNachricht); - } - - @Test - void shouldCallMapper() { - remoteService.buildRequest(nachricht); - - verify(mapper).mapToGrpc(nachricht); - } - - @Test - void shouldSetNachricht() { - var request = remoteService.buildRequest(nachricht); - - assertThat(request.getNachricht()).isSameAs(grpcNachricht); - } - - @Test - void shouldSetVorgangId() { - var request = remoteService.buildRequest(nachricht); - - assertThat(request.getVorgangId()).isEqualTo(VorgangTestFactory.ID.toString()); - } - } - } - -} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceITCase.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceITCase.java deleted file mode 100644 index 47a6694e656de4082a3bdaf7d2e3e799793636f1..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceITCase.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.mock.mockito.MockBean; - -import de.ozgcloud.apilib.common.command.OzgCloudCommandService; -import de.ozgcloud.apilib.common.command.grpc.CommandMapper; -import de.ozgcloud.bescheid.BescheidTestFactory; -import de.ozgcloud.common.test.ITCase; - -@ITCase -class NachrichtServiceITCase { - - @Autowired - private NachrichtService service; - @MockBean - private OzgCloudCommandService commandService; - @MockBean - private CommandMapper commandMapper; - - @DisplayName("Build message") - @Nested - class TestBuildMessage { - @Test - void shouldBuildMessage() { - var message = service.buildMessage(BescheidTestFactory.create()); - - assertThat(message).isNotBlank(); - } - } -} \ No newline at end of file diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceTest.java deleted file mode 100644 index 5974a286fb170a9c04db124f1b80220f84d66496..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtServiceTest.java +++ /dev/null @@ -1,110 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.Optional; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; - -import de.ozgcloud.bescheid.BescheidTestFactory; -import de.ozgcloud.bescheid.common.freemarker.TemplateHandler; -import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; - -class NachrichtServiceTest { - - @Spy - @InjectMocks - private NachrichtService service; - - @Mock - private NachrichtRemoteService remoteService; - @Mock - private TemplateHandler templateHandler; - - @Nested - class TestCreateNachrichtDraft { - - private final Nachricht nachricht = NachrichtTestFactory.create(); - - @Test - void shouldCallRemoteService() { - doReturn(Optional.of(nachricht)).when(service).buildNachricht(any()); - - service.createNachrichtDraft(BescheidTestFactory.create()); - - verify(remoteService).saveDraft(nachricht); - } - - @Nested - class BuildNachricht { - - @BeforeEach - void init() { - doReturn(NachrichtTestFactory.MAIL_BODY).when(service).buildMessage(any()); - } - - @Test - void shouldFillMailBody() { - var nachricht = service.buildNachricht(BescheidTestFactory.create()).get(); - - assertThat(nachricht.getMailBody()).isEqualTo(NachrichtTestFactory.MAIL_BODY); - } - - @Test - void shouldSetSubject() { - var nachricht = service.buildNachricht(BescheidTestFactory.create()).get(); - - assertThat(nachricht.getSubject()).isEqualTo(BescheidTestFactory.NACHRICHT_SUBJECT); - } - - @Test - void shouldSetDefaultSubject() { - var bescheid = BescheidTestFactory.createBuilder().nachrichtSubject(Optional.empty()).build(); - - var nachricht = service.buildNachricht(bescheid).get(); - - assertThat(nachricht.getSubject()).isEqualTo(NachrichtService.SUBJECT); - } - - @Test - void shouldSetUser() { - var nachricht = service.buildNachricht(BescheidTestFactory.create()).get(); - - assertThat(nachricht.getCreatedBy()).isEqualTo(BescheidTestFactory.CREATED_BY); - } - - @Test - void shouldSetVorgangId() { - var nachricht = service.buildNachricht(BescheidTestFactory.create()).get(); - - assertThat(nachricht.getVorgangId()).isEqualTo(VorgangTestFactory.ID); - } - } - } - - @Nested - class TestBuildMessage { - @Test - void shouldUseTextFromBescheid() { - var message = service.buildMessage(BescheidTestFactory.create()); - - assertThat(message).isEqualTo(BescheidTestFactory.NACHRICHT_TEXT); - } - - @Test - void shouldUseDefaultTemplate() { - doReturn("FROM_TEMPLATE").when(templateHandler).fillTemplate(any(), any()); - - var message = service.buildMessage(BescheidTestFactory.createBuilder().nachrichtText(Optional.empty()).build()); - - assertThat(message).isEqualTo("FROM_TEMPLATE"); - } - } -} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtTestFactory.java deleted file mode 100644 index a82751dcc7ac14b7ba16a677d2fd2ad3476e73a9..0000000000000000000000000000000000000000 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/nachricht/NachrichtTestFactory.java +++ /dev/null @@ -1,32 +0,0 @@ -package de.ozgcloud.bescheid.nachricht; - -import java.time.ZonedDateTime; -import java.util.UUID; - -import de.ozgcloud.bescheid.UserId; -import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; - -public class NachrichtTestFactory { - - public static final NachrichtId ID = NachrichtId.from(UUID.randomUUID().toString()); - - public static final String SUBJECT = "subject of message"; - public static final String MAIL_BODY = "Lorem ipsum"; - - public static final UserId CREATED_BY = UserId.from(UUID.randomUUID().toString()); - public static final ZonedDateTime CREATED_AT = ZonedDateTime.now().withNano(0); - - public static Nachricht create() { - return createBuilder().build(); - } - - public static Nachricht.NachrichtBuilder createBuilder() { - return Nachricht.builder() - .id(ID) - .vorgangId(VorgangTestFactory.ID) - .subject(SUBJECT) - .mailBody(MAIL_BODY) - .createdBy(CREATED_BY) - .createdAt(CREATED_AT); - } -} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/PostfachAddressTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/PostfachAddressTestFactory.java index 7f7ef749025025cc565b4b04b6a5db8183eb3fb1..5d01a8b7573c16643a61e602ff06bc94aa0cd155 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/PostfachAddressTestFactory.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/vorgang/PostfachAddressTestFactory.java @@ -26,12 +26,13 @@ package de.ozgcloud.bescheid.vorgang; import java.util.Map; import java.util.UUID; -import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.vorgang.Vorgang.PostfachAddress.PostfachAddressBuilder; public class PostfachAddressTestFactory { public static final String POSTFACH_ID = UUID.randomUUID().toString(); + public static final String FIELD_POSTFACH_ID = "postfachId"; + public static final int TYPE = 1; public static final String VERSION = "1.0"; @@ -43,6 +44,6 @@ public class PostfachAddressTestFactory { return Vorgang.PostfachAddress.builder() .type(TYPE) .version(VERSION) - .identifier(Map.of(NachrichtService.FIELD_POSTFACH_ID, POSTFACH_ID)); + .identifier(Map.of(FIELD_POSTFACH_ID, POSTFACH_ID)); } }