From 4a806cea89285a9d12774ca4899dd51387e9926a Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Tue, 11 Jun 2024 09:45:45 +0200 Subject: [PATCH] OZG-5666 add call of findAnswers --- .../antragraum/AntragraumGrpcService.java | 22 +++++++++++-- .../antragraum/AntragraumNachrichtMapper.java | 32 +++++++++++++++++++ .../antragraum/AntragraumService.java | 7 ++++ .../antragraum/AntragraumGrpcServiceTest.java | 13 ++++++-- .../antragraum/AntragraumServiceTest.java | 29 +++++++++++++++-- .../GrpcFindRueckfrageRequestTestFactory.java | 5 ++- .../antragraum/GrpcRueckfrageTestFactory.java | 18 +++++++++++ 7 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java 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 212f582..28bc1da 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 @@ -23,6 +23,8 @@ package de.ozgcloud.nachrichten.antragraum; +import java.util.stream.Stream; + import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import io.grpc.stub.StreamObserver; @@ -38,13 +40,29 @@ class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplB @Override public void findRueckfragen(GrpcFindRueckfragenRequest request, StreamObserver<GrpcFindRueckfragenResponse> streamObserver) { - var rueckfragen = antragraumService.findRueckfragen(request.getSamlToken()).map(mapper::toGrpc).toList(); - var response = GrpcFindRueckfragenResponse.newBuilder().addAllRueckfrage(rueckfragen).build(); + var rueckfragen = buildGrpcRueckfrage(request.getSamlToken()); + var response = GrpcFindRueckfragenResponse.newBuilder().addAllRueckfrage(rueckfragen.toList()).build(); streamObserver.onNext(response); streamObserver.onCompleted(); } + Stream<GrpcRueckfrage> buildGrpcRueckfrage(String samlToken) { + return antragraumService.findRueckfragen(samlToken).map(mapper::toGrpc) + .map(rueckfrage -> addAnswers(samlToken, rueckfrage)); + + } + + private GrpcRueckfrage addAnswers(String samlToken, GrpcRueckfrage rueckfrage) { + return rueckfrage.toBuilder() + .addAllAnswers(buildGrpcRueckfrageAnswer(samlToken, rueckfrage.getId()).toList()) + .build(); + } + + Stream<GrpcRueckfrageAnswer> buildGrpcRueckfrageAnswer(String samlToken, String rueckfrageId) { + return antragraumService.findAnswers(samlToken, rueckfrageId).map(mapper::toRueckfrageAnswer); + } + @Override public void sendRueckfrageAnswer(GrpcSendRueckfrageAnswerRequest request, StreamObserver<GrpcSendRueckfrageAnswerResponse> streamObserver) { var answer = request.getAnswer(); diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java index c6b7cce..1d891a0 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java @@ -35,6 +35,24 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht; interface AntragraumNachrichtMapper { String DEFAULT_STATUS = "NEU"; + @Mapping(target = "mergeFrom", ignore = true) + @Mapping(target = "clearField", ignore = true) + @Mapping(target = "clearOneof", ignore = true) + @Mapping(target = "mergeUnknownFields", ignore = true) + @Mapping(target = "removeAnswers", ignore = true) + @Mapping(target = "answeredAt", ignore = true) + @Mapping(target = "answeredAtBytes", ignore = true) + @Mapping(target = "idBytes", ignore = true) + @Mapping(target = "sentAtBytes", ignore = true) + @Mapping(target = "statusBytes", ignore = true) + @Mapping(target = "textBytes", ignore = true) + @Mapping(target = "unknownFields", ignore = true) + @Mapping(target = "vorgangIdBytes", ignore = true) + @Mapping(target = "vorgangNameBytes", ignore = true) + @Mapping(target = "allFields", ignore = true) + @Mapping(target = "answersBuilderList", ignore = true) + @Mapping(target = "answersList", ignore = true) + @Mapping(target = "answersOrBuilderList", ignore = true) @Mapping(source = "sentAt", target = "sentAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss") @Mapping(source = "mailBody", target = "text") @Mapping(source = "subject", target = "vorgangName") @@ -42,6 +60,7 @@ interface AntragraumNachrichtMapper { @Mapping(target = "status", constant = DEFAULT_STATUS) GrpcRueckfrage toGrpc(PostfachNachricht postfachNachricht); + @Mapping(target = "referencedNachricht", ignore = true) @Mapping(target = "mailBody", source = "answerText") @Mapping(target = "attachments", source = "attachmentFileIdList") @Mapping(target = "createdAt", ignore = true) @@ -58,4 +77,17 @@ interface AntragraumNachrichtMapper { @Mapping(target = "subject", ignore = true) @Mapping(target = "vorgangId", ignore = true) PostfachNachricht fromRueckfrageAnswer(GrpcRueckfrageAnswer answer); + + @Mapping(target = "mergeFrom", ignore = true) + @Mapping(target = "clearField", ignore = true) + @Mapping(target = "clearOneof", ignore = true) + @Mapping(target = "mergeUnknownFields", ignore = true) + @Mapping(target = "answerText", source = "mailBody") + @Mapping(target = "answerTextBytes", ignore = true) + @Mapping(target = "rueckfrageId", source = "id") + @Mapping(target = "rueckfrageIdBytes", ignore = true) + @Mapping(target = "unknownFields", ignore = true) + @Mapping(target = "allFields", ignore = true) + @Mapping(target = "attachmentFileIdList", source = "attachments") + GrpcRueckfrageAnswer toRueckfrageAnswer(PostfachNachricht answer); } 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 b7b236b..a8e360b 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 @@ -99,6 +99,13 @@ public class AntragraumService { return postfachNachrichtService.persistAnswer(rueckfrageId, nachricht); } + public Stream<PostfachNachricht> findAnswers(String samlToken, String rueckfrageId) { + verifyToken(samlToken); + var postfachId = decrypter.decryptPostfachId(parser.parse(samlToken)); + + return postfachNachrichtService.findAnswers(BAYERN_ID, postfachId, rueckfrageId); + } + void verifyToken(String token) { var errors = verifier.verify(token); if (CollectionUtils.isNotEmpty(errors)) { 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 3e49a13..6a05e36 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 @@ -50,14 +50,14 @@ class AntragraumGrpcServiceTest { class TestFindRueckfragen { @Nested - class TestFindRueckfragenGrpc { + class TestFindRueckfrageGrpc { @Mock private StreamObserver<GrpcFindRueckfragenResponse> streamObserver; @BeforeEach void setup() { when(antragraumService.findRueckfragen(any())).thenReturn(Stream.of(PostfachNachrichtTestFactory.create())); - when(mapper.toGrpc(any(PostfachNachricht.class))).thenReturn(GrpcRueckfrage.getDefaultInstance()); + when(mapper.toGrpc(any(PostfachNachricht.class))).thenReturn(GrpcRueckfrageTestFactory.create()); } @Test @@ -80,6 +80,13 @@ class AntragraumGrpcServiceTest { verify(streamObserver).onCompleted(); } + + @Test + void shouldLoadAnswers() { + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(antragraumService).findAnswers(GrpcFindRueckfrageRequestTestFactory.SAML_TOKEN, GrpcRueckfrageTestFactory.ID); + } } } @@ -122,6 +129,6 @@ class AntragraumGrpcServiceTest { verify(streamObserver).onCompleted(); } - } + } \ No newline at end of file diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java index 34be118..8ff8ca4 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java @@ -6,6 +6,7 @@ import static org.mockito.Mockito.*; import java.util.UUID; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -99,7 +100,7 @@ class AntragraumServiceTest { void shouldCallVerify() { service.sendRueckfrageAnswer(SAML_TOKEN, RUECKFRAGE_ID, NACHRICHT); - verify(service).verifyToken(anyString()); + verify(service).verifyToken(SAML_TOKEN); } @Test @@ -113,7 +114,31 @@ class AntragraumServiceTest { void shouldCallPostfachService() { service.sendRueckfrageAnswer(SAML_TOKEN, RUECKFRAGE_ID, NACHRICHT); - verify(postfachNachrichtService).persistAnswer(anyString(), any(PostfachNachricht.class)); + verify(postfachNachrichtService).persistAnswer(eq(RUECKFRAGE_ID), any(PostfachNachricht.class)); + } + } + + @Nested + class TestFindAnswer { + + @BeforeEach + void init() { + when(decrypter.decryptPostfachId(any())).thenReturn(GrpcFindRueckfrageRequestTestFactory.POSTFACH_ID); + } + + @Test + void shouldCallVerify() { + service.findAnswers("TOKEN", PostfachNachrichtTestFactory.ID); + + verify(service).verifyToken("TOKEN"); + } + + @Test + void shouldCallFindAnswers() { + service.findAnswers("TOKEN", PostfachNachrichtTestFactory.ID); + + verify(postfachNachrichtService).findAnswers("BayernID", GrpcFindRueckfrageRequestTestFactory.POSTFACH_ID, + PostfachNachrichtTestFactory.ID); } } } \ No newline at end of file diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java index 9795428..11e529e 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java @@ -20,13 +20,12 @@ package de.ozgcloud.nachrichten.antragraum; -import de.ozgcloud.common.test.TestUtils; - import java.util.UUID; public class GrpcFindRueckfrageRequestTestFactory { static final String POSTFACH_ID = UUID.randomUUID().toString(); - static final String SAML_TOKEN = TestUtils.loadTextFile("SamlResponse.xml"); +// static final String SAML_TOKEN = TestUtils.loadTextFile("SamlResponse.xml"); + static final String SAML_TOKEN = "TOKEN"; static GrpcFindRueckfragenRequest create() { return createBuilder().build(); diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java new file mode 100644 index 0000000..248e5ab --- /dev/null +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcRueckfrageTestFactory.java @@ -0,0 +1,18 @@ +package de.ozgcloud.nachrichten.antragraum; + +import java.util.UUID; + +public class GrpcRueckfrageTestFactory { + + public static final String ID = UUID.randomUUID().toString(); + + public static GrpcRueckfrage create() { + return createBuilder().build(); + } + + public static GrpcRueckfrage.Builder createBuilder() { + return GrpcRueckfrage.newBuilder() + .setId(ID); + + } +} -- GitLab