From ee8c694c12850b27144a664c948c3b84398ead6f Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Thu, 3 Oct 2019 16:09:47 +0200 Subject: Update zusemsg and zusetnvz to Newest Version & Accommodate Changes Upgrade zusemsg 2.2.0 to 2.2.007: - msg:RelayedViaERV - Change from boolean to complex type (ervcode). - Move from msg:DeliveryRequestStatusType/Success into msg:DeliveryRequestStatusType, which affects Success, Error, and PartialSuccess. - Was removed from DeliveryNotificationType. - Change msg:DeliveryNotification/Answer from list to singleton. - Change msg:DeliveryRequestStatusType/PartialSuccess is to type AnswerType. - msg:DeliveryRequestStatusType and msg:DeliveryNotificationType receive the attribute ID (for signature referencing). - Add new optional element msg:AustrianAdressesOnly (IndicatorType) to DeliveryRequestType/Receiver/(choice sequence). - Add new optional element ClearingProfilID to DeliveryRequestType/Sender. - Add new element ERVConfirmedDelivery, which subsitutes msg:Answer and extends msg:AbstractOperation - Has element ErvCode (also new token256 type). - Has element ERVDeliveryTimestamp. - Add new optional element TargetIdentification of type p:IdentificationType to msg:DeliveryNotification/User/ as optional element. - Add new enumeration "System" to msg:DeliveryNotification/User/Role. - Rename type AustrianLanguageType from "AustrianEthicMinorityLanguageType" to "AustrianLanguageType" and add "DE" as value. - msg:Tags were unbounded, now they are limited to 20. - VersionNumberType: Patch version can have three digits. Upgrade zusetnvz 2.2.0 to 2.2.006: - Add StandardMimeTypeList to tnvz:QueryPersonResponse and tnvz:QueryAdressabilityResponse. - Add AllStandardMimeTypes (indicator) to tnvz:PersonResult/Success. - Add optional msg:MetadataList to tnvz:PersonQueryType/Metadata tnvz:AddressabilityQueryType/Metadata. - Move tnvz:AustrianAdressesOnly to msg namespace. Carry zusemsg changes into app2mzs interface: - Switch namespace of AustrianAdressesOnly from tnvz to msg. - Add new optional element ClearingProfilID to mzs:DeliveryRequestType/Sender; Reason: Element was added to zusemsg 2.2.007. - Add new choice in mzs:DeliveryNotification to forward new answer type msg:ERVConfirmedDelivery to the app. - Move msg:RelayedViaERV from SuccessType into MessageType (now it's available to all types that derive from MessageType). Accommodate zusemsg/tnvz changes in code base: - TNVZHelper: Consider StandardMimeTypeList when assessing if DeliveryRequest/mimetypes overlap with TNVZ's Accepted Mimetypes. - Msg2MzsConverter: - Put getRelayedViaERV() into all DeliveryStatusRequest replies. - Honor that Notification/Answer is Singleton instead of List. - Handle case were DeliveryNotification/Answer is of type ERVConfirmedDeliveryType. - Remove RelayedViaERV from DeliveryNotification as this element is not available anymore. - NotificationResponse: Honor that Notification/Answer is Singleton instead of List. Fix all testcases and sample soap messages to comply with schema changes. --- .../java/at/gv/egiz/moazs/client/TnvzHelper.java | 34 ++++--- .../at/gv/egiz/moazs/scheme/Msg2MzsConverter.java | 36 +++---- .../java/at/gv/egiz/moazs/scheme/NameSpace.java | 3 +- .../gv/egiz/moazs/scheme/NotificationResponse.java | 2 +- src/main/resources/mzs/app2mzs.xsd | 6 +- .../resources/zusemsg/zuse_mypersondata_en_p2.xsd | 7 +- src/main/resources/zusemsg/zuse_p2.xsd | 110 +++++++++++++++++---- src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl | 5 +- src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl | 4 +- src/main/resources/zusetnvz/zusenqd_p2.xsd | 10 +- src/main/resources/zusetnvz/zusetnvz_p2.xsd | 66 +++++++++---- src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java | 9 +- src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java | 35 ++++--- .../ITEndToEndTest/msg-delivery-notification.xml | 1 - .../ITEndToEndTest/msg-delivery-request-status.xml | 1 - 15 files changed, 219 insertions(+), 110 deletions(-) (limited to 'src') diff --git a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java index 5cc4954..e6bacec 100644 --- a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java +++ b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java @@ -69,9 +69,9 @@ public class TnvzHelper { var tnvzResponse = tnvzPort.queryPerson(tnvzQuery); verifyResponse(tnvzResponse); - var tnvzResult = getResult(tnvzResponse); + var tnvzResult = getFirstResult(tnvzResponse); var typesInRequest = extractListOfMimemtypesIn(mzsRequest); - checkMimetypes(tnvzResult, typesInRequest); + checkMimetypes(tnvzResponse, typesInRequest); return tnvzResult.getSuccess().getIdentification(); } @@ -196,14 +196,15 @@ public class TnvzHelper { } } - private PersonResultType getResult(QueryPersonResponse tnvzResponse) { + private PersonResultType getFirstResult(QueryPersonResponse tnvzResponse) { return tnvzResponse.getQueryResultList().getQueryResult().get(0); } - private void checkMimetypes(PersonResultType tnvzResult, Set typesInRequest) { - var mismatchedTypes = findMimeTypeMismatches(tnvzResult, typesInRequest); + private void checkMimetypes(QueryPersonResponse tnvzResponse, Set typesInRequest) { + + var mismatchedTypes = findMimeTypeMismatches(tnvzResponse, typesInRequest); if (!mismatchedTypes.isEmpty()) { - var acceptedTypesString = join(",", getAcceptedTypes(tnvzResult)); + var acceptedTypesString = join(",", getAcceptedTypes(tnvzResponse)); var mismatchedTypesString = join(",", mismatchedTypes); var message = String.format(MIMETYPE_MISSMATCH_ERROR_MSG, mismatchedTypesString, acceptedTypesString); var code = MoaZSException.ERROR_MZS_MIMETYPE_MISSMATCH; @@ -211,10 +212,11 @@ public class TnvzHelper { } } - private Collection findMimeTypeMismatches(PersonResultType result, Set typesInRequest) { - var acceptedTypes = getAcceptedTypes(result); + private Collection findMimeTypeMismatches(QueryPersonResponse response, Set typesInRequest) { + var acceptedTypes = getAcceptedTypes(response); - if (acceptedTypes.contains("*/*")) { + var result = getFirstResult(response); + if (result.getSuccess().getAllStandardMimeTypes() != null) { return List.of(); } @@ -224,8 +226,18 @@ public class TnvzHelper { return typesInRequestCopy; } - private List getAcceptedTypes(PersonResultType result) { - return result.getSuccess().getMimeTypeList().getMimeType(); + private Set getAcceptedTypes(QueryPersonResponse response) { + + Set union = new HashSet<>(); + var standardTypes = response.getStandardMimeTypeList().getMimeType(); + union.addAll(standardTypes); + + var acceptedTypeList = getFirstResult(response).getSuccess().getMimeTypeList(); + if(acceptedTypeList != null) { + union.addAll(acceptedTypeList.getMimeType()); + } + + return union; } diff --git a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java index 65b6425..cabb128 100644 --- a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java +++ b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java @@ -24,53 +24,48 @@ import static java.util.stream.Collectors.toList; @Component public class Msg2MzsConverter { - private static final Logger log = LoggerFactory.getLogger(Msg2MzsConverter.class); - - private static final String ANSWERS_MISSING_ERROR_MSG = "msg:DeliveryNotification contains no msg:Answer elements" + - " and cannot be converted to mzs:DeliveryNotification."; private static final String UNKNOWN_ANSWER_ERROR_MSG = "msg:DeliveryNotification/msg:Answer is of unknown type" + " and cannot be converted."; - private static final String TOO_MANY_ANSWERS_MSG = "msg:DeliveryNotification contains more msg:Answer elements than" + - " expected. All answers except the first one will be ignored."; public DeliveryResponseType convert(DeliveryRequestStatusType status, Optional signedStatus) { var responseBuilder = deliveryResponseTypeBuilder(); if (status.getError() != null) { - responseBuilder.withError(convert(status.getError(), signedStatus)); + responseBuilder.withError(convert(status.getError(), signedStatus, status.getRelayedViaERV())); } else if (status.getSuccess() != null) { - responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus)); + responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus, status.getRelayedViaERV())); } else { - responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus)); + responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus, status.getRelayedViaERV())); } return responseBuilder.build(); } - private SuccessType convert(DeliveryRequestStatusType.Success success, Optional signedStatus) { + private SuccessType convert(DeliveryRequestStatusType.Success success, Optional signedStatus, RelayedViaERV relayed) { return successTypeBuilder() .withAppDeliveryID(success.getAppDeliveryID()) .withDeliverySystem(success.getDeliverySystem()) .withGZ(success.getGZ()) .withZSDeliveryID(success.getZSDeliveryID()) .withSignedDeliveryRequestStatus(signedStatus.orElse(null)) - .withRelayedViaERV(success.isRelayedViaERV()) + .withRelayedViaERV(relayed) .withDeliveryTimestamp(success.getDeliveryTimestamp()) .build(); } - private PartialSuccessType convert(DeliveryAnswerType answer, Optional signedStatus) { + private PartialSuccessType convert(DeliveryAnswerType answer, Optional signedStatus, RelayedViaERV relayed) { return partialSuccessTypeBuilder() .withAppDeliveryID(answer.getAppDeliveryID()) .withDeliverySystem(answer.getDeliverySystem()) .withGZ(answer.getGZ()) .withZSDeliveryID(answer.getZSDeliveryID()) + .withRelayedViaERV(relayed) .withSignedDeliveryRequestStatus(signedStatus.orElse(null)) .build(); } - private ErrorType convert(DeliveryRequestStatusType.Error error, Optional signedStatus) { + private ErrorType convert(DeliveryRequestStatusType.Error error, Optional signedStatus, RelayedViaERV relayed) { var builder = errorTypeBuilder() .withAppDeliveryID(error.getAppDeliveryID()) .withDeliverySystem(error.getDeliverySystem()) @@ -78,6 +73,7 @@ public class Msg2MzsConverter { .withZSDeliveryID(error.getZSDeliveryID()) .withSignedDeliveryRequestStatus(signedStatus.orElse(null)) .withPreAdviceNoteSent(error.getPreAdviceNoteSent()) + .withRelayedViaERV(relayed) .withCode(new BigInteger(error.getErrorInfo().getCode())); if(error.getErrorInfo().getText() != null) builder.withText(error.getErrorInfo().getText()); @@ -90,15 +86,7 @@ public class Msg2MzsConverter { var builder = deliveryNotificationTypeBuilder(); - if (msgNotification.getAnswer().isEmpty()) { - throw moaZSException(ANSWERS_MISSING_ERROR_MSG); - } - - if (msgNotification.getAnswer().size() > 1) { - log.warn(TOO_MANY_ANSWERS_MSG); - } - - JAXBElement answer = msgNotification.getAnswer().get(0); + JAXBElement answer = msgNotification.getAnswer(); if(answer.getValue() instanceof AcceptedType) { var accepted = (AcceptedType) answer.getValue(); @@ -108,6 +96,9 @@ public class Msg2MzsConverter { var error = (DeliveryErrorType) answer.getValue(); builder.withError(extractError(msgNotification, error, signedNotification)) .withNotificationsPerformed(error.getNotificationsPerformed()); + } else if(answer.getValue() instanceof ERVConfirmedDeliveryType) { + ERVConfirmedDeliveryType ervConfirmed = (ERVConfirmedDeliveryType) answer.getValue(); + builder.withERVConfirmedDelivery(ervConfirmed); } else { throw moaZSException(UNKNOWN_ANSWER_ERROR_MSG); } @@ -141,7 +132,6 @@ public class Msg2MzsConverter { .withZSDeliveryID(msgNotification.getZSDeliveryID()) .withGZ(msgNotification.getGZ()) .withSignedDeliveryRequestStatus(signedNotification.orElse(null)) - .withRelayedViaERV(msgNotification.isRelayedViaERV()) .withDeliveryTimestamp(msgNotification.getTimestamp()) .build(); } diff --git a/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java b/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java index 23b19e7..8cf82da 100644 --- a/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java +++ b/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java @@ -7,7 +7,8 @@ public class NameSpace { private static final at.gv.zustellung.msg.xsd.ObjectFactory MSG_FACTORY = new at.gv.zustellung.msg.xsd.ObjectFactory(); private static final at.gv.zustellung.app2mzs.xsd.ObjectFactory MZS_FACTORY = new at.gv.zustellung.app2mzs.xsd.ObjectFactory(); - public static final String MSG_VERSION = "2.2.0"; + public static final String MSG_VERSION = "2.2.007"; + public static final String TNVZ_VERSION = "2.2.006"; public static final String MSG = MSG_FACTORY.createDeliveryRequest(null).getName().getNamespaceURI(); public static final String MSGP = new at.gv.zustellung.msg.xsd.persondata.ObjectFactory().createPerson(null).getName().getNamespaceURI(); public static final String MZS = new at.gv.zustellung.app2mzs.xsd.ObjectFactory().createDeliveryRequest(null).getName().getNamespaceURI(); diff --git a/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java b/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java index 85e7737..1a1a8eb 100644 --- a/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java +++ b/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java @@ -67,7 +67,7 @@ public class NotificationResponse extends MsgResponse .build(); var notificationType = deliveryNotificationTypeBuilder(notification) - .withAnswer(List.of(factory.createAnswer(error))) + .withAnswer(factory.createAnswer(error)) .build(); return new NotificationResponse(notificationType); diff --git a/src/main/resources/mzs/app2mzs.xsd b/src/main/resources/mzs/app2mzs.xsd index c586606..c188faa 100644 --- a/src/main/resources/mzs/app2mzs.xsd +++ b/src/main/resources/mzs/app2mzs.xsd @@ -35,6 +35,7 @@ + @@ -48,7 +49,7 @@ - + @@ -168,6 +169,7 @@ + @@ -213,7 +215,6 @@ - @@ -253,6 +254,7 @@ + diff --git a/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd b/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd index a20e3f5..ee18bf2 100644 --- a/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd +++ b/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd @@ -1,10 +1,7 @@ - - - + + This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups diff --git a/src/main/resources/zusemsg/zuse_p2.xsd b/src/main/resources/zusemsg/zuse_p2.xsd index 6fa07a4..3343263 100644 --- a/src/main/resources/zusemsg/zuse_p2.xsd +++ b/src/main/resources/zusemsg/zuse_p2.xsd @@ -1,7 +1,15 @@ - + + + @@ -12,7 +20,7 @@ - + @@ -61,20 +69,24 @@ - - + Zustellstück wurde erfolgreich übernommen, attachment wird später geladen + + + + + - Zustellstück konnte nicht erfolgreich angenommen werden + Zustellstück konnte nicht übernommen werden @@ -88,9 +100,15 @@ + + + + Eindeutige ID des Elements, um in der Signatur referenziert werden zu können + + @@ -118,7 +136,6 @@ - Timestamp der Nachrichtenoperation, welcher vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Annahmezeitpunkt @@ -129,19 +146,28 @@ Benutzer, der die Nachricht angenommen hat. - + - + + + Als MIME-Type ist „application/pdf“ zu verwenden + + + + + Eindeutige ID des Elements, um in der Signatur referenziert zu können + + @@ -284,6 +310,11 @@ + + + Die Existenz des Elements zeigt an, dass die gesuchte Person in Österreich gemeldet sein muss + + Höchstes Authentifizierungsniveau mit dem sich der Teilnehmer beim Portal/Kommunikationssystem angemeldet hatte. Folgende Werte sind zulässig - absteigend sortiert nach der Höhe des Authentifizierungsniveaus: "EID" > "FON" > "LOW" @@ -331,6 +362,11 @@ + + + Ist zu verwenden, wenn die Abrechnung über ein anderes Profil erfolgen soll, als dem Versender-Profil + + Webservice oder E-Mail-Adresse, an welches die Zustellbestätigung oder Fehlermeldung weitergeleitet wird (Callback) @@ -439,6 +475,31 @@ + + + Diese Operation zeigt an, dass eine in den ERV weitergeleitete Nachricht erfolgreich im Verfügungsbereich des Empfängers eingelangt ist. + + + + + + + + + + + + + + + Anschriftcode des Elektronischen Rechtsverkehrs der Justiz (ERV): Wenn die Nachricht in den ERV weitergeleitet wird, ist der Anschriftcode - zwecks Nachvollziehbarkeit - bis zum Versender zurückgegeben. + + + + + Datum, wann die Zustellung in der jeweiligen Übermittlungsstelle und damit im Verfügungsbereich des Empfängers eingelangt ist, d.h. die Zustellung erfolgt ist, wird als Zustellzeitpunkt verwendet und an das jeweilige Zustellsystem zurück-gemeldet. Dieses Datum ist gemäß GOG berechnet und gibt den nächsten auf die Ankunft in der Übermittlungsstelle folgenden Werktag an und enthält keine Zeitangabe. + + Geschäftszahl @@ -459,7 +520,7 @@ element of internet address type - + Sprache in welcher der Zustellnachweis gesendet werden soll @@ -531,7 +592,7 @@ - + Unique object identifier @@ -677,6 +738,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) + @@ -700,10 +762,15 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) - + Gibt an ob das Zustellstück über den ERV zugestellt wurde + + + + + @@ -728,6 +795,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) + @@ -736,7 +804,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) - Webservice oder E-Mail-Adresse, an welches die Zustellbestätigung, der Zustellnachweis oder Fehlermeldung weitergeleitet wird (Callback) + Webservice oder E-Mail-Adresse, an welche die Übergabebestätigung, der Zustellnachweis oder die Fehlermeldung zurückgemeldet wird (Callback) @@ -820,10 +888,15 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) - + + + + Wenn im DeliveryRequest ein Target angegeben wurde, d.h. der Bereich und das VKZ des behördlichen Versenders, dann enthält das TargetIdentification Element das entsprechende, umgeschlüsselt vbPK für den Versender + + Timestamp, der vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Zustellzeitpunkt @@ -841,7 +914,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) • Receiver: Empfänger persönlich • Representative: Vertretungsbevollmächtigter • InsolvencyAdministrator: Insolvenzverwalters - +• System: Eine Systemkomponente der eZustellung ist Auslöser der MessageOperation @@ -849,10 +922,12 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) + + @@ -868,7 +943,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) - ID des Zustellstücke. Die ZSDeliveryID in Kombination mit der ParticipantID des Zustellsystems, welches die Nachricht übernmittelt hat muss eindeutig sein. + ID des Zustellstückes MUSS über alle Zustellsysteme eindeutig sein. Die ZSDeliveryID wird durch eine UUID gemäß RFC-4122 repräsentiert. Der Node-Teil MUSS pro Zustellsystem eindeutig sein und wird vom Anzeigemodul vergeben. @@ -881,13 +956,14 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) - + 2-stelliger Sprachcode der anerkannten österreichischen Minderheiten + @@ -907,7 +983,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2) Typ definiert einen regulären Ausdruck für Versionsnummer - z.B. 1.0.0 - + diff --git a/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl b/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl index c3c1c6f..7948786 100644 --- a/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl +++ b/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl @@ -46,7 +46,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -72,7 +72,6 @@ - diff --git a/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl b/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl index 9501552..2ba1eea 100644 --- a/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl +++ b/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl @@ -58,7 +58,7 @@ - + @@ -67,7 +67,7 @@ - + diff --git a/src/main/resources/zusetnvz/zusenqd_p2.xsd b/src/main/resources/zusetnvz/zusenqd_p2.xsd index 5c31408..60a0c32 100644 --- a/src/main/resources/zusetnvz/zusenqd_p2.xsd +++ b/src/main/resources/zusetnvz/zusenqd_p2.xsd @@ -1,8 +1,10 @@ - - + + + + @@ -12,7 +14,7 @@ - + @@ -75,7 +77,7 @@ Zustellsystem, welches die Löschung durchführt - + Liste der von einer (Daten-)Löschung betroffenen Teilnehmer diff --git a/src/main/resources/zusetnvz/zusetnvz_p2.xsd b/src/main/resources/zusetnvz/zusetnvz_p2.xsd index 3fba91c..81c9082 100644 --- a/src/main/resources/zusetnvz/zusetnvz_p2.xsd +++ b/src/main/resources/zusetnvz/zusetnvz_p2.xsd @@ -1,8 +1,18 @@ - - + + + + + + @@ -14,7 +24,7 @@ - + @@ -60,13 +70,16 @@ - - - - - - - + + + + + + + + + + @@ -91,13 +104,16 @@ - - - - - - - + + + + + + + + + + @@ -126,6 +142,7 @@ + @@ -153,6 +170,7 @@ + @@ -184,6 +202,7 @@ + @@ -238,7 +257,7 @@ - + Ein oder mehrere Verständigungsadressen mit deren Hilfe der Empfänger eindeutig bestimmt werden soll @@ -253,18 +272,23 @@ - + - Die Existenz des Elements zeigt an, dass die gesuchte Person in Österreich gemeldet sein muss + Liste der üblichen Formaten, die der Teilnehmer jedenfalls akzeptieren muss und nicht abwählen kann. (Ausnahme: der ERV verarbeitet nur für die Langzeitarchivung geeignete PDF Formate) + + + + + Liste der Dateiformate, die vom Empfänger neben den üblichen Formaten unterstützt werden - + diff --git a/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java b/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java index 95c7140..2794fcd 100644 --- a/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java +++ b/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java @@ -12,8 +12,6 @@ import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; import at.gv.zustellung.msg.xsd.DeliveryRequestType; import at.gv.zustellung.tnvz.xsd.TNVZServicePort; import org.apache.commons.io.FileUtils; -import org.awaitility.Awaitility; -import org.awaitility.Duration; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -42,7 +40,7 @@ import java.util.function.Consumer; import static at.gv.zustellung.app2mzs.xsd.DeliveryNotificationACKType.deliveryNotificationACKTypeBuilder; import static at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType.Value.valueBuilder; import static at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType.identificationTypeBuilder; -import static at.gv.zustellung.msg.xsd.DeliveryAnswerType.deliveryAnswerTypeBuilder; +import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.PartialSuccess.partialSuccessBuilder; import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder; import static java.net.http.HttpResponse.BodyHandlers.ofString; import static org.apache.commons.io.FileUtils.readFileToString; @@ -82,7 +80,6 @@ public class ITEndToEndTest { public Consumer signatureVerifier() { return bytes -> {}; } - @Bean @Primary public ClientFactory mockClientFactory() { @@ -116,7 +113,7 @@ public class ITEndToEndTest { .withValue(value).withId("id").withType("type").build(); var tnvzHelperTest = new TnvzHelperTest(); tnvzHelperTest.setup(); - var tnvzSuccess = tnvzHelperTest.tnvzSuccess(List.of("*/*"), receiverId); + var tnvzSuccess = tnvzHelperTest.tnvzSuccess(List.of(""), true, receiverId); when(tnvz.queryPerson(any())).thenReturn(tnvzSuccess); return tnvz; @@ -133,7 +130,7 @@ public class ITEndToEndTest { var appDeliveryID = request.getMetaData().getAppDeliveryID(); var zsDeliveryID = "ZSDID-" + appDeliveryID; var responseID = RequestStatusResponse.getResponseID(appDeliveryID); - var answer = deliveryAnswerTypeBuilder() + var answer = partialSuccessBuilder() .withDeliverySystem(DELIVERY_SYSTEM) .withAppDeliveryID(appDeliveryID) .withZSDeliveryID(zsDeliveryID) diff --git a/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java index 550f089..0d5fe9d 100644 --- a/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java +++ b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java @@ -1,13 +1,13 @@ package at.gv.egiz.moazs; -import at.gv.egiz.moazs.scheme.Mzs2MsgConverter; import at.gv.egiz.moazs.client.TnvzHelper; +import at.gv.egiz.moazs.scheme.Mzs2MsgConverter; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType; -import at.gv.zustellung.msg.xsd.MetaData; -import at.gv.zustellung.msg.xsd.SystemComponentType; +import at.gv.zustellung.msg.xsd.ObjectFactory; import at.gv.zustellung.tnvz.xsd.MimeTypeList; +import at.gv.zustellung.tnvz.xsd.MimeTypeListType; import at.gv.zustellung.tnvz.xsd.QueryPersonResponse; import at.gv.zustellung.tnvz.xsd.TNVZServicePort; import org.junit.Before; @@ -29,6 +29,7 @@ import static at.gv.zustellung.msg.xsd.ErrorInfoType.errorInfoTypeBuilder; import static at.gv.zustellung.msg.xsd.MetaData.metaDataBuilder; import static at.gv.zustellung.msg.xsd.SystemComponentType.systemComponentTypeBuilder; import static at.gv.zustellung.tnvz.xsd.MimeTypeList.mimeTypeListBuilder; +import static at.gv.zustellung.tnvz.xsd.MimeTypeListType.mimeTypeListTypeBuilder; import static at.gv.zustellung.tnvz.xsd.PersonResultSuccessType.personResultSuccessTypeBuilder; import static at.gv.zustellung.tnvz.xsd.PersonResultType.Error.errorBuilder; import static at.gv.zustellung.tnvz.xsd.PersonResultType.personResultTypeBuilder; @@ -42,6 +43,8 @@ import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class TnvzHelperTest { + private static final ObjectFactory FACTORY = new ObjectFactory(); + private TnvzHelper helper; @Mock @@ -57,11 +60,11 @@ public class TnvzHelperTest { @Test public void acceptWildcardMimetype() { - List acceptedTypes = List.of("*/*"); + List acceptedTypes = List.of(); List attachedTypes = List.of("pdf", "xml", "html", "random/attachedtype"); var receiverId = identification("zbpk", "receiver-id-value"); var deliveryRequest = deliveryRequest(attachedTypes, receiverId); - var success = tnvzSuccess(acceptedTypes, receiverId); + var success = tnvzSuccess(acceptedTypes, true, receiverId); when(port.queryPerson(any())).thenReturn(success); var actual = helper.performQueryPersonRequest(deliveryRequest, port); @@ -86,7 +89,7 @@ public class TnvzHelperTest { List attachedTypes = List.of("pdf", "xml", "html", "random/attachedtype"); var receiverId = identification("zbpk", "receiver-id-value"); var deliveryRequest = deliveryRequest(attachedTypes, receiverId); - var success = tnvzSuccess(acceptedTypes, receiverId); + var success = tnvzSuccess(acceptedTypes, false, receiverId); when(port.queryPerson(any())).thenReturn(success); helper.performQueryPersonRequest(deliveryRequest, port); @@ -98,7 +101,7 @@ public class TnvzHelperTest { List attachedTypes = List.of("pdf", "xml"); var receiverId = identification("zbpk", "receiver-id-value"); var deliveryRequest = deliveryRequest(attachedTypes, receiverId); - var success = tnvzSuccess(acceptedTypes, receiverId); + var success = tnvzSuccess(acceptedTypes, false, receiverId); when(port.queryPerson(any())).thenReturn(success); var actual = helper.performQueryPersonRequest(deliveryRequest, port); @@ -156,23 +159,31 @@ public class TnvzHelperTest { .collect(toList()); } - public QueryPersonResponse tnvzSuccess(List mimeTypes, IdentificationType receiverId) { + public QueryPersonResponse tnvzSuccess(List mimeTypes, boolean allMimetypesAccepted, IdentificationType receiverId) { - var success = personResultSuccessTypeBuilder() + var successBuilder = personResultSuccessTypeBuilder() .withMimeTypeList(setupMimeTypeList(mimeTypes)) - .withIdentification(converter.convert(receiverId)) - .build(); + .withIdentification(converter.convert(receiverId)); + + if(allMimetypesAccepted) { + successBuilder.withAllStandardMimeTypes(FACTORY.createIndicatorType()); + } var personResult = personResultTypeBuilder() - .withSuccess(success) + .withSuccess(successBuilder.build()) .build(); var queryResultList = queryResultListBuilder() .withQueryResult(List.of(personResult)) .build(); + MimeTypeListType standardList = mimeTypeListTypeBuilder() + .withMimeType(List.of()) + .build(); + return queryPersonResponseBuilder() .withQueryResultList(queryResultList) + .withStandardMimeTypeList(standardList) .build(); } diff --git a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml index 2f99af5..82af5cc 100644 --- a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml +++ b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml @@ -33,7 +33,6 @@ 1984-01-24 - false %s diff --git a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml index f81a554..f61531f 100644 --- a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml +++ b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml @@ -11,7 +11,6 @@ %s %s %s - false -- cgit v1.2.3