diff --git a/pom.xml b/pom.xml index 98b1ecff1c0d8418ad4c151bfe8f68edf624549c..4bc431cb6fd4f1a43dd75af5f15b3a03d75b628b 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,6 @@ <jaxb2-plugin.version>0.15.2</jaxb2-plugin.version> <jaxb3-plugin.version>0.15.0</jaxb3-plugin.version> <mojo-jaxb2-plugin.version>3.1.0</mojo-jaxb2-plugin.version> - <grpcmock.version>0.13.0</grpcmock.version> <okio.version>3.9.0</okio.version> </properties> @@ -124,12 +123,6 @@ <type>test-jar</type> <scope>test</scope> </dependency> - <dependency> - <groupId>org.grpcmock</groupId> - <artifactId>grpcmock-spring-boot</artifactId> - <version>${grpcmock.version}</version> - <scope>test</scope> - </dependency> <dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml index 94e51b759534e9cb78c2ee0607c0a5f2c7da04c4..ffa56164004b164c8726efc70193d405de2af09b 100644 --- a/xta-adapter/pom.xml +++ b/xta-adapter/pom.xml @@ -87,11 +87,6 @@ <artifactId>mockwebserver</artifactId> <scope>test</scope> </dependency> - <dependency> - <groupId>org.grpcmock</groupId> - <artifactId>grpcmock-spring-boot</artifactId> - <scope>test</scope> - </dependency> <dependency> <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java index 5782d7f62ea31d194c09e1b93095c05e3499d097..2b5ded74d92e6aad3dbd5d23e997808b0c8e1259 100644 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java @@ -1,43 +1,39 @@ package de.ozgcloud.eingang.xta; import static org.assertj.core.api.Assertions.*; -import static org.grpcmock.GrpcMock.*; +import static org.mockito.Mockito.*; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.List; -import java.util.function.Predicate; +import java.util.Optional; -import org.grpcmock.springboot.AutoConfigureGrpcMock; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; 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.annotation.Bean; import org.springframework.test.context.ActiveProfiles; import de.ozgcloud.eingang.Application; -import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; -import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; -import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; -import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.router.VorgangRemoteService; import de.ozgcloud.vorgang.vorgang.GrpcEingang; -import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationResponse; -import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc; @SpringBootTest(classes = { Application.class, XtaITCase.ActivateXTARunnerConfig.class }) @ActiveProfiles({ "itcase" }) -@AutoConfigureGrpcMock(name = "vorgang-manager-itcase", useInProcessServer = true) class XtaITCase { @Autowired @@ -46,64 +42,29 @@ class XtaITCase { @Autowired private XtaRunner runner; + @MockBean + private VorgangRemoteService vorgangRemoteService; + + @Captor + private ArgumentCaptor<FormData> formDataArgumentCaptor; + + @Captor + private ArgumentCaptor<GrpcEingang> eingangArgumentCaptor; + + @Captor + private ArgumentCaptor<Optional<String>> organisationseinheitenIdArgumentCaptor; + @DisplayName("run get xta messages") @Nested class TestRunGetXtaMessages { @BeforeEach void setup() { - mockStartVorgangCreation(); - mockUploadBinaryFiles(); - mockFinishVorgangCreation(); - } - - private void mockStartVorgangCreation() { - stubFor( - unaryMethod(VorgangServiceGrpc.getStartCreationMethod()) - .willReturn(GrpcCreateVorgangResponse.getDefaultInstance())); - } - - private void mockUploadBinaryFiles() { - stubFor( - clientStreamingMethod(BinaryFileServiceGrpc.getUploadBinaryFileAsStreamMethod()) - .willReturn(GrpcUploadBinaryFileResponse.getDefaultInstance())); - } - - private void mockFinishVorgangCreation() { - stubFor( - unaryMethod(VorgangServiceGrpc.getFinishCreationMethod()) - .willReturn(GrpcFinishCreationResponse.getDefaultInstance())); + when(vorgangRemoteService.createVorgang(any(), any(), any())).thenReturn("vorgangId(unused)"); } @AfterEach void teardown() { - try { - expectOneVorgangCreateAndFinishCall(); - expectTwoUploadCallsForXmlRepresentations(); - } finally { - xtaMocker.teardownServer(); - resetMappings(); - } - } - - private void expectOneVorgangCreateAndFinishCall() { - verifyThat( - calledMethod(VorgangServiceGrpc.getStartCreationMethod()) - .withRequest(GrpcCreateVorgangRequest::hasEingang), - times(1)); - verifyThat( - calledMethod(VorgangServiceGrpc.getFinishCreationMethod()), - times(1)); - } - - private void expectTwoUploadCallsForXmlRepresentations() { - Predicate<GrpcUploadBinaryFileRequest> hasXMLContentType = request -> request.hasMetadata() && request - .getMetadata() - .getContentType() - .contains("xml"); - verifyThat( - calledMethod(BinaryFileServiceGrpc.getUploadBinaryFileAsStreamMethod()) - .withRequestsContaining(hasXMLContentType), - times(2)); + xtaMocker.teardownServer(); } @DisplayName("should have three representations with pdf") @@ -194,12 +155,18 @@ class XtaITCase { } private GrpcEingang captureEingang() { - return capturedRequestsFor( - calledMethod(VorgangServiceGrpc.getStartCreationMethod())) - .getFirst() - .requests() - .getFirst() - .getEingang(); + verify(vorgangRemoteService, times(1)) + .createVorgang( + formDataArgumentCaptor.capture(), + eingangArgumentCaptor.capture(), + organisationseinheitenIdArgumentCaptor.capture() + ); + + assertThat(formDataArgumentCaptor.getValue()).isNotNull(); + assertThat(eingangArgumentCaptor.getValue()).isNotNull(); + assertThat(organisationseinheitenIdArgumentCaptor.getValue()).isPresent(); + + return eingangArgumentCaptor.getValue(); } }