diff --git a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java index 94e6d52038b3a92512f0da44c586ecf244da4e67..1319e4da9e4ffa37588bd720b1d45eb82f80b891 100644 --- a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java @@ -21,7 +21,6 @@ package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; -import de.ozgcloud.nachrichten.postfach.antragraum.GrpcRueckfrage; import org.apache.commons.collections.MapUtils; import org.mapstruct.Mapper; @@ -31,28 +30,28 @@ import java.util.Map; @Mapper public interface AntragraumNachrichtMapper { - String DEFAULT_STATUS = "NEU"; + String DEFAULT_STATUS = "NEU"; - default GrpcRueckfrage toGrpc(PostfachNachricht postfachNachricht) { - return GrpcRueckfrage.newBuilder() - .setId(postfachNachricht.getId()) - .setText(postfachNachricht.getMailBody()) - .setSendAt(postfachNachricht.getSentAt().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)) - .setVorgangName(postfachNachricht.getSubject()) - .setVorgangId(postfachNachricht.getVorgangId()) - .setStatus(DEFAULT_STATUS) - .addAllAnswerAttachmentFileId(postfachNachricht.getAttachments()) - .build(); - } + default GrpcRueckfrage toGrpc(PostfachNachricht postfachNachricht) { + return GrpcRueckfrage.newBuilder() + .setId(postfachNachricht.getId()) + .setText(postfachNachricht.getMailBody()) + .setSendAt(postfachNachricht.getSentAt().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)) + .setVorgangName(postfachNachricht.getSubject()) + .setVorgangId(postfachNachricht.getVorgangId()) + .setStatus(DEFAULT_STATUS) + .addAllAttachmentFileId(postfachNachricht.getAttachments()) + .build(); + } - @SuppressWarnings("unchecked") - default GrpcRueckfrage toGrpc(Map<String, Object> itemMap) { - var rueckfrageBuilder = GrpcRueckfrage.newBuilder() - .setId(MapUtils.getString(itemMap, PostfachNachricht.FIELD_ID)) - .setVorgangId(MapUtils.getString(itemMap, PostfachNachricht.FIELD_VORGANG_ID)) - .setVorgangName(MapUtils.getString(itemMap, PostfachNachricht.FIELD_SUBJECT)) - .addAllAnswerAttachmentFileId((Iterable<String>) itemMap.getOrDefault(PostfachNachricht.FIELD_ATTACHMENTS, Collections.emptyList())); + @SuppressWarnings("unchecked") + default GrpcRueckfrage toGrpc(Map<String, Object> itemMap) { + var rueckfrageBuilder = GrpcRueckfrage.newBuilder() + .setId(MapUtils.getString(itemMap, PostfachNachricht.FIELD_ID)) + .setVorgangId(MapUtils.getString(itemMap, PostfachNachricht.FIELD_VORGANG_ID)) + .setVorgangName(MapUtils.getString(itemMap, PostfachNachricht.FIELD_SUBJECT)) + .addAllAttachmentFileId((Iterable<String>) itemMap.getOrDefault(PostfachNachricht.FIELD_ATTACHMENTS, Collections.emptyList())); - return rueckfrageBuilder.build(); - } + return rueckfrageBuilder.build(); + } } diff --git a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcService.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcService.java index 9d3ec188a9b20bdfa9f0c292a291e50b286749bb..013b0f7e1ff09d930d2a03cac5426d3f9b0b6080 100644 --- a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcService.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcService.java @@ -21,7 +21,6 @@ package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService; -import de.ozgcloud.nachrichten.postfach.antragraum.*; import de.ozgcloud.vorgang.grpc.command.GrpcCommand; import io.grpc.stub.StreamObserver; import lombok.RequiredArgsConstructor; @@ -32,47 +31,35 @@ import org.apache.commons.lang3.NotImplementedException; @GrpcService @RequiredArgsConstructor public class AntragsraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplBase { - private final PersistPostfachNachrichtService postfachNachrichtService; - private final AntragraumNachrichtMapper mapper; - private final Saml2Verifier verifier; - private final Saml2Parser parser; - private final Saml2Decrypter decrypter; + private final PersistPostfachNachrichtService postfachNachrichtService; + private final AntragraumNachrichtMapper mapper; + private final Saml2Verifier verifier; + private final Saml2Parser parser; + private final Saml2Decrypter decrypter; - @Override - public void findRueckfragen(GrpcFindRueckfragenRequest request, StreamObserver<GrpcFindRueckfragenResponse> streamObserver) { - verifyToken(request.getSamlToken()); - String postfachId = decrypter.decryptPostfachId(parser.parse(request.getSamlToken())); + @Override + public void findRueckfragen(GrpcFindRueckfragenRequest request, StreamObserver<GrpcFindRueckfragenResponse> streamObserver) { + verifyToken(request.getSamlToken()); + String postfachId = decrypter.decryptPostfachId(parser.parse(request.getSamlToken())); - var rueckfragen = postfachNachrichtService.findRueckfragen(postfachId).map(mapper::toGrpc).toList(); - var response = GrpcFindRueckfragenResponse.newBuilder().addAllRueckfrage(rueckfragen).build(); + var rueckfragen = postfachNachrichtService.findRueckfragen(postfachId).map(mapper::toGrpc).toList(); + var response = GrpcFindRueckfragenResponse.newBuilder().addAllRueckfrage(rueckfragen).build(); - streamObserver.onNext(response); - streamObserver.onCompleted(); - } + streamObserver.onNext(response); + streamObserver.onCompleted(); + } - @Override - public void getRueckfrage(GrpcGetRueckfrageRequest request, StreamObserver<GrpcGetRueckfrageResponse> streamObserver) { - verifyToken(request.getSamlToken()); - // TODO: Auf richtige Implementation umstellen wenn OZG-5132 fertig ist. - String postfachId = decrypter.decryptPostfachId(parser.parse(request.getSamlToken())); - var rueckfragen = postfachNachrichtService.findRueckfragen(postfachId); + @Override + public void sendRueckfrageAnswer(GrpcSendRueckfrageAnswerRequest request, StreamObserver<GrpcCommand> streamObserver) { + verifyToken(request.getSamlToken()); - rueckfragen.forEach(rueckfrage -> streamObserver.onNext(GrpcGetRueckfrageResponse.newBuilder().setRueckfrage(mapper.toGrpc(rueckfrage)).build())); + throw new NotImplementedException("sendRueckfrageAnswer not implemented yet"); + } - streamObserver.onCompleted(); - } - - @Override - public void sendRueckfrageAnswer(GrpcSendRueckfrageAnswerRequest request, StreamObserver<GrpcCommand> streamObserver) { - verifyToken(request.getSamlToken()); - - throw new NotImplementedException("sendRueckfrageAnswer not implemented yet"); - } - - void verifyToken(String token) { - var errors = verifier.verify(token); - if (CollectionUtils.isNotEmpty(errors)) { - throw new SecurityException("SAML Token verification failed. Errors: %s".formatted(errors)); - } - } + void verifyToken(String token) { + var errors = verifier.verify(token); + if (CollectionUtils.isNotEmpty(errors)) { + throw new SecurityException("SAML Token verification failed. Errors: %s".formatted(errors)); + } + } } diff --git a/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java index ef14bb5b6c5dba0f67889d74bb49c0c5b7ffc356..3053701849da83da9c83a2dd886d620e1e9b9fa7 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java @@ -21,68 +21,67 @@ package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; -import de.ozgcloud.nachrichten.postfach.antragraum.GrpcRueckfrage; import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; class AntragraumNachrichtMapperTest { - AntragraumNachrichtMapper mapper = Mappers.getMapper(AntragraumNachrichtMapper.class); + AntragraumNachrichtMapper mapper = Mappers.getMapper(AntragraumNachrichtMapper.class); - @Test - void shouldMapVorgangId() { - var result = map(); + @Test + void shouldMapVorgangId() { + var result = map(); - assertThat(result.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID); - } + assertThat(result.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID); + } - @Test - void shouldMapId() { - var result = map(); + @Test + void shouldMapId() { + var result = map(); - assertThat(result.getId()).isEqualTo(PostfachNachrichtTestFactory.ID); - } + assertThat(result.getId()).isEqualTo(PostfachNachrichtTestFactory.ID); + } - @Test - void shouldMapVorgangName() { - var result = map(); + @Test + void shouldMapVorgangName() { + var result = map(); - assertThat(result.getVorgangName()).isEqualTo(MessageTestFactory.SUBJECT); - } + assertThat(result.getVorgangName()).isEqualTo(MessageTestFactory.SUBJECT); + } - @Test - void shouldMapStatus() { - var result = map(); + @Test + void shouldMapStatus() { + var result = map(); - assertThat(result.getStatus()).isEqualTo(AntragraumNachrichtMapper.DEFAULT_STATUS); - } + assertThat(result.getStatus()).isEqualTo(AntragraumNachrichtMapper.DEFAULT_STATUS); + } - @Test - void shouldMapSendAt() { - var result = map(); + @Test + void shouldMapSendAt() { + var result = map(); - assertThat(result.getSendAt()).isEqualTo(PostfachNachrichtTestFactory.SENT_AT.toString()); - } + assertThat(result.getSendAt()).isEqualTo(PostfachNachrichtTestFactory.SENT_AT.toString()); + } - @Test - void shouldMapText() { - var result = map(); + @Test + void shouldMapText() { + var result = map(); - assertThat(result.getText()).isEqualTo(PostfachNachrichtTestFactory.MAIL_BODY); - } + assertThat(result.getText()).isEqualTo(PostfachNachrichtTestFactory.MAIL_BODY); + } - @Test - void shouldMapAttachments() { - var result = map(); + @Test + void shouldMapAttachments() { + var result = map(); - assertThat(result.getAnswerAttachmentFileIdCount()).isEqualTo(1); - assertThat(result.getAnswerAttachmentFileId(0)).isEqualTo(PostfachNachrichtTestFactory.ATTACHMENTS.get(0)); - } + assertThat(result.getAttachmentFileIdCount()).isEqualTo(1); + assertThat(result.getAttachmentFileId(0)).isEqualTo(PostfachNachrichtTestFactory.ATTACHMENTS.get(0)); + } - private GrpcRueckfrage map() { - return mapper.toGrpc(PostfachNachrichtTestFactory.create()); - } + private GrpcRueckfrage map() { + return mapper.toGrpc(PostfachNachrichtTestFactory.create()); + } } \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcServiceTest.java index e1e59fe31a1f7632fe17d9d83060918784ab0d7f..44852c4ee5fa3121500fb084af71ad2383ecde97 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcServiceTest.java @@ -23,8 +23,6 @@ package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; -import de.ozgcloud.nachrichten.postfach.antragraum.GrpcFindRueckfragenResponse; -import de.ozgcloud.nachrichten.postfach.antragraum.GrpcRueckfrage; import io.grpc.stub.StreamObserver; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -39,85 +37,85 @@ import java.util.stream.Stream; import static org.mockito.Mockito.*; class AntragsraumGrpcServiceTest { - @Spy - @InjectMocks - private AntragsraumGrpcService antragsraumGrpcService; - @Mock - private PersistPostfachNachrichtService postfachNachrichtService; - @Mock - private AntragraumNachrichtMapper mapper; - @Mock - private Saml2Verifier verifier; - @Mock - private Saml2Parser parser; - @Mock - private Saml2Decrypter decrypter; - - @Nested - class TestFindRueckfragen { - @Mock - private StreamObserver<GrpcFindRueckfragenResponse> streamObserver; - - @Test - void shouldCallVerify() { - antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - - verify(antragsraumGrpcService).verifyToken(anyString()); - } - - @Test - void shouldCallVerifier() { - antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - - verify(verifier).verify(anyString()); - } - - @Test - void shouldCallDecrypt() { - when(parser.parse(anyString())).thenReturn(mock(Response.class)); - - antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - - verify(decrypter).decryptPostfachId(any(Response.class)); - } - - @Test - void shouldCallPostfachService() { - when(decrypter.decryptPostfachId(any())).thenReturn(GrpcFindRueckfrageRequestTestFactory.POSTFACH_ID); - - antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - - verify(postfachNachrichtService).findRueckfragen(anyString()); - } - - @Nested - class TestFindRueckfragenGrpc { - @BeforeEach - void setup() { - when(postfachNachrichtService.findRueckfragen(any())).thenReturn(Stream.of(PostfachNachrichtTestFactory.create())); - when(mapper.toGrpc(any(PostfachNachricht.class))).thenReturn(GrpcRueckfrage.getDefaultInstance()); - } - - @Test - void shouldCallMapper() { - antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - - verify(mapper).toGrpc(any(PostfachNachricht.class)); - } - - @Test - void shouldCallOnNext() { - antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - - verify(streamObserver).onNext(any(GrpcFindRueckfragenResponse.class)); - } - - @Test - void shouldCallOnCompleted() { - antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - - verify(streamObserver).onCompleted(); - } - } - } + @Spy + @InjectMocks + private AntragsraumGrpcService antragsraumGrpcService; + @Mock + private PersistPostfachNachrichtService postfachNachrichtService; + @Mock + private AntragraumNachrichtMapper mapper; + @Mock + private Saml2Verifier verifier; + @Mock + private Saml2Parser parser; + @Mock + private Saml2Decrypter decrypter; + + @Nested + class TestFindRueckfragen { + @Mock + private StreamObserver<GrpcFindRueckfragenResponse> streamObserver; + + @Test + void shouldCallVerify() { + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(antragsraumGrpcService).verifyToken(anyString()); + } + + @Test + void shouldCallVerifier() { + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(verifier).verify(anyString()); + } + + @Test + void shouldCallDecrypt() { + when(parser.parse(anyString())).thenReturn(mock(Response.class)); + + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(decrypter).decryptPostfachId(any(Response.class)); + } + + @Test + void shouldCallPostfachService() { + when(decrypter.decryptPostfachId(any())).thenReturn(GrpcFindRueckfrageRequestTestFactory.POSTFACH_ID); + + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(postfachNachrichtService).findRueckfragen(anyString()); + } + + @Nested + class TestFindRueckfragenGrpc { + @BeforeEach + void setup() { + when(postfachNachrichtService.findRueckfragen(any())).thenReturn(Stream.of(PostfachNachrichtTestFactory.create())); + when(mapper.toGrpc(any(PostfachNachricht.class))).thenReturn(GrpcRueckfrage.getDefaultInstance()); + } + + @Test + void shouldCallMapper() { + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(mapper).toGrpc(any(PostfachNachricht.class)); + } + + @Test + void shouldCallOnNext() { + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(streamObserver).onNext(any(GrpcFindRueckfragenResponse.class)); + } + + @Test + void shouldCallOnCompleted() { + antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); + + verify(streamObserver).onCompleted(); + } + } + } } \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java index 1238f4f67ae1dc16816dacd6132547b7c5c06b6a..9795428ab0d6020b63251d765af3e25e0f89cfa4 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java @@ -21,21 +21,20 @@ package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.common.test.TestUtils; -import de.ozgcloud.nachrichten.postfach.antragraum.GrpcFindRueckfragenRequest; 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 POSTFACH_ID = UUID.randomUUID().toString(); + static final String SAML_TOKEN = TestUtils.loadTextFile("SamlResponse.xml"); - static GrpcFindRueckfragenRequest create() { - return createBuilder().build(); - } + static GrpcFindRueckfragenRequest create() { + return createBuilder().build(); + } - static GrpcFindRueckfragenRequest.Builder createBuilder() { - return GrpcFindRueckfragenRequest.newBuilder() - .setPostfachId(POSTFACH_ID) - .setSamlToken(SAML_TOKEN); - } + static GrpcFindRueckfragenRequest.Builder createBuilder() { + return GrpcFindRueckfragenRequest.newBuilder() + .setPostfachId(POSTFACH_ID) + .setSamlToken(SAML_TOKEN); + } }