aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java202
1 files changed, 202 insertions, 0 deletions
diff --git a/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java
new file mode 100644
index 0000000..4425297
--- /dev/null
+++ b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java
@@ -0,0 +1,202 @@
+package at.gv.egiz.moazs;
+
+
+import at.gv.egiz.moazs.scheme.Mzs2MsgConverter;
+import at.gv.egiz.moazs.tnvz.TnvzHelper;
+import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
+import at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType;
+import at.gv.zustellung.tnvz.xsd.MimeTypeList;
+import at.gv.zustellung.tnvz.xsd.QueryPersonResponse;
+import at.gv.zustellung.tnvz.xsd.TNVZServicePort;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import java.util.List;
+
+import static at.gv.egiz.moazs.MoaZSException.moaZSExceptionBuilder;
+import static at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Payload.payloadBuilder;
+import static at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Receiver.receiverBuilder;
+import static at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Sender.senderBuilder;
+import static at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.deliveryRequestTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.TnvzMetaDataType.tnvzMetaDataTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.persondata.CorporateBodyType.corporateBodyTypeBuilder;
+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.ErrorInfoType.errorInfoTypeBuilder;
+import static at.gv.zustellung.tnvz.xsd.MimeTypeList.mimeTypeListBuilder;
+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;
+import static at.gv.zustellung.tnvz.xsd.QueryPersonResponse.QueryResultList.queryResultListBuilder;
+import static at.gv.zustellung.tnvz.xsd.QueryPersonResponse.queryPersonResponseBuilder;
+import static java.util.stream.Collectors.toList;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class TnvzHelperTest {
+
+ private TnvzHelper helper;
+
+ @Mock
+ private TNVZServicePort port;
+
+ private Mzs2MsgConverter converter;
+
+ @Before
+ public void setup() {
+ converter = new Mzs2MsgConverter();
+ helper = new TnvzHelper(converter);
+ }
+
+ @Test
+ public void acceptWildcardMimetype() {
+ List<String> acceptedTypes = List.of("*/*");
+ List<String> 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);
+ when(port.queryPerson(any())).thenReturn(success);
+
+ var actual = helper.performQueryPersonRequest(deliveryRequest, port, moaZSExceptionBuilder());
+
+ assertThat(actual).isEqualToComparingFieldByFieldRecursively(receiverId);
+ }
+
+ @Test(expected = MoaZSException.class)
+ public void rejectWhenNotAddressable() {
+ List<String> attachedTypes = List.of("*/*");
+ var receiverId = identification("zbpk", "receiver-id-value");
+ var deliveryRequest = deliveryRequest(attachedTypes, receiverId);
+ var error = tnvzError("400", "Person not found.");
+ when(port.queryPerson(any())).thenReturn(error);
+
+ helper.performQueryPersonRequest(deliveryRequest, port, moaZSExceptionBuilder());
+ }
+
+ @Test(expected = MoaZSException.class)
+ public void rejectMismatchedMimeTypes() {
+ List<String> acceptedTypes = List.of("xml");
+ List<String> 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);
+ when(port.queryPerson(any())).thenReturn(success);
+
+ helper.performQueryPersonRequest(deliveryRequest, port, moaZSExceptionBuilder());
+ }
+
+ @Test
+ public void acceptSpecificMimeType() {
+ List<String> acceptedTypes = List.of("pdf", "xml", "html");
+ List<String> attachedTypes = List.of("pdf", "xml");
+ var receiverId = identification("zbpk", "receiver-id-value");
+ var deliveryRequest = deliveryRequest(attachedTypes, receiverId);
+ var success = tnvzSuccess(acceptedTypes, receiverId);
+ when(port.queryPerson(any())).thenReturn(success);
+
+ var actual = helper.performQueryPersonRequest(deliveryRequest, port, moaZSExceptionBuilder());
+
+ assertThat(actual).isEqualToComparingFieldByFieldRecursively(receiverId);
+ }
+
+
+ private DeliveryRequestType deliveryRequest(List<String> mzsMimeTypes, IdentificationType receiverId) {
+
+ var corporateBody = corporateBodyTypeBuilder()
+ .withFullName("Corporate Sender GmbH")
+ .withIdentification(List.of(identification("zbpk", "deadbeef")))
+ .build();
+
+ var sender = senderBuilder()
+ .withCorporateBody(corporateBody)
+ .build();
+
+ var receiver = receiverBuilder()
+ .withIdentification(receiverId)
+ .build();
+
+ var metadata = tnvzMetaDataTypeBuilder()
+ .build();
+
+ return deliveryRequestTypeBuilder()
+ .withSender(sender)
+ .withReceiver(receiver)
+ .withTnvzMetaData(metadata)
+ .withPayload(payload(mzsMimeTypes))
+ .build();
+ }
+
+ private IdentificationType identification(String id, String value) {
+
+ var receiverIdValue = valueBuilder()
+ .withValue(value)
+ .build();
+
+ return identificationTypeBuilder()
+ .withId(id)
+ .withValue(receiverIdValue)
+ .build();
+ }
+
+ private List<DeliveryRequestType.Payload> payload(List<String> mimeTypes) {
+ return mimeTypes.stream()
+ .map((mtype) -> payloadBuilder().withMIMEType(mtype).build())
+ .collect(toList());
+ }
+
+ private QueryPersonResponse tnvzSuccess(List<String> mimeTypes, IdentificationType receiverId) {
+
+ var success = personResultSuccessTypeBuilder()
+ .withMimeTypeList(setupMimeTypeList(mimeTypes))
+ .withIdentification(converter.convert(receiverId))
+ .build();
+
+ var personResult = personResultTypeBuilder()
+ .withSuccess(success)
+ .build();
+
+ var queryResultList = queryResultListBuilder()
+ .withQueryResult(List.of(personResult))
+ .build();
+
+ return queryPersonResponseBuilder()
+ .withQueryResultList(queryResultList)
+ .build();
+ }
+
+ private QueryPersonResponse tnvzError(String code, String text) {
+
+ var info = errorInfoTypeBuilder()
+ .withCode(code)
+ .withText(text)
+ .build();
+
+ var error = errorBuilder()
+ .withErrorInfo(info)
+ .build();
+
+ var result = personResultTypeBuilder()
+ .withError(error)
+ .build();
+
+ var queryResultList = queryResultListBuilder()
+ .withQueryResult(List.of(result))
+ .build();
+
+ return queryPersonResponseBuilder()
+ .withQueryResultList(queryResultList)
+ .build();
+ }
+
+
+ private MimeTypeList setupMimeTypeList(List<String> mimeTypes) {
+ return mimeTypeListBuilder().withMimeType(mimeTypes).build();
+ }
+
+
+}