diff options
Diffstat (limited to 'src/test/java/at/gv/egiz/moazs')
7 files changed, 169 insertions, 35 deletions
diff --git a/src/test/java/at/gv/egiz/moazs/ConfigProfileGeneratorTest.java b/src/test/java/at/gv/egiz/moazs/ConfigProfileGeneratorTest.java index ff981a9..f408c3b 100644 --- a/src/test/java/at/gv/egiz/moazs/ConfigProfileGeneratorTest.java +++ b/src/test/java/at/gv/egiz/moazs/ConfigProfileGeneratorTest.java @@ -1,6 +1,6 @@ package at.gv.egiz.moazs; -import at.gv.egiz.moazs.scheme.MzsDeliveryRequestValidator; +import at.gv.egiz.moazs.preprocess.MzsDeliveryRequestValidator; import at.gv.egiz.moazs.preprocess.*; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java b/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java index 3bc0d3b..12f1dea 100644 --- a/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java +++ b/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java @@ -1,6 +1,6 @@ package at.gv.egiz.moazs; -import at.gv.egiz.moazs.scheme.MzsDeliveryRequestValidator; +import at.gv.egiz.moazs.preprocess.MzsDeliveryRequestValidator; import at.gv.egiz.moazs.preprocess.ConfigUtil; import at.gv.egiz.moazs.preprocess.DeliveryRequestAugmenter; import at.gv.zustellung.app2mzs.xsd.ConfigType; diff --git a/src/test/java/at/gv/egiz/moazs/ITMsgClientTest.java b/src/test/java/at/gv/egiz/moazs/ITMsgClientTest.java index 70e300c..0f87dd6 100644 --- a/src/test/java/at/gv/egiz/moazs/ITMsgClientTest.java +++ b/src/test/java/at/gv/egiz/moazs/ITMsgClientTest.java @@ -1,6 +1,6 @@ package at.gv.egiz.moazs; -import at.gv.egiz.moazs.util.ClientFactory; +import at.gv.egiz.moazs.client.ClientFactory; import at.gv.egiz.moazs.scheme.Marshaller; import at.gv.zustellung.app2mzs.xsd.ClientType; import at.gv.zustellung.app2mzs.xsd.KeyStoreType; diff --git a/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java b/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java index 4f24518..22aa03f 100644 --- a/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java +++ b/src/test/java/at/gv/egiz/moazs/ITMzsServiceTest.java @@ -1,7 +1,8 @@ package at.gv.egiz.moazs; -import at.gv.egiz.moazs.pipeline.DeliveryPipeline; +import at.gv.egiz.moazs.process.DeliveryPipeline; import at.gv.egiz.moazs.repository.DeliveryRepository; +import at.gv.egiz.moazs.scheme.RequestStatusResponse; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; @@ -63,7 +64,7 @@ public class ITMzsServiceTest { .withSuccess(success) .build(); - repository.add(status); + repository.add(new RequestStatusResponse(status)); }; } diff --git a/src/test/java/at/gv/egiz/moazs/SafeResponseToFileSinkTest.java b/src/test/java/at/gv/egiz/moazs/SafeResponseToFileSinkTest.java new file mode 100644 index 0000000..9092dfb --- /dev/null +++ b/src/test/java/at/gv/egiz/moazs/SafeResponseToFileSinkTest.java @@ -0,0 +1,113 @@ +package at.gv.egiz.moazs; + +import at.gv.egiz.moazs.process.SafeResponseToFileSink; +import at.gv.egiz.moazs.repository.BinaryRepository; +import at.gv.egiz.moazs.scheme.Marshaller; +import at.gv.egiz.moazs.scheme.RequestStatusResponse; +import org.apache.commons.io.FileUtils; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Collection; + +import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.Success.successBuilder; +import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder; +import static java.util.Optional.of; +import static org.apache.commons.io.FileUtils.readFileToString; +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 SafeResponseToFileSinkTest { + + private static final Logger log = LoggerFactory.getLogger(SafeResponseToFileSinkTest.class); + + private SafeResponseToFileSink sink; + + private final String root = "./target/tmp/SafeResponseToFileSinkTestOut"; + + @Mock + private BinaryRepository repository; + + @Mock + private Marshaller marshaller; + + + @Before + public void setup() { + sink = new SafeResponseToFileSink(marshaller, repository, root); + deleteRoot(); + + } + + private void deleteRoot() { + try { + FileUtils.deleteDirectory(new File(root)); + } catch (IOException e) { + log.warn("Could not delete {}", root); + } + } + + @Test + public void safeRequestToFiles() { + + var fileContent = "<xml>some content</xml>"; + var status = setupMocks(fileContent); + + sink.handle(status) + .thenRun(() -> assertFilesCreatedAndContentMatches(fileContent)); + } + + private void assertFilesCreatedAndContentMatches(String fileContent) { + var rootFolder = new File(root); + Collection<File> files = FileUtils.listFiles(rootFolder, null, true); + + assertThat(rootFolder.exists()).isTrue(); + assertThat(rootFolder.isDirectory()).isTrue(); + assertThat(files).isNotEmpty(); + + files.stream() + .map(file -> readFile(file)) + .forEach(content -> assertThat(content).isEqualTo(fileContent)); + } + + private String readFile(File file) { + try { + return readFileToString(file, StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private RequestStatusResponse setupMocks(String fileContent) { + + var appDeliveryId = "app-delivery-id"; + var responseId = RequestStatusResponse.getResponseID(appDeliveryId); + + when(repository.get(responseId)) + .thenReturn(of(fileContent.getBytes(StandardCharsets.UTF_8))); + when(marshaller.marshallXml(any())).thenReturn(fileContent); + + var success = successBuilder() + .withAppDeliveryID(appDeliveryId) + .build(); + + var status = deliveryRequestStatusTypeBuilder() + .withSuccess(success) + .build(); + + return new RequestStatusResponse(status); + + + } + +} diff --git a/src/test/java/at/gv/egiz/moazs/SingleThreadedDeliveryPipelineTest.java b/src/test/java/at/gv/egiz/moazs/SingleThreadedDeliveryPipelineTest.java index c08d567..e145cd9 100644 --- a/src/test/java/at/gv/egiz/moazs/SingleThreadedDeliveryPipelineTest.java +++ b/src/test/java/at/gv/egiz/moazs/SingleThreadedDeliveryPipelineTest.java @@ -1,12 +1,14 @@ package at.gv.egiz.moazs; -import at.gv.egiz.moazs.util.ClientFactory; -import at.gv.egiz.moazs.pipeline.DeliveryPipeline; -import at.gv.egiz.moazs.pipeline.SingleThreadedDeliveryPipeline; +import at.gv.egiz.moazs.process.DeliveryPipeline; +import at.gv.egiz.moazs.process.SingleThreadedDeliveryPipeline; +import at.gv.egiz.moazs.client.TnvzHelper; +import at.gv.egiz.moazs.repository.BinaryRepository; +import at.gv.egiz.moazs.repository.InMemoryBinaryRepository; +import at.gv.egiz.moazs.scheme.*; +import at.gv.egiz.moazs.client.ClientFactory; import at.gv.egiz.moazs.repository.DeliveryRepository; import at.gv.egiz.moazs.repository.InMemoryDeliveryRepository; -import at.gv.egiz.moazs.scheme.Mzs2MsgConverter; -import at.gv.egiz.moazs.scheme.TnvzHelper; import at.gv.egiz.moazs.verify.MoaSPSSSignatureVerifier; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import at.gv.zustellung.msg.xsd.App2ZusePort; @@ -22,6 +24,7 @@ import org.mockito.junit.MockitoJUnitRunner; import static at.gv.egiz.moazs.MoaZSException.moaZSException; import static at.gv.egiz.moazs.MoaZSException.moaZSExceptionBuilder; +import static at.gv.egiz.moazs.scheme.RequestStatusResponse.getResponseID; import static at.gv.zustellung.app2mzs.xsd.ClientType.clientTypeBuilder; import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder; import static at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.deliveryRequestTypeBuilder; @@ -37,6 +40,7 @@ import static org.mockito.Mockito.*; public class SingleThreadedDeliveryPipelineTest { private DeliveryRepository repository = new InMemoryDeliveryRepository(); + private BinaryRepository binaryRepository = new InMemoryBinaryRepository(30); @Mock private TnvzHelper tnvzHelper; @@ -61,57 +65,70 @@ public class SingleThreadedDeliveryPipelineTest { @Before public void setup() { - pipeline = new SingleThreadedDeliveryPipeline(repository, tnvzHelper, converter, clientFactory, verifier); + pipeline = new SingleThreadedDeliveryPipeline( + repository, + binaryRepository, + tnvzHelper, + converter, + clientFactory, + verifier); } @Test public void executePipelineWithoutTnvzRequest() { - var appDeliveryId = "no-tnvz-request"; - var expectedStatus = setupMocks(appDeliveryId, false); + var appDeliveryID = "no-tnvz-request"; + var expectedStatus = setupMocks(appDeliveryID, false); - pipeline.processRequest(appDeliveryId); + pipeline.processRequest(appDeliveryID); verifyZeroInteractions(tnvzHelper); - var actualStatus = repository.getDeliveryRequestStatus(appDeliveryId).get(); + var response = repository.getResponse(getResponseID(appDeliveryID)).get(); + var actualStatus = (DeliveryRequestStatusType) response.getResponse(); assertThat(actualStatus).isEqualTo(expectedStatus); } @Test public void rejectDeliveryWhenReceiverIsNotAddressable() { - var appDeliveryId = "not-addressable"; - setupMocks(appDeliveryId, true); + var appDeliveryID = "not-addressable"; + setupMocks(appDeliveryID, true); when(tnvzHelper.performQueryPersonRequest(any(), any(), any())) - .thenThrow(buildMzsException("400")); + .thenThrow(buildMzsException("400", appDeliveryID)); - pipeline.processRequest(appDeliveryId); - var actualCode = repository.getDeliveryRequestStatus(appDeliveryId).get() - .getError().getErrorInfo().getCode(); + pipeline.processRequest(appDeliveryID); + + var responseId = getResponseID(appDeliveryID); + var response = repository.getResponse(responseId).get(); + var status = (DeliveryRequestStatusType) response.getResponse(); + var actualCode = status.getError().getErrorInfo().getCode(); - verify(tnvzHelper).performQueryPersonRequest(any(), any(), any()); assertThat(actualCode).isEqualTo("400"); + verifyZeroInteractions(converter); + verify(tnvzHelper).performQueryPersonRequest(any(), any(), any()); } @Test public void executePipelineWithTnvzRequest() { - var appDeliveryId = "tnvz-request"; - var expectedStatus = setupMocks(appDeliveryId, true); + var appDeliveryID = "tnvz-request"; + var expectedStatus = setupMocks(appDeliveryID, true); - pipeline.processRequest(appDeliveryId); - var actualStatus = repository.getDeliveryRequestStatus(appDeliveryId).get(); + pipeline.processRequest(appDeliveryID); + var response = repository.getResponse(getResponseID(appDeliveryID)).get(); + var actualStatus = (DeliveryRequestStatusType) response.getResponse(); assertThat(actualStatus).isEqualTo(expectedStatus); } @Test public void rejectInvalidSignature() { - var appDeliveryId = "invalid-signature"; - setupMocks(appDeliveryId, true); + var appDeliveryID = "invalid-signature"; + setupMocks(appDeliveryID, true); doThrow(moaZSException("Signature Invalid!")).when(verifier).verify(any()); - pipeline.processRequest(appDeliveryId); - var actualCode = repository.getDeliveryRequestStatus(appDeliveryId).get() - .getError().getErrorInfo().getCode(); + pipeline.processRequest(appDeliveryID); + var response = repository.getResponse(getResponseID(appDeliveryID)).get(); + var status = (DeliveryRequestStatusType) response.getResponse(); + var actualCode = status.getError().getErrorInfo().getCode(); assertThat(actualCode).isEqualTo(MoaZSException.ERROR_MOASP_SIGNATURE_INVALID); @@ -125,7 +142,7 @@ public class SingleThreadedDeliveryPipelineTest { var signedStatus = new byte[0]; var identification = IdentificationType.identificationTypeBuilder().build(); repository.add(mzsRequest); - repository.addSignedDeliveryRequestStatus(signedStatus, appDeliveryId); + binaryRepository.add(getResponseID(appDeliveryId), signedStatus); when(converter.convert(eq(mzsRequest) )).thenReturn(msgRequest); when(converter.convert(eq(mzsRequest), any())).thenReturn(msgRequest); @@ -140,8 +157,11 @@ public class SingleThreadedDeliveryPipelineTest { } - private MoaZSException buildMzsException(String code) { - return moaZSExceptionBuilder("").withErrorCode(code).build(); + private MoaZSException buildMzsException(String code, String appDeliveryID) { + return moaZSExceptionBuilder("") + .withErrorCode(code) + .withAppDeliveryID(appDeliveryID) + .build(); } private DeliveryRequestStatusType setupStatus(String appDeliveryId) { diff --git a/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java index 66873d4..b58002b 100644 --- a/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java +++ b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java @@ -2,7 +2,7 @@ package at.gv.egiz.moazs; import at.gv.egiz.moazs.scheme.Mzs2MsgConverter; -import at.gv.egiz.moazs.scheme.TnvzHelper; +import at.gv.egiz.moazs.client.TnvzHelper; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType; import at.gv.zustellung.tnvz.xsd.MimeTypeList; |