aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-12-09 09:36:48 +0100
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-12-09 09:38:39 +0100
commit5cb5e4803e315bb717c9db882f60c848da8e660c (patch)
tree92c7fff683bd4565c140c84f7151560c98e7cd78
parenta9585d867a2b432f6d75237e0857dd8af2daf554 (diff)
downloadmoa-zs-5cb5e4803e315bb717c9db882f60c848da8e660c.tar.gz
moa-zs-5cb5e4803e315bb717c9db882f60c848da8e660c.tar.bz2
moa-zs-5cb5e4803e315bb717c9db882f60c848da8e660c.zip
Add "Forward-Response-to-Service" Test Cases
- Refactor: Move genTimestamp from ITMzsServiceTest to TestUtils (because needed in multiple test cases). - application.yaml: Complete app-client config in config profile.
-rw-r--r--pom.xml8
-rw-r--r--src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java14
-rw-r--r--src/test/java/at/gv/egiz/moazs/ITForwardResponseTest.java121
-rw-r--r--src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java12
-rw-r--r--src/test/java/at/gv/egiz/moazs/TestUtils.java13
-rw-r--r--src/test/resources/config/application.yaml6
6 files changed, 148 insertions, 26 deletions
diff --git a/pom.xml b/pom.xml
index 0351b0a..d905da2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,7 @@
<egovutils.version>2.0.7-snapshot</egovutils.version>
<eaaf-components.version>1.0.9</eaaf-components.version>
<maven-surefire-plugin.version>2.22.1</maven-surefire-plugin.version>
+ <mockito-soap-cxf.version>1.0.5</mockito-soap-cxf.version>
<mzs.ns>http://reference.e-government.gv.at/namespace/zustellung/mzs/app2mzs#</mzs.ns>
<mzs.p.ns>http://reference.e-government.gv.at/namespace/zustellung/mzs/persondata#</mzs.p.ns>
@@ -172,6 +173,13 @@
<version>3.1.6</version>
<scope>test</scope>
</dependency>
+ <!-- mock cxf soap service -->
+ <dependency>
+ <groupId>com.github.skjolber</groupId>
+ <artifactId>mockito-soap-cxf</artifactId>
+ <version>${mockito-soap-cxf.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<finalName>moa-zs</finalName>
diff --git a/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java b/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java
index 5baddfc..eb761ec 100644
--- a/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java
+++ b/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java
@@ -34,7 +34,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.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
@@ -50,25 +49,16 @@ import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Paths;
import java.util.Collection;
import java.util.List;
import java.util.function.Consumer;
-import static at.gv.egiz.moazs.TestUtils.formatFile;
-import static at.gv.egiz.moazs.TestUtils.sendSOAP;
+import static at.gv.egiz.moazs.TestUtils.*;
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.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;
import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
import static org.mockito.Mockito.*;
@@ -188,7 +178,7 @@ public class ITEndToEndTest {
//prepare
var appDeliveryID = "delivery-request-id";
var zsDeliveryID = "ZSDID-" + appDeliveryID;
- var timestamp = ITMzsServiceTest.genTimeStamp().toXMLFormat();
+ var timestamp = genTimeStamp().toXMLFormat();
var saveSinkFolder = "target/tmp/ITEndToEndTestOut";
delete(saveSinkFolder);
diff --git a/src/test/java/at/gv/egiz/moazs/ITForwardResponseTest.java b/src/test/java/at/gv/egiz/moazs/ITForwardResponseTest.java
new file mode 100644
index 0000000..34935ee
--- /dev/null
+++ b/src/test/java/at/gv/egiz/moazs/ITForwardResponseTest.java
@@ -0,0 +1,121 @@
+package at.gv.egiz.moazs;
+
+
+import at.gv.zustellung.app2mzs.xsd.ConfigType;
+import at.gv.zustellung.app2mzs.xsd.DeliveryNotificationACKType;
+import at.gv.zustellung.app2mzs.xsd.DeliveryNotificationType;
+import at.gv.zustellung.app2mzs.xsd.Mzs2AppPortType;
+import com.skjolberg.mockito.soap.SoapServiceRule;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.stubbing.Answer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.PostConstruct;
+import java.io.IOException;
+import java.util.Map;
+
+import static at.gv.egiz.moazs.TestUtils.*;
+import static at.gv.egiz.moazs.preprocess.ConfigProfileGenerator.DEFAULT_CONFIG_KEY;
+import static at.gv.zustellung.app2mzs.xsd.DeliveryNotificationACKType.deliveryNotificationACKTypeBuilder;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = {MoaZS.class})
+@TestPropertySource(locations = {"/config/application.yaml"}, properties = {
+ "delivery-request-configuration-profiles.default.msg-response-sinks.forward-response-to-service.active:true"
+})
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class ITForwardResponseTest {
+
+ @Autowired
+ private Map<String, ConfigType> deliveryRequestConfigs;
+
+ @LocalServerPort
+ public int port;
+
+ @Rule
+ public SoapServiceRule soap = SoapServiceRule.newInstance();
+
+ private Mzs2AppPortType mzs2appPort;
+ private final String notificationPath = "src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml";
+ private String frontendURI;
+
+ @PostConstruct
+ void init() {
+ frontendURI = "http://localhost:" + port + "/services/msg/";
+ }
+
+ @Before
+ public void setup() {
+ var clientParameters = deliveryRequestConfigs.get(DEFAULT_CONFIG_KEY)
+ .getMsgResponseSinks()
+ .getForwardResponseToService()
+ .getAppClient();
+
+ mzs2appPort = soap.mock(Mzs2AppPortType.class, clientParameters.getURL());
+ }
+
+ @Test
+ public void ackSuccessfulReceipt() throws IOException, InterruptedException {
+
+ when(mzs2appPort.forwardNotification(any())).thenAnswer(acknowledge());
+
+ var appDeliveryID = "ack-successful-receipt";
+ var zsDeliveryID = "ZSDID-" + appDeliveryID;
+ var timestamp = genTimeStamp().toXMLFormat();
+ var notification = formatFile(notificationPath, new String[] {
+ "any-system", zsDeliveryID, appDeliveryID, "any-watermark", timestamp, timestamp});
+
+ var response = sendSOAP(frontendURI, notification);
+ assertThat(response.body()).contains("DeliveryNotificationACK", appDeliveryID);
+
+ }
+
+ private Answer<DeliveryNotificationACKType> acknowledge() {
+ return i -> {
+ var notification = (DeliveryNotificationType) i.getArgument(0);
+ var appDeliveryID = notification.getSuccess().getAppDeliveryID();
+ return deliveryNotificationACKTypeBuilder()
+ .withAppDeliveryID(appDeliveryID)
+ .build();
+ };
+ }
+
+ @Test
+ public void nackFaultyReceipt() throws IOException, InterruptedException {
+
+ when(mzs2appPort.forwardNotification(any())).thenAnswer(fault());
+
+ var appDeliveryID = "nack-faulty-receipt";
+ var zsDeliveryID = "ZSDID-" + appDeliveryID;
+ var timestamp = genTimeStamp().toXMLFormat();
+ var notification = formatFile(notificationPath, new String[] {
+ "any-system", zsDeliveryID, appDeliveryID, "any-watermark", timestamp, timestamp});
+
+ var response = sendSOAP(frontendURI, notification);
+ assertThat(response.body()).contains("soap:Fault");
+
+ }
+
+ private Answer<DeliveryNotificationACKType> fault() {
+ return i -> {
+ throw new RuntimeException("Service offline");
+ };
+ }
+
+
+
+
+
+
+}
diff --git a/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java b/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java
index e33a9cd..5719814 100644
--- a/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java
+++ b/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java
@@ -35,18 +35,15 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.test.context.junit4.SpringRunner;
-import javax.xml.datatype.DatatypeConfigurationException;
-import javax.xml.datatype.DatatypeFactory;
-import javax.xml.datatype.XMLGregorianCalendar;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Paths;
-import java.util.GregorianCalendar;
import java.util.function.Consumer;
+import static at.gv.egiz.moazs.TestUtils.genTimeStamp;
import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.Success.successBuilder;
import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder;
import static java.net.http.HttpClient.Version;
@@ -153,13 +150,6 @@ public class ITMzsServiceTest {
}
- public static XMLGregorianCalendar genTimeStamp() {
- try {
- return DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar());
- } catch (DatatypeConfigurationException e) {
- throw new RuntimeException("ups");
- }
- }
}
diff --git a/src/test/java/at/gv/egiz/moazs/TestUtils.java b/src/test/java/at/gv/egiz/moazs/TestUtils.java
index 96d3a22..8120af1 100644
--- a/src/test/java/at/gv/egiz/moazs/TestUtils.java
+++ b/src/test/java/at/gv/egiz/moazs/TestUtils.java
@@ -2,6 +2,9 @@ package at.gv.egiz.moazs;
import org.apache.commons.io.FileUtils;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
import java.io.File;
import java.io.IOException;
import java.net.URI;
@@ -9,6 +12,7 @@ import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
+import java.util.GregorianCalendar;
import static java.net.http.HttpResponse.BodyHandlers.ofString;
@@ -33,4 +37,13 @@ public class TestUtils {
return client.send(request, ofString());
}
+
+ public static XMLGregorianCalendar genTimeStamp() {
+ try {
+ return DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar());
+ } catch (DatatypeConfigurationException e) {
+ throw new RuntimeException("ups");
+ }
+
+ }
}
diff --git a/src/test/resources/config/application.yaml b/src/test/resources/config/application.yaml
index b6f8ef8..73f1ed9 100644
--- a/src/test/resources/config/application.yaml
+++ b/src/test/resources/config/application.yaml
@@ -132,9 +132,9 @@ delivery-request-configuration-profiles:
active: false
# Mandatory if activated
app-client:
- url: http://service.which.implements.mzs2app.wsdl/services/
- # connection-timeout
- # receive-timeout
+ url: http://localhost:2526/
+ connection-timeout: 30000
+ receive-timeout: 30000
# ssl...
# Optional