diff --git a/nachrichten-manager-interface/src/main/protobuf/antragraum.proto b/nachrichten-manager-interface/src/main/protobuf/antragraum.proto index f5f20747e1bc8474544d4dd47f48a62fac218b53..b82fb2711176118e1bc07819205dd9d7e5b63586 100644 --- a/nachrichten-manager-interface/src/main/protobuf/antragraum.proto +++ b/nachrichten-manager-interface/src/main/protobuf/antragraum.proto @@ -44,7 +44,7 @@ service AntragraumService { rpc GetAttachmentContent (GrpcGetAttachmentContentRequest) returns (stream GrpcGetAttachmentContentResponse){ } - rpc GetAttachmentMetadata (GrpcGetAttachmentMetadataRequest) returns (stream GrpcGetAttachmentMetadataResponse){ + rpc GetAttachmentMetadata (GrpcGetAttachmentMetadataRequest) returns (GrpcGetAttachmentMetadataResponse){ } } \ No newline at end of file diff --git a/nachrichten-manager-server/pom.xml b/nachrichten-manager-server/pom.xml index fffa802b500a5f99b52a790da27986ef7543ef68..0292cdc9ee6a2bf2944f8115d94c5eca5753076f 100644 --- a/nachrichten-manager-server/pom.xml +++ b/nachrichten-manager-server/pom.xml @@ -48,7 +48,7 @@ <bayernid-proxy-interface.version>0.1.0</bayernid-proxy-interface.version> <vorgang-manager.version>2.15.0</vorgang-manager.version> <muk-postfach.version>0.1.0-SNAPSHOT</muk-postfach.version> - <ozgcloud-starter.version>0.13.0-SNAPSHOT</ozgcloud-starter.version> + <api-lib.version>0.13.0-SNAPSHOT</api-lib.version> </properties> <dependencies> @@ -88,18 +88,18 @@ <version>${muk-postfach.version}</version> </dependency> - <dependency> - <groupId>de.ozgcloud.api-lib</groupId> - <artifactId>ozg-cloud-spring-boot-starter</artifactId> - <version>${ozgcloud-starter.version}</version> - </dependency> - <dependency> <groupId>de.ozgcloud.info</groupId> <artifactId>info-manager-interface</artifactId> <version>${ozg-info-manager-interface.version}</version> </dependency> + <dependency> + <groupId>de.ozgcloud.api-lib</groupId> + <artifactId>api-lib-core</artifactId> + <version>${api-lib.version}</version> + </dependency> + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> @@ -225,7 +225,7 @@ <dependency> <groupId>de.ozgcloud.api-lib</groupId> <artifactId>api-lib-core</artifactId> - <version>${ozgcloud-starter.version}</version> + <version>${api-lib.version}</version> <type>test-jar</type> <scope>test</scope> </dependency> diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java index a1b095a22501d26fff2970b0fca405abcc626fb7..0f9674049d5a7688aacb9626b38574ca56e40229 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java @@ -43,7 +43,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import com.google.protobuf.ByteString; import de.ozgcloud.apilib.common.errorhandling.NotFoundException; -import de.ozgcloud.apilib.file.OzgCloudFile; import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.nachrichten.NachrichtenManagerConfiguration; import de.ozgcloud.nachrichten.common.vorgang.VorgangService; @@ -152,7 +151,7 @@ class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplB } void getAttachmentFileContent(GrpcGetAttachmentContentRequest request, PipedOutputStream pipedOutputStream) { - service.getAttachmentContent(attachmentFileRequestMapper.fromGrpcContentRequest(request), pipedOutputStream); + service.getAttachmentContent(attachmentFileRequestMapper.fromContentRequest(request), pipedOutputStream); } void sendFileContent(InputStream fileContent, StreamObserver<GrpcGetAttachmentContentResponse> responseObserver) { @@ -201,11 +200,8 @@ class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplB @Override public void getAttachmentMetadata(GrpcGetAttachmentMetadataRequest request, StreamObserver<GrpcGetAttachmentMetadataResponse> responseObserver) { - var attachment = service.getAttachmentMetadata(attachmentFileRequestMapper.fromGrpcMetadataRequest(request)); - sendFileMetadata(attachment, responseObserver); - } + var attachment = service.getAttachmentMetadata(attachmentFileRequestMapper.fromMetadataRequest(request)); - void sendFileMetadata(OzgCloudFile attachment, StreamObserver<GrpcGetAttachmentMetadataResponse> responseObserver) { responseObserver.onNext(GrpcGetAttachmentMetadataResponse.newBuilder() .setFileMetadata(ozgCloudFileMapper.toMetadata(attachment)).build()); diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java index 61e1c014c426095a5545596f4d46d8e6d3621903..5da90379824eccd0b4b29d0d024d496c661379d4 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java @@ -208,7 +208,7 @@ public class AntragraumService { } try (var dataOutput = new DataOutputStream(pipedOutputStream)) { - ozgCloudFileService.writeFileDataToStream(OzgCloudFileId.from(request.fileId()), dataOutput); + ozgCloudFileService.writeFileDataToStream(OzgCloudFileId.from(request.getFileId()), dataOutput); } catch (IOException e) { throw new TechnicalException("Error on getting attachment file content.", e); } @@ -216,14 +216,14 @@ public class AntragraumService { public OzgCloudFile getAttachmentMetadata(AttachmentFileRequest request) { verifyAccessToFile(request); - return ozgCloudFileService.getFile(OzgCloudFileId.from(request.fileId())); + return ozgCloudFileService.getFile(OzgCloudFileId.from(request.getFileId())); } void verifyAccessToFile(AttachmentFileRequest request) { - verifyToken(request.samlToken()); - var nachricht = attachedItemService.getPostfachNachricht(request.nachrichtId()); - verifyAccessToVorgang(request.samlToken(), nachricht); - verifyFileId(request.fileId(), nachricht); + verifyToken(request.getSamlToken()); + var nachricht = attachedItemService.getPostfachNachricht(request.getNachrichtId()); + verifyAccessToVorgang(request.getSamlToken(), nachricht); + verifyFileId(request.getFileId(), nachricht); } void verifyToken(String token) { diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequest.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequest.java index 0ec4c7b56153a7b005defb45970b6af200ac17ef..51d0c97c956d666c088f8ede9772fcac4cc4356c 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequest.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequest.java @@ -1,4 +1,39 @@ +/* + * 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.nachrichten.antragraum; -public record AttachmentFileRequest(String samlToken, String nachrichtId, String fileId) { +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +@Builder +@Getter +@EqualsAndHashCode +public class AttachmentFileRequest { + + private String samlToken; + private String nachrichtId; + private String fileId; + } diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapper.java index 82319b696d3a886631ed7f19e23180a6d97c9217..fc6bfb55868ba8e319f194c5bfa724e8fc8a49c9 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapper.java @@ -7,7 +7,7 @@ import org.mapstruct.ReportingPolicy; @Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, unmappedTargetPolicy = ReportingPolicy.WARN) interface AttachmentFileRequestMapper { - AttachmentFileRequest fromGrpcContentRequest(GrpcGetAttachmentContentRequest request); + AttachmentFileRequest fromContentRequest(GrpcGetAttachmentContentRequest request); - AttachmentFileRequest fromGrpcMetadataRequest(GrpcGetAttachmentMetadataRequest request); + AttachmentFileRequest fromMetadataRequest(GrpcGetAttachmentMetadataRequest request); } diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java index 6e99cae1ca29f0bf7b6298719a5eee7d70661826..aeb61e108a430bbb4dd82deab2b178f748cf68e0 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java @@ -640,14 +640,14 @@ class AntragraumGrpcServiceTest { @BeforeEach void mock() { - when(attachmentFileRequestMapper.fromGrpcContentRequest(grpcRequest)).thenReturn(request); + when(attachmentFileRequestMapper.fromContentRequest(grpcRequest)).thenReturn(request); } @Test void shouldMapRequest() { callGetRueckfrageAttachmentFile(); - verify(attachmentFileRequestMapper).fromGrpcContentRequest(grpcRequest); + verify(attachmentFileRequestMapper).fromContentRequest(grpcRequest); } @Test @@ -908,21 +908,21 @@ class AntragraumGrpcServiceTest { private final GrpcGetAttachmentMetadataRequest grpcRequest = GrpcGetAttachmentMetadataRequestTestFactory.create(); private final AttachmentFileRequest request = AttachmentFileRequestTestFactory.create(); - - private OzgCloudFile attachment = OzgCloudFileTestFactory.create(); + private final OzgCloudFile attachment = OzgCloudFileTestFactory.create(); + private final GrpcFileMetadata metadata = GrpcFileMetadataTestFactory.create(); @BeforeEach void mock() { - when(attachmentFileRequestMapper.fromGrpcMetadataRequest(grpcRequest)).thenReturn(request); + when(attachmentFileRequestMapper.fromMetadataRequest(grpcRequest)).thenReturn(request); when(service.getAttachmentMetadata(request)).thenReturn(attachment); - doNothing().when(grpcService).sendFileMetadata(attachment, responseObserver); + when(ozgCloudFileMapper.toMetadata(attachment)).thenReturn(metadata); } @Test void shouldMapRequest() { callGetAttachmentMetadata(); - verify(attachmentFileRequestMapper).fromGrpcMetadataRequest(grpcRequest); + verify(attachmentFileRequestMapper).fromMetadataRequest(grpcRequest); } @Test @@ -932,56 +932,29 @@ class AntragraumGrpcServiceTest { verify(service).getAttachmentMetadata(request); } - @Test - void shouldCallSendFileMetadata() { - callGetAttachmentMetadata(); - - verify(grpcService).sendFileMetadata(attachment, responseObserver); - } - - private void callGetAttachmentMetadata() { - grpcService.getAttachmentMetadata(grpcRequest, responseObserver); - } - } - - @Nested - class TestSendFileMetadata { - - @Mock - private StreamObserver<GrpcGetAttachmentMetadataResponse> responseObserver; - - private final OzgCloudFile attachment = OzgCloudFileTestFactory.create(); - - private final GrpcFileMetadata metadata = GrpcFileMetadataTestFactory.create(); - - @BeforeEach - void mock() { - when(ozgCloudFileMapper.toMetadata(attachment)).thenReturn(metadata); - } - @Test void shouldMapMetadata() { - callSendFileMetadata(); + callGetAttachmentMetadata(); verify(ozgCloudFileMapper).toMetadata(attachment); } @Test void shouldSendMetadata() { - callSendFileMetadata(); + callGetAttachmentMetadata(); verify(responseObserver).onNext(argThat((response) -> response.getFileMetadata().equals(metadata))); } @Test void shouldCallOnCompleted() { - callSendFileMetadata(); + callGetAttachmentMetadata(); verify(responseObserver).onCompleted(); } - private void callSendFileMetadata() { - grpcService.sendFileMetadata(attachment, responseObserver); + private void callGetAttachmentMetadata() { + grpcService.getAttachmentMetadata(grpcRequest, responseObserver); } } diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapperTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapperTest.java index 2b39fbd9cb77cc27bd5d5ce632a4c41ecf7b452a..f76b44c73d7bce9d9cc5ac1ec877f6cdfdfb8d94 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapperTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestMapperTest.java @@ -1,3 +1,26 @@ +/* + * 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.nachrichten.antragraum; import static org.assertj.core.api.Assertions.*; @@ -11,22 +34,22 @@ class AttachmentFileRequestMapperTest { private final AttachmentFileRequestMapper mapper = Mappers.getMapper(AttachmentFileRequestMapper.class); @Nested - class TestFromGrpcContentRequest { + class TestFromContentRequest { @Test void shouldMapToRueckfrageAttachmentFileRequest() { - var request = mapper.fromGrpcContentRequest(GrpcGetAttachmentContentRequestTestFactory.create()); + var request = mapper.fromContentRequest(GrpcGetAttachmentContentRequestTestFactory.create()); assertThat(request).isEqualTo(AttachmentFileRequestTestFactory.create()); } } @Nested - class TestFromGrpcMetadataRequest { + class TestFromMetadataRequest { @Test void shouldMapToRueckfrageAttachmentFileRequest() { - var request = mapper.fromGrpcMetadataRequest(GrpcGetAttachmentMetadataRequestTestFactory.create()); + var request = mapper.fromMetadataRequest(GrpcGetAttachmentMetadataRequestTestFactory.create()); assertThat(request).isEqualTo(AttachmentFileRequestTestFactory.create()); } diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestTestFactory.java index bf4269aabf848a1c42fd0d35401126fd380f1671..5697bb2a54e2c74d72868c78ef8a36654c8aa6fa 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestTestFactory.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AttachmentFileRequestTestFactory.java @@ -4,6 +4,7 @@ import java.util.UUID; import com.thedeanda.lorem.LoremIpsum; +import de.ozgcloud.nachrichten.antragraum.AttachmentFileRequest.AttachmentFileRequestBuilder; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; public class AttachmentFileRequestTestFactory { @@ -13,6 +14,14 @@ public class AttachmentFileRequestTestFactory { public static final String NACHRICHT_ID = PostfachNachrichtTestFactory.ID; public static AttachmentFileRequest create() { - return new AttachmentFileRequest(TOKEN, NACHRICHT_ID, FILE_ID); + return createBuilder() + .build(); + } + + public static AttachmentFileRequestBuilder createBuilder() { + return AttachmentFileRequest.builder() + .samlToken(TOKEN) + .fileId(FILE_ID) + .nachrichtId(NACHRICHT_ID); } }