From 1aaec2e6127b9b2261a97749daa15c23f0af7be1 Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Wed, 8 May 2019 09:41:37 +0200 Subject: Implement Pipeline Flow and mzs2msg Conversion - Implement and test conversion from mzs:DeliveryRequest to msg:DeliveryRequest with the "convert-pojos-by-hand"-strategy. Reason: The chosen strategy benefits from JAXB's strong typing, which is useful in this scenario: Differences between msg and mzs are nuanced and easy to overlook. The chosen strategy is, unfortunately, verbose and could become expensive to maintain. - Update SameThreadDeliveryPipeline: Integrate tnvz query, conversion, and msg query. - Add MsgClient stub. tnvz: - Change TnvzClient stub interface. - Implement mimetype mismatch check from tnvz Response. - Put p:Identification from tnvz response into msg:DeliveryRequest. MZS Schema changes: - Replace DeliveryRequest/Sender/Person with CorporateBody (because thats the only sender that is allowed by zusemsg) and add a SenderProfile choice. - Add ID Attribute to DeliveryRequest/Sender because msg/DeliveryRequest/Sender/AbstractSenderPersonType also has an id attribute. - Remove PersonDataType because it's dead code. --- .../at/gv/egiz/moazs/Mzs2MsgConverterTest.java | 67 ++++++++++++++++++++++ .../mzsDeliveryRequestWithoutSenderID.xml | 42 ++++++++++++++ .../validMzsDeliveryRequest.xml | 49 ++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java create mode 100644 src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/mzsDeliveryRequestWithoutSenderID.xml create mode 100644 src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/validMzsDeliveryRequest.xml (limited to 'src/test') diff --git a/src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java b/src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java new file mode 100644 index 0000000..0c092aa --- /dev/null +++ b/src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java @@ -0,0 +1,67 @@ +package at.gv.egiz.moazs; + +import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; +import at.gv.zustellung.msg.xsd.ObjectFactory; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.xml.bind.JAXBElement; +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.IOException; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class Mzs2MsgConverterTest { + + private final String basePath = "src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/"; + + private final static Logger logger = LoggerFactory.getLogger(Mzs2MsgConverterTest.class); + + @Autowired + private Mzs2MsgConverter converter; + + @Autowired + private Marshaller marshaller; + + @Test + public void testCanConvertValidMzsRequestToMsgRequest() throws IOException { + + var fileName = basePath + "/validMzsDeliveryRequest.xml"; + + try (var inputStream = new BufferedInputStream(new FileInputStream(fileName))) { + + JAXBElement mzsRequest = marshaller.unmarshallXml(inputStream); + + var msgRequest = converter.convert(mzsRequest.getValue()); + + var jaxbMsgRequest = new ObjectFactory().createDeliveryRequest(msgRequest); + + String msgRequestXML = marshaller.marshallXml(jaxbMsgRequest); + + logger.info("msg request: {}", msgRequestXML); + + } + + } + + @Test(expected = IllegalArgumentException.class) + public void testNoSenderID() throws IOException { + + var fileName = basePath + "/mzsDeliveryRequestWithoutSenderID.xml"; + + try (var inputStream = new BufferedInputStream(new FileInputStream(fileName))) { + + JAXBElement mzsRequest = marshaller.unmarshallXml(inputStream); + + converter.convert(mzsRequest.getValue()); + + } + + } +} diff --git a/src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/mzsDeliveryRequestWithoutSenderID.xml b/src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/mzsDeliveryRequestWithoutSenderID.xml new file mode 100644 index 0000000..6006388 --- /dev/null +++ b/src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/mzsDeliveryRequestWithoutSenderID.xml @@ -0,0 +1,42 @@ + + + + https://authority.gv.at/delivery_notification + + + + + Maxi + Mustermann1 + + 1984-01-24 + + + AT + 1010 + Wien + + Muststrasse + 10 + + + + + valid-delivery-request-id + WichtigeMitteilung + RSa + + + https://authority.gv.at/files/73bdf969781ba41fa07df1ff8439cf685c0db1c3 + brief.xml + text/xml + + SHA1 + 9b972c70fdaf5e1b26b3387c87b0ffb72e5940b6 + + 123401 + + diff --git a/src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/validMzsDeliveryRequest.xml b/src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/validMzsDeliveryRequest.xml new file mode 100644 index 0000000..7b67662 --- /dev/null +++ b/src/test/resources/at/gv/egiz/moazs/Mzs2MsgConverterTest/validMzsDeliveryRequest.xml @@ -0,0 +1,49 @@ + + + + + + kkvj693+tw99uW8UPuEK9en1LzZItkylPajkUUyJJDWQB78VGPkAuhCEk+TD12yQDD/WRglsf+JfQpjubIs/4l/ptluJ9teF3nwkNlu5Dm7mIjzgW1qxrDyomCmPvVxTWOCBuMUbOWRZBhOq+KvDQAu9Vv9KnqSfjYeDZrpHYu4= + urn:publicid:gv:at:cemtoken + + Bundesministerium für Testzwecke + + https://authority.gv.at/delivery_notification + + + + + Maxi + Mustermann1 + + 1984-01-24 + + + AT + 1010 + Wien + + Muststrasse + 10 + + + + + valid-delivery-request-id + WichtigeMitteilung + RSa + + + https://authority.gv.at/files/73bdf969781ba41fa07df1ff8439cf685c0db1c3 + brief.xml + text/xml + + SHA1 + 9b972c70fdaf5e1b26b3387c87b0ffb72e5940b6 + + 123401 + + -- cgit v1.2.3