diff options
author | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-08 09:41:37 +0200 |
---|---|---|
committer | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-08 09:41:37 +0200 |
commit | 1aaec2e6127b9b2261a97749daa15c23f0af7be1 (patch) | |
tree | 1f52ca9d17ae9ff7853a7fbbafa3c179ec022081 /src/test | |
parent | fefde1ad7592412007b9efed2b62cb403d3f6cac (diff) | |
download | moa-zs-1aaec2e6127b9b2261a97749daa15c23f0af7be1.tar.gz moa-zs-1aaec2e6127b9b2261a97749daa15c23f0af7be1.tar.bz2 moa-zs-1aaec2e6127b9b2261a97749daa15c23f0af7be1.zip |
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.
Diffstat (limited to 'src/test')
3 files changed, 158 insertions, 0 deletions
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<DeliveryRequestType> 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<DeliveryRequestType> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mzs:DeliveryRequest + xmlns:mzs="http://reference.e-government.gv.at/namespace/zustellung/mzs/app2mzs#" + xmlns:p="http://reference.e-government.gv.at/namespace/zustellung/mzs/persondata#" + xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#"> + <mzs:Sender> + <mzs:WebserviceURL>https://authority.gv.at/delivery_notification</mzs:WebserviceURL> + </mzs:Sender> + <mzs:Receiver> + <p:PhysicalPerson> + <p:Name> + <p:GivenName>Maxi</p:GivenName> + <p:FamilyName>Mustermann1</p:FamilyName> + </p:Name> + <p:DateOfBirth>1984-01-24</p:DateOfBirth> + </p:PhysicalPerson> + <p:PostalAddress> + <p:CountryCode>AT</p:CountryCode> + <p:PostalCode>1010</p:PostalCode> + <p:Municipality>Wien</p:Municipality> + <p:DeliveryAddress> + <p:StreetName>Muststrasse</p:StreetName> + <p:BuildingNumber>10</p:BuildingNumber> + </p:DeliveryAddress> + </p:PostalAddress> + </mzs:Receiver> + <msg:MetaData> + <msg:AppDeliveryID>valid-delivery-request-id</msg:AppDeliveryID> + <msg:Subject>WichtigeMitteilung</msg:Subject> + <msg:DeliveryQuality>RSa</msg:DeliveryQuality> + </msg:MetaData> + <mzs:Payload> + <mzs:DocumentReference>https://authority.gv.at/files/73bdf969781ba41fa07df1ff8439cf685c0db1c3</mzs:DocumentReference> + <mzs:FileName>brief.xml</mzs:FileName> + <mzs:MIMEType>text/xml</mzs:MIMEType> + <msg:CheckSum> + <msg:AlgorithmID>SHA1</msg:AlgorithmID> + <msg:Value>9b972c70fdaf5e1b26b3387c87b0ffb72e5940b6</msg:Value> + </msg:CheckSum> + <mzs:Size>123401</mzs:Size> + </mzs:Payload> +</mzs:DeliveryRequest> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mzs:DeliveryRequest + xmlns:mzs="http://reference.e-government.gv.at/namespace/zustellung/mzs/app2mzs#" + xmlns:p="http://reference.e-government.gv.at/namespace/zustellung/mzs/persondata#" + xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#"> + <mzs:Sender> + <p:CorporateBody> + <p:Identification> + <p:Value>kkvj693+tw99uW8UPuEK9en1LzZItkylPajkUUyJJDWQB78VGPkAuhCEk+TD12yQDD/WRglsf+JfQpjubIs/4l/ptluJ9teF3nwkNlu5Dm7mIjzgW1qxrDyomCmPvVxTWOCBuMUbOWRZBhOq+KvDQAu9Vv9KnqSfjYeDZrpHYu4=</p:Value> + <p:Type>urn:publicid:gv:at:cemtoken</p:Type> + </p:Identification> + <p:FullName>Bundesministerium für Testzwecke</p:FullName> + </p:CorporateBody> + <mzs:WebserviceURL>https://authority.gv.at/delivery_notification</mzs:WebserviceURL> + </mzs:Sender> + <mzs:Receiver> + <p:PhysicalPerson> + <p:Name> + <p:GivenName>Maxi</p:GivenName> + <p:FamilyName>Mustermann1</p:FamilyName> + </p:Name> + <p:DateOfBirth>1984-01-24</p:DateOfBirth> + </p:PhysicalPerson> + <p:PostalAddress> + <p:CountryCode>AT</p:CountryCode> + <p:PostalCode>1010</p:PostalCode> + <p:Municipality>Wien</p:Municipality> + <p:DeliveryAddress> + <p:StreetName>Muststrasse</p:StreetName> + <p:BuildingNumber>10</p:BuildingNumber> + </p:DeliveryAddress> + </p:PostalAddress> + </mzs:Receiver> + <msg:MetaData> + <msg:AppDeliveryID>valid-delivery-request-id</msg:AppDeliveryID> + <msg:Subject>WichtigeMitteilung</msg:Subject> + <msg:DeliveryQuality>RSa</msg:DeliveryQuality> + </msg:MetaData> + <mzs:Payload> + <mzs:DocumentReference>https://authority.gv.at/files/73bdf969781ba41fa07df1ff8439cf685c0db1c3</mzs:DocumentReference> + <mzs:FileName>brief.xml</mzs:FileName> + <mzs:MIMEType>text/xml</mzs:MIMEType> + <msg:CheckSum> + <msg:AlgorithmID>SHA1</msg:AlgorithmID> + <msg:Value>9b972c70fdaf5e1b26b3387c87b0ffb72e5940b6</msg:Value> + </msg:CheckSum> + <mzs:Size>123401</mzs:Size> + </mzs:Payload> +</mzs:DeliveryRequest> |