diff options
author | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-06-28 10:29:50 +0200 |
---|---|---|
committer | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-06-28 10:29:50 +0200 |
commit | c43f9764b2132ce54a491c1daeeafe6aa4851ef5 (patch) | |
tree | 3f900f37b612fffd11a6069dd814f16474957053 /src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java | |
parent | 7eb6db5c837db22055b51988031920599a7e7270 (diff) | |
download | moa-zs-c43f9764b2132ce54a491c1daeeafe6aa4851ef5.tar.gz moa-zs-c43f9764b2132ce54a491c1daeeafe6aa4851ef5.tar.bz2 moa-zs-c43f9764b2132ce54a491c1daeeafe6aa4851ef5.zip |
Separate Test Suite into Unit- And Integration Tests
Per default, integration tests are excluded from build. They can be
included with the `-P integration-test` argument.
- Pom: Add maven profile for integration tests.
- Rename integration tests (add `IT` prefix).
- Move Resources into IT* folders.
- Add MsgClientTest to test suite and add assertions to each test case.
Diffstat (limited to 'src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java')
-rw-r--r-- | src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java b/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java new file mode 100644 index 0000000..4f24518 --- /dev/null +++ b/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java @@ -0,0 +1,131 @@ +package at.gv.egiz.moazs; + +import at.gv.egiz.moazs.pipeline.DeliveryPipeline; +import at.gv.egiz.moazs.repository.DeliveryRepository; +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.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.test.context.TestConfiguration; +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 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; +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT) + +public class ITMzsServiceTest { + + private final String serviceUri = "http://localhost:8080/services/DeliveryRequest"; + + private final String basePath = "src/test/resources/at/gv/egiz/moazs/ITMzsServiceTest/"; + + private final static Logger logger = LoggerFactory.getLogger(ITMzsServiceTest.class); + + @TestConfiguration + public static class TestConfig { + + @Autowired + private DeliveryRepository repository; + + @Bean + @Primary + public DeliveryPipeline deliveryPipelineThatAlwaysSucceeds() { + return appDeliveryId -> { + + var success = successBuilder() + .withDeliverySystem("Test Delivery System") + .withZSDeliveryID("ZD-Delivery-ID") + .withAppDeliveryID(appDeliveryId) + .withDeliveryTimestamp(genTimeStamp()) + .build(); + + var status = deliveryRequestStatusTypeBuilder() + .withSuccess(success) + .build(); + + repository.add(status); + }; + } + + private XMLGregorianCalendar genTimeStamp() { + try { + return DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()); + } catch (DatatypeConfigurationException e) { + throw new RuntimeException("ups"); + } + + } + } + + @Test + public void acceptValidDeliveryRequest() throws IOException, InterruptedException { + var response = sendDeliveryRequestFile("validDeliveryRequest.soap"); + assertEquals(200, response.statusCode()); + } + + @Test + public void rejectRequestWithoutSender() throws IOException, InterruptedException { + var response = sendDeliveryRequestFile("missingSender.soap"); + assertEquals(500, response.statusCode()); + } + + @Test + public void rejectBothProfileAndCorporateBody() throws IOException, InterruptedException { + var response = sendDeliveryRequestFile("profileAndCorporateBody.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 { + + var path = basePath + fileName; + var client = HttpClient.newBuilder().version(Version.HTTP_1_1).build(); + var request = HttpRequest.newBuilder() + .uri(URI.create(serviceUri)) + .header("Content-Type", "text/xml;charset=UTF-8") + .header("SOAPAction", "\"\"") + .POST(HttpRequest.BodyPublishers.ofFile(Paths.get(path))) + .build(); + + return client.send(request, HttpResponse.BodyHandlers.ofString()); + + } + +} |