diff options
5 files changed, 92 insertions, 55 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/App2MzsService.java b/src/main/java/at/gv/egiz/moazs/App2MzsService.java index d61bafd..090bad3 100644 --- a/src/main/java/at/gv/egiz/moazs/App2MzsService.java +++ b/src/main/java/at/gv/egiz/moazs/App2MzsService.java @@ -5,9 +5,8 @@ import at.gv.egiz.moazs.repository.DeliveryRepository; import at.gv.zustellung.app2mzs.xsd.App2MzsPortType; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import at.gv.zustellung.msg.xsd.DeliveryAnswerType; -import at.gv.zustellung.msg.xsd.DeliveryAnswerType.DeliveryAnswerTypeBuilder; import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; -import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.DeliveryRequestStatusTypeBuilder; +import org.apache.cxf.annotations.SchemaValidation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -17,10 +16,13 @@ import javax.jws.WebParam; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import static at.gv.zustellung.msg.xsd.DeliveryAnswerType.deliveryAnswerTypeBuilder; +import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder; import static java.text.MessageFormat.format; import static java.util.concurrent.CompletableFuture.supplyAsync; @Service +@SchemaValidation public class App2MzsService implements App2MzsPortType { private static final Logger logger = LoggerFactory.getLogger(App2MzsService.class); @@ -84,11 +86,11 @@ public class App2MzsService implements App2MzsPortType { private DeliveryRequestStatusType generatePartialSuccessResponse(String appDeliveryId) { - var answer = new DeliveryAnswerTypeBuilder() + var answer = deliveryAnswerTypeBuilder() .withAppDeliveryID(appDeliveryId) .build(); - return new DeliveryRequestStatusTypeBuilder() + return deliveryRequestStatusTypeBuilder() .withPartialSuccess(answer) .build(); } diff --git a/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java b/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java index 4b62164..5f75750 100644 --- a/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java +++ b/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java @@ -26,50 +26,13 @@ public class DeliveryPreprocessor { */ public DeliveryRequestType preProcess(DeliveryRequestType request) { - validate(request); + //validate(request); return new DeliveryRequestTypeBuilder(request) .withConfig(coalesce(request.getConfig(), initDefaultConfig()).get()) .build(); } - private void validate(DeliveryRequestType request) { - validate(request.getSender()); - - notNull(request.getReceiver(), "Receiver is missing."); - notNull(request.getPayload(), "Payloads are missing."); - notNull(request.getMetaData(), "Metadata is missing."); - notNull(request.getMetaData().getAppDeliveryID(), "AppDeliveryID is missing."); - - } - - private void validate(DeliveryRequestType.Sender sender) { - notNull(sender, "Sender is missing."); - - isTrue(sender.getSenderProfile() != null ^ sender.getCorporateBody() != null , - "Either SenderProfile or CorporateBody (but not both) need to be defined."); - - if(sender.getSenderProfile() != null) - validate(sender.getSenderProfile()); - else - validate(sender.getCorporateBody()); - } - - private void validate(SenderProfile profile) { - notNull(profile.getProfileID(), "ProfileID is missing."); - } - - private void validate(CorporateBodyType body) { - notNull(body.getIdentification(), "Identification is missing."); - notNull(body.getFullName(), "FullName is missing."); - isTrue(body.getIdentification().size() > 0, "No Identification provided."); - isTrue(body.getIdentification().size() <= 1, "Too many means of Identification were provided."); - - var id = body.getIdentification().get(0); - notNull(id.getType(), "Identification Type is missing"); - notNull(id.getValue(), "Identification Value is missing"); - } - private ConfigType initDefaultConfig() { return configTypeBuilder() .withPerformQueryPersonRequest(false) diff --git a/src/main/java/at/gv/egiz/moazs/config/App2MzsServiceConfig.java b/src/main/java/at/gv/egiz/moazs/config/App2MzsServiceConfig.java index c4c720d..ab097cb 100644 --- a/src/main/java/at/gv/egiz/moazs/config/App2MzsServiceConfig.java +++ b/src/main/java/at/gv/egiz/moazs/config/App2MzsServiceConfig.java @@ -1,6 +1,7 @@ package at.gv.egiz.moazs.config; import at.gv.egiz.moazs.App2MzsService; +import at.gv.zustellung.app2mzs.xsd.App2Mzs; import org.apache.cxf.Bus; import org.apache.cxf.jaxws.EndpointImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -22,7 +23,13 @@ public class App2MzsServiceConfig { public Endpoint endpoint() { EndpointImpl endpoint = new EndpointImpl(bus, app2mzsService); endpoint.setAddress("/"); + endpoint.setServiceName(app2mzs().getServiceName()); + endpoint.setWsdlLocation("src/main/resources/mzs/app2mzs.wsdl"); endpoint.publish(); return endpoint; } + + @Bean public App2Mzs app2mzs() { + return new App2Mzs(); + } } diff --git a/src/test/java/at/gv/egiz/moazs/App2MzsServiceTest.java b/src/test/java/at/gv/egiz/moazs/App2MzsServiceTest.java index cdb693a..f13a4dd 100644 --- a/src/test/java/at/gv/egiz/moazs/App2MzsServiceTest.java +++ b/src/test/java/at/gv/egiz/moazs/App2MzsServiceTest.java @@ -74,22 +74,28 @@ public class App2MzsServiceTest { } @Test - public void rejectFormallyIncorrectDeliveryRequest() throws IOException, InterruptedException { - var response = sendDeliveryRequestFile("formallyIncorrectDeliveryRequest.soap"); + public void rejectBothProfileAndCorporateBody() throws IOException, InterruptedException { + var response = sendDeliveryRequestFile("profileAndCorporateBody.soap"); assertEquals(500, response.statusCode()); } - @Test - public void rejectRequestWithoutAppDeliveryID() throws IOException, InterruptedException { - var response = sendDeliveryRequestFile("missingAppDeliveryId.soap"); - assertEquals(500, response.statusCode()); - } - - @Test - public void rejectRequestWithoutMetaData() throws IOException, InterruptedException { - var response = sendDeliveryRequestFile("missingMetaData.soap"); - assertEquals(500, response.statusCode()); - } +// @Test +// public void rejectFormallyIncorrectDeliveryRequest() throws IOException, InterruptedException { +// var response = sendDeliveryRequestFile("formallyIncorrectDeliveryRequest.soap"); +// assertEquals(500, response.statusCode()); +// } +// +// @Test +// public void rejectRequestWithoutAppDeliveryID() throws IOException, InterruptedException { +// var response = sendDeliveryRequestFile("missingAppDeliveryId.soap"); +// assertEquals(500, response.statusCode()); +// } +// +// @Test +// public void rejectRequestWithoutMetaData() throws IOException, InterruptedException { +// var response = sendDeliveryRequestFile("missingMetaData.soap"); +// assertEquals(500, response.statusCode()); +// } private HttpResponse<String> sendDeliveryRequestFile(String fileName) throws IOException, InterruptedException { diff --git a/src/test/resources/at/gv/egiz/moazs/App2MzsServiceTest/profileAndCorporateBody.soap b/src/test/resources/at/gv/egiz/moazs/App2MzsServiceTest/profileAndCorporateBody.soap new file mode 100644 index 0000000..3e52062 --- /dev/null +++ b/src/test/resources/at/gv/egiz/moazs/App2MzsServiceTest/profileAndCorporateBody.soap @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<soapenv:Envelope + xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + 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#" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <soapenv:Body> + <mzs:DeliveryRequest> + <mzs:Sender> + <msg:SenderProfile> + <msg:ProfileID>132456</msg:ProfileID> + </msg:SenderProfile> + <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> + </soapenv:Body> +</soapenv:Envelope> |