From 0fabe237de57cb50c1c65c22ccd5df9aee802a11 Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Wed, 19 Mar 2025 11:24:41 +0100 Subject: [PATCH] use constructor injection and MockitoBean --- .../eingang/intelliform/FormDataEndpoint.java | 16 +++----- .../intelliform/FormDataEndpointITCase.java | 39 +++++++++---------- .../intelliform/FormDataEndpointTest.java | 17 ++++---- .../intelliform/XmlDaten1Container.java | 2 +- 4 files changed, 33 insertions(+), 41 deletions(-) diff --git a/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java b/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java index 34027676..8610d8f0 100644 --- a/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java +++ b/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java @@ -23,24 +23,23 @@ */ package de.ozgcloud.eingang.intelliform; -import java.io.IOException; - import javax.xml.namespace.QName; import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; import jakarta.xml.bind.JAXBElement; - -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.springframework.ws.server.endpoint.annotation.RequestPayload; import org.springframework.ws.server.endpoint.annotation.ResponsePayload; import de.ozgcloud.eingang.semantik.SemantikAdapter; -import lombok.extern.log4j.Log4j2; @Endpoint @Log4j2 +@RequiredArgsConstructor public class FormDataEndpoint { static final String NAMESPACE_URI = "http://xmlns.cit.de/intelliform/2009/webservices/backend"; @@ -51,11 +50,8 @@ public class FormDataEndpoint { private static final QName _DepositResponse_QNAME = new QName(NAMESPACE_URI, "depositResponse"); private static final QName _PrefillResponse_QNAME = new QName(NAMESPACE_URI, "prefillResponse"); - - @Autowired - private DepositDataMapper depositDataMapper; - @Autowired - private SemantikAdapter semantikAdapter; + private final DepositDataMapper depositDataMapper; + private final SemantikAdapter semantikAdapter; @PayloadRoot(namespace = NAMESPACE_URI, localPart = PAYLOAD_LOCAL_PART) @ResponsePayload diff --git a/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java b/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java index 131accf2..166bef2f 100644 --- a/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java +++ b/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java @@ -24,26 +24,27 @@ package de.ozgcloud.eingang.intelliform; import static de.ozgcloud.eingang.intelliform.AttachmentTestFactory.*; -import static de.ozgcloud.eingang.intelliform.DepositDataTestFactory.*; -import static de.ozgcloud.eingang.intelliform.FormDataEndpoint.*; -import static de.ozgcloud.eingang.intelliform.XmlDaten1Container.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; +import static de.ozgcloud.eingang.intelliform.DepositDataTestFactory.MANY_ATTACHMENTS; +import static de.ozgcloud.eingang.intelliform.FormDataEndpoint.NAMESPACE_URI; +import static de.ozgcloud.eingang.intelliform.FormDataEndpoint.PAYLOAD_LOCAL_PART; +import static de.ozgcloud.eingang.intelliform.XmlDaten1Container.REQUEST_XML_NAME; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; +import javax.xml.namespace.QName; +import javax.xml.transform.Source; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; import java.io.StringReader; import java.io.StringWriter; import java.util.Collection; import java.util.List; import java.util.UUID; -import javax.xml.namespace.QName; -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - +import io.grpc.Channel; import jakarta.xml.bind.JAXBElement; - +import lombok.SneakyThrows; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -54,11 +55,11 @@ import org.mockito.Captor; import org.mockito.Mock; 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.boot.test.mock.mockito.SpyBean; import org.springframework.context.ApplicationContext; import org.springframework.core.io.Resource; import org.springframework.oxm.jaxb.Jaxb2Marshaller; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.springframework.ws.test.server.MockWebServiceClient; import org.springframework.ws.test.server.RequestCreators; import org.springframework.ws.test.server.ResponseActions; @@ -76,16 +77,14 @@ import de.ozgcloud.vorgang.vorgang.GrpcFormData; import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.Channel; -import lombok.SneakyThrows; @SpringBootTest class FormDataEndpointITCase { - private final static String TEST_FILE_PATH = "classpath:itcase/"; + private static final String TEST_FILE_PATH = "classpath:itcase/"; - private final static String REQUEST = "EinfachesFormularZweiAnhaengeSoapRequest.xml"; - private final static String RESPONSE = "EinfachesFormularZweiAnhaengeSoapResponse.xml"; + private static final String REQUEST = "EinfachesFormularZweiAnhaengeSoapRequest.xml"; + private static final String RESPONSE = "EinfachesFormularZweiAnhaengeSoapResponse.xml"; private static final String SOAP_REQUEST_OTHER_NAME = "XML-Daten-1-other_name_SoapRequest.xml"; private static Jaxb2Marshaller marshaller; @@ -93,9 +92,9 @@ class FormDataEndpointITCase { @Autowired private ApplicationContext applicationContext; - @SpyBean + @MockitoSpyBean private VorgangRemoteService vorgangRemoteService; - @MockBean + @MockitoBean private VorgangManagerServerResolver resolver; @Mock diff --git a/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java b/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java index caa77acc..8947145a 100644 --- a/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java +++ b/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java @@ -23,20 +23,17 @@ */ package de.ozgcloud.eingang.intelliform; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.net.URISyntaxException; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.xml.sax.SAXException; import de.ozgcloud.common.test.TestUtils; import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; @@ -52,18 +49,18 @@ class FormDataEndpointTest { private SemantikAdapter semantikAdapter; @BeforeEach - void init() throws SAXException, IOException, ParserConfigurationException { + void init() { when(depositDataMapper.mapToFormData(any())).thenReturn(FormDataTestFactory.create()); } @Test - void testDepositFormData() throws SAXException, IOException, ParserConfigurationException, URISyntaxException { + void testDepositFormData() throws IOException, ParserConfigurationException { var response = formdataEndpointIntelli.inputFormData(buildRequest("intelliform/XML-Daten-1.xml")); assertThat(response).isNotNull(); } - private Deposit buildRequest(String fileName) throws SAXException, IOException, ParserConfigurationException, URISyntaxException { + private Deposit buildRequest(String fileName) { var depositData = new DepositData(); var attachment = new Attachment(); diff --git a/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java b/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java index 7f56b618..abfe2922 100644 --- a/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java +++ b/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java @@ -9,7 +9,7 @@ import de.ozgcloud.vorgang.vorgang.GrpcFormField; public class XmlDaten1Container { - public final static String REQUEST_XML_NAME = "XML-Daten-1-SoapRequest.xml"; + public static final String REQUEST_XML_NAME = "XML-Daten-1-SoapRequest.xml"; public static final List<GrpcFormField> EINGANG_FIELDS = List.of( create("kontaktsystemtypid", "233034600"), -- GitLab