Skip to content
Snippets Groups Projects
Commit ac9454c5 authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-7573 OZG-7930 forward representations to eingang-manager

parent 3349b355
Branches
Tags
1 merge request!23Ozg 7573 forwarding interface
Showing
with 454 additions and 67 deletions
......@@ -29,6 +29,7 @@ import org.mapstruct.Mapping;
import com.google.protobuf.ByteString;
import de.ozgcloud.eingang.forwarding.GrpcAttachmentFile;
import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile;
import de.ozgcloud.vorgang.files.FileIdMapper;
@Mapper(uses = FileIdMapper.class)
......@@ -52,4 +53,16 @@ public interface IncomingFileMapper {
@Mapping(target = "allFields", ignore = true)
@Mapping(target = "fileName", source = "file.name")
GrpcAttachmentFile toAttachmentFile(String groupName, IncomingFile file);
@Mapping(target = "mergeFrom", ignore = true)
@Mapping(target = "clearField", ignore = true)
@Mapping(target = "clearOneof", ignore = true)
@Mapping(target = "mergeUnknownFields", ignore = true)
@Mapping(target = "contentTypeBytes", ignore = true)
@Mapping(target = "fileNameBytes", ignore = true)
@Mapping(target = "unknownFields", ignore = true)
@Mapping(target = "vendorIdBytes", ignore = true)
@Mapping(target = "allFields", ignore = true)
@Mapping(target = "fileName", source = "name")
GrpcRepresentationFile toRepresentationFile(IncomingFile file);
}
\ No newline at end of file
......@@ -29,6 +29,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.BiFunction;
import java.util.function.Function;
import org.apache.commons.io.IOUtils;
......@@ -42,6 +43,7 @@ import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.eingang.forwarder.RouteForwardingServiceGrpc;
import de.ozgcloud.eingang.forwarding.GrpcAttachment;
import de.ozgcloud.eingang.forwarding.GrpcFileContent;
import de.ozgcloud.eingang.forwarding.GrpcRepresentation;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse;
import de.ozgcloud.vorgang.callcontext.VorgangManagerClientCallContextAttachingInterceptor;
......@@ -90,6 +92,7 @@ class ForwardingRemoteService {
var eingang = vorgangService.getById(request.getVorgangId()).getEingangs().getFirst();
requestStreamObserver.onNext(buildRouteForwardingRequest(request, eingang));
sendAttachments(eingang.getAttachments(), requestStreamObserver);
sendRepresentations(eingang.getRepresentations(), requestStreamObserver);
}
GrpcRouteForwardingRequest buildRouteForwardingRequest(ForwardingRequest request, Eingang eingang) {
......@@ -106,40 +109,80 @@ class ForwardingRemoteService {
private void sendAttachmentFile(StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, String groupName, IncomingFile file) {
var fileContentStream = fileService.getUploadedFileStream(file.getId());
var fileSender = createFileSender(requestStreamObserver, groupName, file, fileContentStream).send();
var fileSender = createAttachmentFileSender(requestStreamObserver, groupName, file, fileContentStream).send();
waitForFinishedFileUpload(fileSender, fileContentStream);
}
FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createFileSender(
FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createAttachmentFileSender(
StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, String groupName, IncomingFile file, InputStream fileContentStream) {
return GrpcFileUploadUtils
.createSender(this::buildAttachmentChunk, fileContentStream, requestCallStreamObserverProvider(requestStreamObserver), false)
return createSenderWithoutMetadata(this::buildAttachmentChunk, requestStreamObserver, fileContentStream)
.withMetaData(buildGrpcAttachmentFile(groupName, file));
}
GrpcRouteForwardingRequest buildAttachmentChunk(byte[] chunk, int length) {
return GrpcRouteForwardingRequest.newBuilder()
.setAttachment(GrpcAttachment.newBuilder()
.setContent(buildGrpcFileContent(chunk, length))
.build())
.build();
}
GrpcRouteForwardingRequest buildGrpcAttachmentFile(String name, IncomingFile file) {
return GrpcRouteForwardingRequest.newBuilder()
.setAttachment(GrpcAttachment.newBuilder()
.setFile(incomingFileMapper.toAttachmentFile(name, file))
.build())
.build();
}
void sendRepresentations(List<IncomingFile> representations, StreamObserver<GrpcRouteForwardingRequest> requestObserver) {
representations.forEach(representation -> {
var fileContentStream = fileService.getUploadedFileStream(representation.getId());
var fileSender = createRepresentationFileSender(requestObserver, representation, fileContentStream).send();
waitForFinishedFileUpload(fileSender, fileContentStream);
});
}
FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createRepresentationFileSender(
StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, IncomingFile file, InputStream fileContentStream) {
return createSenderWithoutMetadata(this::buildRepresentationChunk, requestStreamObserver, fileContentStream)
.withMetaData(buildGrpcRepresentationFile(file));
}
FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createSenderWithoutMetadata(
BiFunction<byte[], Integer, GrpcRouteForwardingRequest> chunkBuilder,
StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, InputStream fileContentStream) {
return GrpcFileUploadUtils
.createSender(chunkBuilder, fileContentStream, requestCallStreamObserverProvider(requestStreamObserver), false);
}
private Function<StreamObserver<GrpcRouteForwardingResponse>, CallStreamObserver<GrpcRouteForwardingRequest>> requestCallStreamObserverProvider(
StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver) {
return response -> (CallStreamObserver<GrpcRouteForwardingRequest>) requestStreamObserver;
}
GrpcRouteForwardingRequest buildAttachmentChunk(byte[] chunk, int length) {
GrpcRouteForwardingRequest buildRepresentationChunk(byte[] chunk, int length) {
return GrpcRouteForwardingRequest.newBuilder()
.setRepresentation(GrpcRepresentation.newBuilder()
.setContent(buildGrpcFileContent(chunk, length))
.build())
.build();
}
GrpcFileContent buildGrpcFileContent(byte[] chunk, int length) {
var fileContentBuilder = GrpcFileContent.newBuilder();
if (length <= 0) {
fileContentBuilder.setIsEndOfFile(true);
} else {
fileContentBuilder.setContent(ByteString.copyFrom(chunk));
}
return GrpcRouteForwardingRequest.newBuilder()
.setAttachment(GrpcAttachment.newBuilder()
.setContent(fileContentBuilder)
.build())
.build();
return fileContentBuilder.build();
}
GrpcRouteForwardingRequest buildGrpcAttachmentFile(String name, IncomingFile file) {
GrpcRouteForwardingRequest buildGrpcRepresentationFile(IncomingFile file) {
return GrpcRouteForwardingRequest.newBuilder()
.setAttachment(GrpcAttachment.newBuilder()
.setFile(incomingFileMapper.toAttachmentFile(name, file))
.setRepresentation(GrpcRepresentation.newBuilder()
.setFile(incomingFileMapper.toRepresentationFile(file))
.build())
.build();
}
......
......@@ -50,6 +50,7 @@ public class EingangTestFactory {
public static final Map<String, Object> FORM_DATA = Map.of(SINGLE_FIELD_NAME, SINGLE_FIELD, SUBFORM_NAME, SUBFORM);
public static final IncomingFileGroup ATTACHMENT = IncomingFileGroupTestFactory.create();
public static final IncomingFile REPRESENTATION = IncomingFileTestFactory.create();
public static Eingang create() {
return createBuilder().build();
......@@ -62,7 +63,7 @@ public class EingangTestFactory {
.antragsteller(AntragstellerTestFactory.create())
.formData(FORM_DATA)
.attachment(ATTACHMENT)
.representation(IncomingFileTestFactory.create())
.representation(REPRESENTATION)
.zustaendigeStelle(ZustaendigeStelleTestFactory.create());
}
}
\ No newline at end of file
......@@ -33,6 +33,7 @@ import org.mockito.Spy;
import de.ozgcloud.vorgang.files.FileIdMapper;
import de.ozgcloud.vorgang.vorgang.redirect.GrpcAttachmentFileTestFactory;
import de.ozgcloud.vorgang.vorgang.redirect.GrpcRepresentationFileTestFactory;
class IncomingFileMapperTest {
......@@ -62,4 +63,15 @@ class IncomingFileMapperTest {
assertThat(result).isEqualTo(GrpcAttachmentFileTestFactory.create());
}
}
@Nested
class TestToRepresentationFile {
@Test
void shouldMapToGrpcRepresentationFile() {
var result = mapper.toRepresentationFile(IncomingFileTestFactory.create());
assertThat(result).isEqualTo(GrpcRepresentationFileTestFactory.create());
}
}
}
\ No newline at end of file
......@@ -234,6 +234,7 @@ class ForwardingRemoteServiceTest {
when(vorgangService.getById(any())).thenReturn(vorgang);
doReturn(routeForwardingRequest).when(service).buildRouteForwardingRequest(any(), any());
doNothing().when(service).sendAttachments(any(), any());
doNothing().when(service).sendRepresentations(any(), any());
}
@Test
......@@ -263,6 +264,13 @@ class ForwardingRemoteServiceTest {
verify(service).sendAttachments(List.of(EingangTestFactory.ATTACHMENT), requestObserver);
}
@Test
void shouldCallSendRepresentations() {
sendEingang();
verify(service).sendRepresentations(List.of(EingangTestFactory.REPRESENTATION), requestObserver);
}
private void sendEingang() {
service.sendEingang(request, requestObserver);
}
......@@ -310,8 +318,9 @@ class ForwardingRemoteServiceTest {
@BeforeEach
void init() {
when(fileService.getUploadedFileStream(any())).thenReturn(inputStream);
doReturn(fileSender).when(service).createFileSender(any(), any(), any(), any());
doReturn(fileSender).when(service).createAttachmentFileSender(any(), any(), any(), any());
when(fileSender.send()).thenReturn(fileSender);
doNothing().when(service).waitForFinishedFileUpload(any(), any());
}
@Test
......@@ -322,10 +331,10 @@ class ForwardingRemoteServiceTest {
}
@Test
void shouldCallCreateFileSender() {
void shouldCallCreateAttachmentFileSender() {
sendAttachments();
verify(service).createFileSender(requestObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
verify(service).createAttachmentFileSender(requestObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
inputStream);
}
......@@ -352,107 +361,312 @@ class ForwardingRemoteServiceTest {
}
@Nested
class TestCreateFileSender {
class TestCreateAttachmentFileSender {
private MockedStatic<GrpcFileUploadUtils> grpcFileUploadUtilsMock;
@Mock
private CallStreamObserver<GrpcRouteForwardingRequest> requestCallStreamObserver;
private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
@Mock
private InputStream inputStream;
@Mock
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
@Mock
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSenderWithMetadata;
@Mock
private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
@Mock
private InputStream inputStream;
@Captor
private ArgumentCaptor<BiFunction<byte[], Integer, GrpcRouteForwardingRequest>> chunkBuilderCaptor;
@Captor
private ArgumentCaptor<Function<StreamObserver<GrpcRouteForwardingResponse>, CallStreamObserver<GrpcRouteForwardingRequest>>> reqObserverBuilderCaptor;
private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
private final GrpcRouteForwardingRequest metadataRequest = GrpcRouteForwardingRequestTestFactory.create();
@BeforeEach
void init() {
grpcFileUploadUtilsMock = mockStatic(GrpcFileUploadUtils.class);
grpcFileUploadUtilsMock.when(() -> GrpcFileUploadUtils.createSender(any(), any(), any(), anyBoolean())).thenReturn(fileSender);
doReturn(fileSender).when(service).createSenderWithoutMetadata(any(), any(), any());
doReturn(metadataRequest).when(service).buildGrpcAttachmentFile(any(), any());
when(fileSender.withMetaData(any())).thenReturn(fileSenderWithMetadata);
}
@AfterEach
void tearDown() {
grpcFileUploadUtilsMock.close();
}
@Test
void shouldCreateFileSenderWithChunkBuilder() {
createFileSender();
void shouldCallCreateSenderWithoutMetadata() {
createAttachmentFileSender();
grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(chunkBuilderCaptor.capture(), any(), any(), anyBoolean()));
verify(service).createSenderWithoutMetadata(chunkBuilderCaptor.capture(), eq(requestObserver), eq(inputStream));
chunkBuilderCaptor.getValue().apply(chunk, chunk.length);
verify(service).buildAttachmentChunk(chunk, chunk.length);
}
@Test
void shouldCreateFileSenderWithInputStream() {
createFileSender();
void shouldCallBuildGrpcAttachmentFile() {
createAttachmentFileSender();
grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(any(), eq(inputStream), any(), anyBoolean()));
verify(service).buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE);
}
@Test
void shouldCreateFileSenderWithRequestObserverBuilder() {
createFileSender();
void shouldSetMetaData() {
createAttachmentFileSender();
grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(any(), any(), reqObserverBuilderCaptor.capture(), anyBoolean()));
assertThat(reqObserverBuilderCaptor.getValue().apply(responseObserver)).isSameAs(requestCallStreamObserver);
verify(fileSender).withMetaData(metadataRequest);
}
@Test
void shouldReturnBuiltFileSender() {
var returnedFileSender = createAttachmentFileSender();
assertThat(returnedFileSender).isSameAs(fileSenderWithMetadata);
}
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createAttachmentFileSender() {
return service.createAttachmentFileSender(requestObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
inputStream);
}
}
@Nested
class TestBuildAttachmentChunk {
private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
@BeforeEach
void mock() {
doReturn(GrpcAttachmentTestFactory.CONTENT).when(service).buildGrpcFileContent(any(), anyInt());
}
@Test
void shouldCreateFileSenderWithNotCompleteOnFileSent() {
createFileSender();
void shouldCallBuildGrpcFileContent() {
service.buildAttachmentChunk(chunk, chunk.length);
grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(any(), any(), any(), eq(false)));
verify(service).buildGrpcFileContent(chunk, chunk.length);
}
@Test
void shouldCallBuildGrpcAttachmentFile() {
createFileSender();
void shouldReturnGrpcRouteForwardingRequest() {
var result = service.buildAttachmentChunk(chunk, chunk.length);
verify(service).buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE);
assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithAttachmentContent());
}
}
@Nested
class TestBuildGrpcAttachmentFile {
private IncomingFile file = IncomingFileTestFactory.create();
@BeforeEach
void mock() {
when(incomingFileMapper.toAttachmentFile(any(), any())).thenReturn(GrpcAttachmentFileTestFactory.create());
}
@Test
void shouldCallIncomingFileMapper() {
service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
verify(incomingFileMapper).toAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
}
@Test
void shoudlReturnAttachmentMetadataRequest() {
var result = service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithAttachmentMetadata());
}
}
@Nested
class TestSendRepresentations {
@Mock
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
@Mock
private InputStream inputStream;
private final IncomingFile representation = IncomingFileTestFactory.create();
@BeforeEach
void init() {
when(fileService.getUploadedFileStream(any())).thenReturn(inputStream);
doReturn(fileSender).when(service).createRepresentationFileSender(any(), any(), any());
when(fileSender.send()).thenReturn(fileSender);
doNothing().when(service).waitForFinishedFileUpload(any(), any());
}
@Test
void shouldGetUploadedFileContent() {
sendRepresentations();
verify(fileService).getUploadedFileStream(IncomingFileTestFactory.ID);
}
@Test
void shouldCallCreateRepresentationFileSender() {
sendRepresentations();
verify(service).createRepresentationFileSender(requestObserver, representation, inputStream);
}
@Test
void shouldSend() {
sendRepresentations();
verify(fileSender).send();
}
@Test
void shouldCallWaitForFinishedFileUploadAfterSend() {
var inOrder = inOrder(fileSender, service);
sendRepresentations();
inOrder.verify(fileSender).send();
inOrder.verify(service).waitForFinishedFileUpload(fileSender, inputStream);
}
private void sendRepresentations() {
service.sendRepresentations(List.of(representation), requestObserver);
}
}
@Nested
class TestCreateRepresentationFileSender {
@Mock
private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
@Mock
private InputStream inputStream;
@Mock
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
@Mock
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSenderWithMetadata;
@Captor
private ArgumentCaptor<BiFunction<byte[], Integer, GrpcRouteForwardingRequest>> chunkBuilderCaptor;
private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
private final GrpcRouteForwardingRequest metadataRequest = GrpcRouteForwardingRequestTestFactory.create();
private final IncomingFile incomingFile = IncomingFileTestFactory.create();
@BeforeEach
void init() {
doReturn(fileSender).when(service).createSenderWithoutMetadata(any(), any(), any());
doReturn(metadataRequest).when(service).buildGrpcRepresentationFile(any());
when(fileSender.withMetaData(any())).thenReturn(fileSenderWithMetadata);
}
@Test
void shouldCallCreateSenderWithoutMetadata() {
createRepresentationFileSender();
verify(service).createSenderWithoutMetadata(chunkBuilderCaptor.capture(), eq(requestObserver), eq(inputStream));
chunkBuilderCaptor.getValue().apply(chunk, chunk.length);
verify(service).buildRepresentationChunk(chunk, chunk.length);
}
@Test
void shouldCallBuildGrpcRepresentationFile() {
createRepresentationFileSender();
verify(service).buildGrpcRepresentationFile(incomingFile);
}
@Test
void shouldSetMetaData() {
createFileSender();
createRepresentationFileSender();
verify(fileSender).withMetaData(metadataRequest);
}
@Test
void shouldReturnBuiltFileSender() {
var returnedFileSender = createFileSender();
var returnedFileSender = createRepresentationFileSender();
assertThat(returnedFileSender).isSameAs(fileSenderWithMetadata);
}
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createFileSender() {
return service.createFileSender(requestCallStreamObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
inputStream);
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createRepresentationFileSender() {
return service.createRepresentationFileSender(requestObserver, incomingFile, inputStream);
}
}
@Nested
class TestBuildAttachmentChunk {
class TestCreateSenderWithoutMetadata {
private MockedStatic<GrpcFileUploadUtils> grpcFileUploadUtilsMock;
@Mock
private BiFunction<byte[], Integer, GrpcRouteForwardingRequest> chunkBuilder;
@Mock
private CallStreamObserver<GrpcRouteForwardingRequest> requestCallStreamObserver;
@Mock
private InputStream inputStream;
@Mock
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
@Mock
private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
@Captor
private ArgumentCaptor<Function<StreamObserver<GrpcRouteForwardingResponse>, CallStreamObserver<GrpcRouteForwardingRequest>>> reqObserverBuilderCaptor;
@BeforeEach
void init() {
grpcFileUploadUtilsMock = mockStatic(GrpcFileUploadUtils.class);
grpcFileUploadUtilsMock.when(() -> GrpcFileUploadUtils.createSender(any(), any(), any(), anyBoolean())).thenReturn(fileSender);
}
@AfterEach
void tearDown() {
grpcFileUploadUtilsMock.close();
}
@Test
void shouldCreateFileSender() {
createSenderWithoutMetadata();
grpcFileUploadUtilsMock
.verify(() -> GrpcFileUploadUtils.createSender(eq(chunkBuilder), eq(inputStream), reqObserverBuilderCaptor.capture(), eq(false)));
assertThat(reqObserverBuilderCaptor.getValue().apply(responseObserver)).isSameAs(requestCallStreamObserver);
}
@Test
void shouldReturnCreatedFileSender() {
var returnedFileSender = createSenderWithoutMetadata();
assertThat(returnedFileSender).isSameAs(fileSender);
}
private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createSenderWithoutMetadata() {
return service.createSenderWithoutMetadata(chunkBuilder, requestCallStreamObserver, inputStream);
}
}
@Nested
class TestBuildRepresentationChunk {
private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
@BeforeEach
void mock() {
doReturn(GrpcRepresentationTestFactory.CONTENT).when(service).buildGrpcFileContent(any(), anyInt());
}
@Test
void shouldCallBuildGrpcFileContent() {
service.buildRepresentationChunk(chunk, chunk.length);
verify(service).buildGrpcFileContent(chunk, chunk.length);
}
@Test
void shouldReturnGrpcRouteForwardingRequest() {
var result = service.buildRepresentationChunk(chunk, chunk.length);
assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithRepresentationContent());
}
}
@Nested
class TestBuildGrpcFileContent {
@Nested
class TestOnEndOfFile {
@Test
void shouldBuildEndOfFileChunk() {
var fileContent = service.buildAttachmentChunk(new byte[0], -1).getAttachment().getContent();
var fileContent = service.buildGrpcFileContent(new byte[0], -1);
assertThat(fileContent).isEqualTo(GrpcFileContentTestFactory.createEndOfFile());
}
......@@ -463,8 +677,7 @@ class ForwardingRemoteServiceTest {
@Test
void shouldBuildEndOfFileChunk() {
var fileContent = service.buildAttachmentChunk(GrpcFileContentTestFactory.CONTENT, GrpcFileContentTestFactory.CONTENT.length)
.getAttachment().getContent();
var fileContent = service.buildGrpcFileContent(GrpcFileContentTestFactory.CONTENT, GrpcFileContentTestFactory.CONTENT.length);
assertThat(fileContent).isEqualTo(GrpcFileContentTestFactory.create());
}
......@@ -472,27 +685,27 @@ class ForwardingRemoteServiceTest {
}
@Nested
class TestBuildGrpcAttachmentFile {
class TestBuildGrpcRepresentationFile {
private IncomingFile file = IncomingFileTestFactory.create();
@BeforeEach
void mock() {
when(incomingFileMapper.toAttachmentFile(any(), any())).thenReturn(GrpcAttachmentFileTestFactory.create());
when(incomingFileMapper.toRepresentationFile(any())).thenReturn(GrpcRepresentationFileTestFactory.create());
}
@Test
void shouldCallIncomingFileMapper() {
service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
service.buildGrpcRepresentationFile(file);
verify(incomingFileMapper).toAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
verify(incomingFileMapper).toRepresentationFile(file);
}
@Test
void shoudlReturnAttachmentMetadataRequest() {
var result = service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
void shoudlReturnRepresentationMetadataRequest() {
var result = service.buildGrpcRepresentationFile(file);
assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithAttachmentMetadata());
assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithRepresentationMetadata());
}
}
......
/*
* Copyright (C) 2025 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.vorgang.redirect;
import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile;
import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile.Builder;
import de.ozgcloud.vorgang.vorgang.IncomingFileTestFactory;
public class GrpcRepresentationFileTestFactory {
public static GrpcRepresentationFile create() {
return createBuilder().build();
}
public static Builder createBuilder() {
return GrpcRepresentationFile.newBuilder()
.setFileName(IncomingFileTestFactory.NAME)
.setContentType(IncomingFileTestFactory.CONTENT_TYPE_STR)
.setVendorId(IncomingFileTestFactory.VENDOR_ID)
.setSize(IncomingFileTestFactory.SIZE);
}
}
/*
* Copyright (C) 2025 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.vorgang.redirect;
import de.ozgcloud.eingang.forwarding.GrpcFileContent;
import de.ozgcloud.eingang.forwarding.GrpcRepresentation;
import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile;
public class GrpcRepresentationTestFactory {
public static final GrpcRepresentationFile FILE = GrpcRepresentationFileTestFactory.create();
public static final GrpcFileContent CONTENT = GrpcFileContentTestFactory.create();
public static GrpcRepresentation createWithFile() {
return GrpcRepresentation.newBuilder()
.setFile(FILE)
.build();
}
public static GrpcRepresentation createWithContent() {
return GrpcRepresentation.newBuilder()
.setContent(CONTENT)
.build();
}
}
......@@ -24,12 +24,15 @@
package de.ozgcloud.vorgang.vorgang.redirect;
import de.ozgcloud.eingang.forwarding.GrpcAttachment;
import de.ozgcloud.eingang.forwarding.GrpcRepresentation;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest;
class GrpcRouteForwardingRequestTestFactory {
public static final GrpcAttachment ATTACHMENT_METADATA = GrpcAttachmentTestFactory.createWithFile();
public static final GrpcAttachment ATTACHMENT_COTNENT = GrpcAttachmentTestFactory.createWithContent();
public static final GrpcAttachment ATTACHMENT_CONTENT = GrpcAttachmentTestFactory.createWithContent();
public static final GrpcRepresentation REPRESENTATION_METADATA = GrpcRepresentationTestFactory.createWithFile();
public static final GrpcRepresentation REPRESENTATION_CONTENT = GrpcRepresentationTestFactory.createWithContent();
public static GrpcRouteForwardingRequest create() {
return createBuilder().build();
......@@ -48,7 +51,19 @@ class GrpcRouteForwardingRequestTestFactory {
public static GrpcRouteForwardingRequest createWithAttachmentContent() {
return GrpcRouteForwardingRequest.newBuilder()
.setAttachment(ATTACHMENT_METADATA)
.setAttachment(ATTACHMENT_CONTENT)
.build();
}
public static GrpcRouteForwardingRequest createWithRepresentationMetadata() {
return GrpcRouteForwardingRequest.newBuilder()
.setRepresentation(REPRESENTATION_METADATA)
.build();
}
public static GrpcRouteForwardingRequest createWithRepresentationContent() {
return GrpcRouteForwardingRequest.newBuilder()
.setRepresentation(REPRESENTATION_CONTENT)
.build();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment