diff --git a/vorgang-manager-server/pom.xml b/vorgang-manager-server/pom.xml index 531812c916825757741b1a92567de0ed3a43e2d4..3dfafb9c33fed498bbb5bdec550c73cb4564de3e 100644 --- a/vorgang-manager-server/pom.xml +++ b/vorgang-manager-server/pom.xml @@ -55,12 +55,12 @@ <user-manager-interface.version>2.12.0</user-manager-interface.version> <bescheid-manager.version>1.23.0-SNAPSHOT</bescheid-manager.version> <processor-manager.version>0.5.0</processor-manager.version> - <nachrichten-manager.version>2.14.1</nachrichten-manager.version> + <nachrichten-manager.version>2.16.0-PR-41-SNAPSHOT</nachrichten-manager.version> <api-lib.version>0.16.0-SNAPSHOT</api-lib.version> <notification-manager.version>2.13.0</notification-manager.version> <collaboration-manager.version>0.6.0</collaboration-manager.version> <archive-manager.version>0.1.0</archive-manager.version> - <document-manager.version>1.1.0</document-manager.version> + <document-manager.version>1.2.0-SNAPSHOT</document-manager.version> <zip.version>2.11.5</zip.version> <jsoup.version>1.15.3</jsoup.version> diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerConfiguration.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerConfiguration.java index 685b4dded3009cbecf85b8da24a283cb6db7f84e..30a0c50d4afba3a459eeb0c5ecd6c38d5561f1a4 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerConfiguration.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerConfiguration.java @@ -1,5 +1,6 @@ package de.ozgcloud.vorgang; +import org.mapstruct.factory.Mappers; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @@ -9,6 +10,8 @@ import org.springframework.data.mongodb.repository.config.EnableMongoRepositorie import de.ozgcloud.apilib.common.command.OzgCloudCommandService; import de.ozgcloud.apilib.common.command.grpc.CommandMapper; import de.ozgcloud.apilib.common.command.grpc.GrpcOzgCloudCommandService; +import de.ozgcloud.apilib.vorgang.OzgCloudFileIdMapper; +import de.ozgcloud.apilib.vorgang.OzgCloudUserIdMapper; import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc; import io.mongock.runner.springboot.EnableMongock; import net.devh.boot.grpc.client.inject.GrpcClient; @@ -28,4 +31,14 @@ public class VorgangManagerServerConfiguration { return new GrpcOzgCloudCommandService(commandServiceStub, commandMapper, contextProvider, GrpcOzgCloudCommandService.DEFAULT_COMMAND_REQUEST_THRESHOLD_MILLIS); } + + @Bean + OzgCloudFileIdMapper ozgCloudFileIdMapper() { + return Mappers.getMapper(OzgCloudFileIdMapper.class); + } + + @Bean + OzgCloudUserIdMapper ozgCloudUserIdMapper() { + return Mappers.getMapper(OzgCloudUserIdMapper.class); + } } diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java index 911528981b55e1c7a961b39264cbf4f0cc9f8427..ce7f18f7266ab3a839cda8e0b38e84166a394320 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java @@ -19,28 +19,17 @@ */ package de.ozgcloud.vorgang.command; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.net.URLConnection; -import java.util.Base64; import java.util.Map; import java.util.Optional; import java.util.stream.Stream; -import jakarta.activation.MimetypesFileTypeMap; - -import org.apache.http.entity.ContentType; import org.springframework.stereotype.Service; -import de.ozgcloud.common.errorhandling.TechnicalException; -import de.ozgcloud.nachrichten.postfach.AttachmentFile; +import de.ozgcloud.nachrichten.file.AttachmentFile; import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem; import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemService; -import de.ozgcloud.vorgang.files.BinaryFile; -import de.ozgcloud.vorgang.files.FileService; -import de.ozgcloud.vorgang.files.UploadedFilesReference; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -55,10 +44,8 @@ class PersistPostfachNachrichtByCommandService implements PersistPostfachNachric static final String CLIENT = "OzgCloud_NachrichtenManager"; static final String ITEM_NAME = "PostfachMail"; - static final String ATTACHMENT_NAME = "PostfachAttachment"; private final VorgangAttachedItemService attachedItemService; - private final FileService fileService; @Override public void persistNachricht(Optional<String> userId, PostfachNachricht nachricht) { @@ -87,48 +74,7 @@ class PersistPostfachNachrichtByCommandService implements PersistPostfachNachric @Override public String persistAttachment(String vorgangId, AttachmentFile attachment) { - var contentType = getTypeByFile(attachment); - try (var content = attachment.getContent()) { - var decContent = Base64.getDecoder().decode(content.readAllBytes()); - - return fileService.uploadFileStream( - createUploadedFilesReference(vorgangId, attachment), - buildBinaryFile(attachment.getName(), contentType, decContent.length), - new ByteArrayInputStream(decContent)).toString(); - } catch (IOException e) { - throw new TechnicalException("Can not read attached file", e); - } - } - - UploadedFilesReference createUploadedFilesReference(String vorgangId, AttachmentFile attachment) { - return UploadedFilesReference.builder().vorgangId(vorgangId).client(CLIENT).name(ATTACHMENT_NAME).fileName(attachment.getName()).build(); - } - - BinaryFile buildBinaryFile(String fileName, String contentType, long size) { - return BinaryFile.builder().name(fileName).contentType(contentType).size(size).build(); - } - - String getTypeByFile(AttachmentFile attachmentFile) { - var fileNameMap = URLConnection.getFileNameMap(); - - return Optional.ofNullable(fileNameMap.getContentTypeFor(attachmentFile.getName())).orElseGet(() -> getTypeByContent(attachmentFile)); - } - - private String getTypeByContent(AttachmentFile attachmentFile) { - try (var contentStream = attachmentFile.getContent()) { - return Optional.ofNullable(URLConnection.guessContentTypeFromStream(contentStream)) - .orElseGet(() -> getByMimeTypes(attachmentFile.getName())); - } catch (IOException e) { - LOG.warn("IO-Exception while guessing content type", e); - } - return ContentType.APPLICATION_OCTET_STREAM.toString(); - } - - // uses map file: src/main/resources/mime.types - private String getByMimeTypes(String fileName) { - var fileTypeMap = new MimetypesFileTypeMap(); - - return fileTypeMap.getContentType(fileName); + throw new UnsupportedOperationException("Not implemented. Use a gRPC service instead."); } @Override diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/FileService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/FileService.java index 6d9269df8c25710314f41dd58a70ece44918af1c..f27336eb7c80b21bbc2e1607d7cf361e65ce285a 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/FileService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/FileService.java @@ -34,9 +34,6 @@ import java.util.stream.Stream; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import com.mongodb.client.gridfs.model.GridFSFile; - -import de.ozgcloud.nachrichten.postfach.BinaryFileService; import de.ozgcloud.vorgang.common.security.PolicyService; import de.ozgcloud.vorgang.vorgang.IncomingFile; import lombok.RequiredArgsConstructor; @@ -44,7 +41,7 @@ import lombok.RequiredArgsConstructor; //TODO make service package protected, as soon PersistPostfachMailByCommandService and FileStreamService is gone @Service @RequiredArgsConstructor -public class FileService implements BinaryFileService { +public class FileService { public static final int CHUNK_SIZE = 255 * 1024; @@ -63,7 +60,7 @@ public class FileService implements BinaryFileService { return repository.findRepresentations(vorgangId, eingangId); } - public FileId uploadFile(BinaryFile binaryFile) { + public FileId saveBinaryFile(BinaryFile binaryFile) { return fileIdMapper.toFileId(binaryFileRepository.save(binaryFile).getId()); } @@ -71,20 +68,6 @@ public class FileService implements BinaryFileService { binaryFileRepository.patch(fileId, version, patch); } - public FileId uploadFileStream(UploadedFilesReference ref, BinaryFile file, InputStream content) { - var contentId = uploadFileContent(ref, content); - try { - return fileIdMapper.toFileId(binaryFileRepository.save(addContentId(file, contentId)).getId()); - } catch (Exception e) { - deleteContent(contentId); - throw e; - } - } - - BinaryFile addContentId(BinaryFile file, FileId contentId) { - return binaryFileRepository.save(file.toBuilder().contentId(contentId.toString()).build()); - } - @Async public CompletableFuture<FileId> uploadFileContentStreamAsync(UploadedFilesReference ref, InputStream content) { return CompletableFuture.completedFuture(uploadFileContent(ref, content)); @@ -98,16 +81,6 @@ public class FileService implements BinaryFileService { return binaryFileRepository.getFileContent(fileId); } - @Override - public InputStream getUploadedFileStream(de.ozgcloud.nachrichten.postfach.FileId fileId) { - return binaryFileRepository.getFileContent(FileId.from(fileId.toString())); - } - - @Override - public GridFSFile getFile(de.ozgcloud.nachrichten.postfach.FileId fileId) { - return binaryFileRepository.getFile(FileId.from(fileId.toString())); - } - public Stream<BinaryFile> findFilesMetaData(Collection<FileId> ids) { return binaryFileRepository.findAll(ids); } diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/GrpcBinaryFileService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/GrpcBinaryFileService.java index f84f7567b437fb64a8f6398a20a0bc31bf34a911..741f7c2809c7948680b14702c2f4d8cd2d5aa34e 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/GrpcBinaryFileService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/files/GrpcBinaryFileService.java @@ -103,7 +103,7 @@ public class GrpcBinaryFileService extends BinaryFileServiceImplBase { } FileId uploadBinaryFile(BinaryFile binaryFile, Optional<FileId> contentId) { - return service.uploadFile(updateContentId(binaryFile, contentId)); + return service.saveBinaryFile(updateContentId(binaryFile, contentId)); } BinaryFile buildBinaryFile(GrpcUploadBinaryFileRequest fileUploadRequest) { diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java index 9a3d16fcbaac67e2ba35de1a512ddbd21ae4c72a..aa555852c92e2e86b17bee6b37f746e3057f08dc 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java @@ -77,8 +77,9 @@ import io.grpc.stub.StreamObserver; "grpc.server.in-process-name=postfachitcase", "grpc.client.ozgcloud-command-manager.address=in-process:postfachitcase", "grpc.client.command-manager.address=in-process:postfachitcase", - "grpc.client.-manager.address=in-process:postfachitcase", + "grpc.client.vorgang-manager.address=in-process:postfachitcase", "grpc.client.pluto.address=in-process:postfachitcase", + "grpc.client.file-manager.address=in-process:postfachitcase", "ozgcloud.osi.postfach.proxyapi.url=http://localhost/ApiProxy/V1/Message", "ozgcloud.osi.postfach.proxyapi.key=1234", "ozgcloud.osi.postfach.proxyapi.realm=test-realm", diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java index 495d3665e76fb0e5badd9cceaadb0e6b8a99dd18..ebe51461913b0292f5e15d3d0822edd8b917761e 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/processor/ProcessorITCase.java @@ -18,11 +18,13 @@ 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.context.ApplicationEventPublisher; -import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.annotation.DirtiesContext; import de.ozgcloud.command.CommandStatus; import de.ozgcloud.command.VorgangCreatedEvent; +import de.ozgcloud.common.test.ITCase; import de.ozgcloud.notification.postfach.PostfachService; +import de.ozgcloud.notification.user.UserNotificationEventListener; import de.ozgcloud.processor.processor.ProcessorService; import de.ozgcloud.processor.vorgang.Vorgang; import de.ozgcloud.processor.vorgang.VorgangId; @@ -39,11 +41,12 @@ import de.ozgcloud.vorgang.vorgang.VorgangTestFactory; "ozgcloud.processors.0.address=http://localhost:8090/testprocessor", "ozgcloud.processors.0.forms.0.formEngineName=testFormEngine", "ozgcloud.processors.0.forms.0.formId=testForm", - "grpc.server.port=9091", - "ozgcloud.command-manager.address=static://127.0.0.1:9091" + "grpc.server.in-process-name=test", + "ozgcloud.command-manager.address=in-process:test", }, classes = { VorgangManagerServerApplication.class }) -@ActiveProfiles({ "local", "itcase" }) @WithMockCustomUser +@ITCase +@DirtiesContext class ProcessorITCase { @Autowired @@ -56,6 +59,8 @@ class ProcessorITCase { private PostfachService postfachService; @MockBean private de.ozgcloud.notification.vorgang.VorgangService notificationService; + @MockBean + private UserNotificationEventListener userNotificationEventListener; @MockBean private CommandService commandService; diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/AttachmentFileTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/AttachmentFileTestFactory.java deleted file mode 100644 index b8eeba2de71da1036e75f50f40a4bdb5f82765ff..0000000000000000000000000000000000000000 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/AttachmentFileTestFactory.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2023 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.vorgang.command; - -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.function.Supplier; - -import org.apache.commons.io.IOUtils; - -import de.ozgcloud.nachrichten.postfach.AttachmentFile; -import de.ozgcloud.nachrichten.postfach.AttachmentFile.AttachmentFileBuilder; - -public class AttachmentFileTestFactory { - - public static final String ATTACHMENT_NAME = "test.txt"; - public static final String CONTENT_TYPE = "text/plain"; - - public static final String BASE64_CONTENT = "dGVzdA=="; - public static final String CONTENT = "test"; - public static final long SIZE = 4L; - public static final Supplier<InputStream> CONTENT_SUPPLIER = () -> IOUtils.toInputStream(CONTENT, Charset.defaultCharset()); - public static final Supplier<InputStream> BASE64_CONTENT_SUPPLIER = () -> IOUtils.toInputStream(BASE64_CONTENT, Charset.defaultCharset()); - - public static AttachmentFile create() { - return createBuilder().build(); - } - - public static AttachmentFileBuilder createBuilder() { - return AttachmentFile.builder() - .name(ATTACHMENT_NAME) - .contentType(CONTENT_TYPE) - .content(CONTENT_SUPPLIER); - } -} diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandServiceTest.java index 3fb64a82fb78919fd61f684597613554a26129fa..1b957a497ffb77e994ce6a2bf2ce9d6648cb1804 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandServiceTest.java @@ -27,32 +27,23 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.io.InputStream; import java.util.Map; import java.util.Optional; import java.util.stream.Stream; -import org.apache.http.entity.ContentType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; +import de.ozgcloud.nachrichten.file.AttachmentFileTestFactory; import de.ozgcloud.nachrichten.postfach.GrpcPostfachMailTestFactory; import de.ozgcloud.nachrichten.postfach.PostfachAddressTestFactory; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; -import de.ozgcloud.nachrichten.postfach.osi.MessageAttachmentTestFactory; -import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemService; import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory; -import de.ozgcloud.vorgang.files.BinaryFile; -import de.ozgcloud.vorgang.files.FileId; -import de.ozgcloud.vorgang.files.FileService; -import de.ozgcloud.vorgang.files.UploadedFilesReference; import de.ozgcloud.vorgang.vorgang.VorgangTestFactory; class PersistPostfachNachrichtByCommandServiceTest { @@ -61,8 +52,6 @@ class PersistPostfachNachrichtByCommandServiceTest { private PersistPostfachNachrichtByCommandService service; @Mock private VorgangAttachedItemService attachedItemService; - @Mock - private FileService fileService; @DisplayName("Persist nachricht") @Nested @@ -165,160 +154,16 @@ class PersistPostfachNachrichtByCommandServiceTest { } } - @Nested - class TestUploadedFilesReferenceCreation { - @Test - void shouldCreateUploadedFilesReference() { - UploadedFilesReference ref = service.createUploadedFilesReference(MessageTestFactory.VORGANG_ID, AttachmentFileTestFactory.create()); - - assertThat(ref.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID); - assertThat(ref.getClient()).isEqualTo(PersistPostfachNachrichtByCommandService.CLIENT); - assertThat(ref.getName()).isEqualTo(PersistPostfachNachrichtByCommandService.ATTACHMENT_NAME); - } - } - - @Nested - class TestBinaryFileCreation { - @Test - void shouldCreateOzgFile() { - BinaryFile file = service.buildBinaryFile(MessageAttachmentTestFactory.FILENAME, ContentType.APPLICATION_OCTET_STREAM.toString(), - MessageAttachmentTestFactory.SIZE); - - assertThat(file.getContentType()).isEqualTo(ContentType.APPLICATION_OCTET_STREAM.toString()); - assertThat(file.getSize()).isEqualTo(MessageAttachmentTestFactory.SIZE); - assertThat(file.getName()).isEqualTo(MessageAttachmentTestFactory.FILENAME); - } - } - - @DisplayName("On Persisting Attachement") + @DisplayName("On Persisting Attachment") @Nested class TestPersistAttachment { - @BeforeEach - void init() { - when(fileService.uploadFileStream(any(), any(), any())).thenReturn(FileId.from("42")); - } - - @DisplayName("Upload files Reference") - @Nested - class TestUploadFilesReference { - - @Captor - private ArgumentCaptor<UploadedFilesReference> refCaptor; - - @Test - void shouldHaveClientName() { - var ref = callService(); - - assertThat(ref.getClient()).isEqualTo(PersistPostfachNachrichtByCommandService.CLIENT); - } - - @Test - void shouldHaveName() { - var ref = callService(); - - assertThat(ref.getName()).isEqualTo(PersistPostfachNachrichtByCommandService.ATTACHMENT_NAME); - } - - @Test - void shouldHaveVorgangId() { - var ref = callService(); - - assertThat(ref.getVorgangId()).isEqualTo(VorgangTestFactory.ID); - } - - private UploadedFilesReference callService() { - service.persistAttachment(VorgangTestFactory.ID, AttachmentFileTestFactory.create()); - - verify(fileService).uploadFileStream(refCaptor.capture(), any(), any()); - - return refCaptor.getValue(); - } - } - - @DisplayName("OZG-File") - @Nested - class TestBinaryFile { - @Captor - private ArgumentCaptor<BinaryFile> ozgFileCaptor; - - @Test - void shouldHaveName() { - var file = callService(); - - assertThat(file.getName()).isEqualTo(MessageAttachmentTestFactory.FILENAME); - } - - @Test - void shouldHaveSize() { - var file = callService(); - - assertThat(file.getSize()).isEqualTo(MessageAttachmentTestFactory.SIZE); - } - - @Test - void shouldHaveContentType() { - var file = callService(); - - assertThat(file.getContentType()).isEqualTo("text/plain"); - } - - private BinaryFile callService() { - var attachmentFile = AttachmentFileTestFactory.createBuilder().content(AttachmentFileTestFactory.BASE64_CONTENT_SUPPLIER).build(); - - service.persistAttachment(VorgangTestFactory.ID, attachmentFile); - - verify(fileService).uploadFileStream(any(), ozgFileCaptor.capture(), any()); - - return ozgFileCaptor.getValue(); - } - } - - @Test - void shouldHaveContent() { - ArgumentCaptor<InputStream> contentCaptor = ArgumentCaptor.forClass(InputStream.class); - var attachment = AttachmentFileTestFactory.createBuilder().content(AttachmentFileTestFactory.BASE64_CONTENT_SUPPLIER).build(); - - service.persistAttachment(VorgangTestFactory.ID, attachment); - - verify(fileService).uploadFileStream(any(), any(), contentCaptor.capture()); - assertThat(contentCaptor.getValue()).hasContent(AttachmentFileTestFactory.CONTENT); - } - - @Test - void shouldReturnFileId() { - var id = service.persistAttachment(VorgangTestFactory.ID, AttachmentFileTestFactory.create()); - - assertThat(id).isEqualTo("42"); - } - } - - @Nested - class TestGetTypeByFileName { - @Test - void shouldReturnDocxType() { - var attachmentFile = AttachmentFileTestFactory.createBuilder().name("file.docx").contentType("word-file").build(); - - var type = service.getTypeByFile(attachmentFile); - - assertThat(type).isEqualTo("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - } @Test - void shouldReturnOctedStreamAsUnkown() { - var attachmentFile = AttachmentFileTestFactory.createBuilder().name("file.qtsch").contentType("lalal").build(); - - var type = service.getTypeByFile(attachmentFile); - - assertThat(type).isEqualTo(ContentType.APPLICATION_OCTET_STREAM.toString()); - } - - @Test - void shouldReturnOdtType() { - var attachmentFile = AttachmentFileTestFactory.createBuilder().name("file.odt").contentType("opendoc file").build(); - - var type = service.getTypeByFile(attachmentFile); + void shouldThrowException() { + var attachmentFile = AttachmentFileTestFactory.create(); - assertThat(type).isEqualTo("application/vnd.oasis.opendocument.text"); + assertThatThrownBy(() -> service.persistAttachment(VorgangTestFactory.ID, attachmentFile)).isInstanceOf( + UnsupportedOperationException.class); } } @@ -345,7 +190,7 @@ class PersistPostfachNachrichtByCommandServiceTest { void shouldThrowException() { assertThatThrownBy(() -> service.findAnswers(serviceKontoType, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE, GrpcPostfachMailTestFactory.REFERENCED_NACHRICHT_ID)) - .isInstanceOf(UnsupportedOperationException.class); + .isInstanceOf(UnsupportedOperationException.class); } } } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/FileServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/FileServiceTest.java index b2222627a2c3463e35bfbb103dc2c904d9ebc045..6a354586b8606de596a4024a6380f9fc71bbae98 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/FileServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/FileServiceTest.java @@ -85,118 +85,27 @@ class FileServiceTest { @Test void shouldCallSave() { - service.uploadFile(file); + service.saveBinaryFile(file); verify(binaryFileRepository).save(file); } @Test void shouldCallFileIdMapper() { - service.uploadFile(file); + service.saveBinaryFile(file); verify(fileIdMapper).toFileId(SAVED_FILE_ID); } @Test void shouldReturnFileId() { - var result = service.uploadFile(file); + var result = service.saveBinaryFile(file); assertThat(result).hasToString(SAVED_FILE_ID); } } - @DisplayName("Upload filestream") - @Nested - class TestUploadFileStream { - - private final BinaryFile savedBinaryFile = BinaryFileTestFactory.create(); - private final BinaryFile updatedBinaryFile = BinaryFileTestFactory.createBuilder().contentId(IncomingFileTestFactory.ID.toString()).build(); - - @BeforeEach - void init() { - when(service.uploadFileContent(any(), any())).thenReturn(IncomingFileTestFactory.ID); - doReturn(updatedBinaryFile).when(service).addContentId(any(), any()); - } - - @Nested - class TestUploadSuccessfully { - - @BeforeEach - void init() { - when(binaryFileRepository.save(any())).thenReturn(savedBinaryFile); - when(fileIdMapper.toFileId(any())).thenReturn(BinaryFileTestFactory.ID); - } - - - @Test - void shouldCallUploadFileContent() { - uploadFileStream(); - - verify(service).uploadFileContent(ref, contentStream); - } - - @Test - void shouldCallAddContentId() { - uploadFileStream(); - - verify(service).addContentId(file, IncomingFileTestFactory.ID); - } - - @Test - void shouldCallSave() { - uploadFileStream(); - - verify(binaryFileRepository).save(updatedBinaryFile); - } - - @Test - void shouldCallFileIdMapper() { - uploadFileStream(); - - verify(fileIdMapper).toFileId(BinaryFileTestFactory.ID_STR); - } - - @Test - void shouldReturnFileId() { - var id = uploadFileStream(); - - assertThat(id).isEqualTo(BinaryFileTestFactory.ID); - } - } - - @Nested - class TestUploadFails { - - private final RuntimeException exception = new RuntimeException(); - @BeforeEach - void init() { - when(binaryFileRepository.save(any())).thenThrow(exception); - } - - @Test - void shouldCallDeleteContent() { - try { - uploadFileStream(); - } catch (Exception e) { - // ignore - } - - verify(service).deleteContent(IncomingFileTestFactory.ID); - } - - @Test - void shouldPassException() { - assertThatThrownBy(TestUploadFileStream.this::uploadFileStream).isSameAs(exception); - } - } - - private FileId uploadFileStream() { - return service.uploadFileStream(ref, file, contentStream); - } - - } - @DisplayName("upload filestream async") @Nested class TestUploadFileContentStreamAsync { diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/GrpcBinaryFileServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/GrpcBinaryFileServiceTest.java index 7ee6839925198ecdb28692f83688aedefffe0ac1..05274641b52fe1a313f648abbeb32965886d2ba3 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/GrpcBinaryFileServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/files/GrpcBinaryFileServiceTest.java @@ -148,7 +148,7 @@ class GrpcBinaryFileServiceTest { @BeforeEach void init() { - when(service.uploadFile(any())).thenReturn(CONTENT_FILE_ID); + when(service.saveBinaryFile(any())).thenReturn(CONTENT_FILE_ID); doReturn(updatedBinaryFile).when(grpcService).updateContentId(any(), any()); } @@ -163,7 +163,7 @@ class GrpcBinaryFileServiceTest { void shouldCallUploadFile() { uploadBinaryFile(); - verify(service).uploadFile(updatedBinaryFile); + verify(service).saveBinaryFile(updatedBinaryFile); } @Test