Skip to content
Snippets Groups Projects
Commit 53c08ba2 authored by Jan Zickermann's avatar Jan Zickermann
Browse files

OZG-5412 intelliform: Cleanup test factory

parent c990af1b
Branches
Tags
No related merge requests found
...@@ -25,13 +25,12 @@ package de.ozgcloud.eingang.intelliform; ...@@ -25,13 +25,12 @@ package de.ozgcloud.eingang.intelliform;
import static java.util.stream.Collectors.*; import static java.util.stream.Collectors.*;
import java.time.Instant; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import java.util.stream.Stream; import java.util.stream.Stream;
import de.ozgcloud.common.test.TestUtils; import lombok.Builder;
public class AttachmentTestFactory { public class AttachmentTestFactory {
...@@ -53,24 +52,29 @@ public class AttachmentTestFactory { ...@@ -53,24 +52,29 @@ public class AttachmentTestFactory {
<file content-type="image/png" description="" id="VendorId3333" length="155251">Image.png</file> <file content-type="image/png" description="" id="VendorId3333" length="155251">Image.png</file>
</Upload1> </Upload1>
</myForm>"""; </myForm>""";
public static final byte[] XML_CONTENT = XML_CONTENT_STRING.getBytes(); public static final String XML_CONTENT = XML_CONTENT_STRING;
public static final String XML_ATTACHMENT_ID = "myForm-xml"; public static final String XML_ATTACHMENT_ID = "myForm-xml";
public static final String XML_NAME = "XML-Daten.xml"; public static final String XML_NAME = "XML-Daten.xml";
public static final String PDF_ATTACHMENT_CONTENT_TYPE = "application/pdf"; public static final String PDF_ATTACHMENT_CONTENT_TYPE = "application/pdf";
public static final byte[] PDF_ATTACHMENT_CONTENT = "TestContent2".getBytes(); public static final String PDF_ATTACHMENT_CONTENT = "TestContent2";
public static final String PDF_ATTACHMENT_NAME = "Scan1.pdf"; public static final String PDF_ATTACHMENT_NAME = "Scan1.pdf";
public static final String PDF_ATTACHMENT_ID = "VendorId2222"; public static final String PDF_ATTACHMENT_ID = "VendorId2222";
public static final String PDF2_ATTACHMENT_ID = "VendorIdpdf2"; public static final String PDF2_ATTACHMENT_ID = "VendorIdpdf2";
public static final String PNG_ATTACHMENT_CONTENT_TYPE = "application/pdf"; public static final String PNG_ATTACHMENT_CONTENT_TYPE = "application/pdf";
public static final byte[] PNG_ATTACHMENT_CONTENT = "TestContent3".getBytes(); public static final String PNG_ATTACHMENT_CONTENT = "TestContent3";
public static final String PNG_ATTACHMENT_NAME = "Image.png"; public static final String PNG_ATTACHMENT_NAME = "Image.png";
public static final String PNG_ATTACHMENT_ID = "VendorId3333"; public static final String PNG_ATTACHMENT_ID = "VendorId3333";
public static final String JPG_ATTACHMENT_ID = "VendorIdjpg1"; public static final String JPG_ATTACHMENT_ID = "VendorIdjpg1";
public static final String ODT_ATTACHMENT_ID = "VendorIdodt1"; public static final String ODT_ATTACHMENT_ID = "VendorIdodt1";
public static final String ODT_ATTACHMENT_CONTENT_TYPE = "application/vnd.oasis.opendocument.text";
public static final String DOCX_ATTACHMENT_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
public static final String DOCX_ATTACHMENT_CONTENT = "TestContent4";
public static final String DOCX1_ATTACHMENT_ID = "VendorIddocx1"; public static final String DOCX1_ATTACHMENT_ID = "VendorIddocx1";
public static final String DOCX2_ATTACHMENT_ID = "VendorIddocx2"; public static final String DOCX2_ATTACHMENT_ID = "VendorIddocx2";
public static final String DOCX3_ATTACHMENT_ID = "VendorIddocx3"; public static final String DOCX3_ATTACHMENT_ID = "VendorIddocx3";
...@@ -81,7 +85,6 @@ public class AttachmentTestFactory { ...@@ -81,7 +85,6 @@ public class AttachmentTestFactory {
public static final String DOCX8_ATTACHMENT_ID = "VendorIddocx8"; public static final String DOCX8_ATTACHMENT_ID = "VendorIddocx8";
public static final String ORGANISATIONSEINHEITEN_ID = "10363455"; public static final String ORGANISATIONSEINHEITEN_ID = "10363455";
public static final String ANTRAGSTELLER_ANREDE = "Herr"; public static final String ANTRAGSTELLER_ANREDE = "Herr";
public static final String ANTRAGSTELLER_ANREDE_CODE = "03"; public static final String ANTRAGSTELLER_ANREDE_CODE = "03";
public static final String ANTRAGSTELLER_NACHNAME = "Mustermann"; public static final String ANTRAGSTELLER_NACHNAME = "Mustermann";
...@@ -94,22 +97,30 @@ public class AttachmentTestFactory { ...@@ -94,22 +97,30 @@ public class AttachmentTestFactory {
} }
public static Attachment createPdf() { public static Attachment createPdf() {
var attachment = new Attachment(); return createAttachment(MetaAttachment.builder()
attachment.getAttributes().add(createAttributesEntry()); .id(PDF_ATTACHMENT_ID)
attachment.setContent(PDF_ATTACHMENT_CONTENT); .name(PDF_ATTACHMENT_NAME)
attachment.setContentType(PDF_ATTACHMENT_CONTENT_TYPE); .contentType(PDF_ATTACHMENT_CONTENT_TYPE)
attachment.setId(PDF_ATTACHMENT_ID); .content(PDF_ATTACHMENT_CONTENT)
attachment.setName(PDF_ATTACHMENT_NAME); .build());
return attachment;
} }
public static Attachment createPng() { public static Attachment createPng() {
return createAttachment(MetaAttachment.builder()
.id(PNG_ATTACHMENT_ID)
.name(PNG_ATTACHMENT_NAME)
.contentType(PNG_ATTACHMENT_CONTENT_TYPE)
.content(PNG_ATTACHMENT_CONTENT)
.build());
}
private static Attachment createAttachment(MetaAttachment metaAttachment) {
var attachment = new Attachment(); var attachment = new Attachment();
attachment.getAttributes().add(createAttributesEntry()); attachment.getAttributes().add(createAttributesEntry());
attachment.setContent(PNG_ATTACHMENT_CONTENT); attachment.setContent(metaAttachment.content.getBytes());
attachment.setContentType(PNG_ATTACHMENT_CONTENT_TYPE); attachment.setContentType(metaAttachment.contentType);
attachment.setId(PNG_ATTACHMENT_ID); attachment.setId(metaAttachment.id);
attachment.setName(PNG_ATTACHMENT_NAME); attachment.setName(metaAttachment.name);
return attachment; return attachment;
} }
...@@ -120,87 +131,52 @@ public class AttachmentTestFactory { ...@@ -120,87 +131,52 @@ public class AttachmentTestFactory {
return attributesEntry; return attributesEntry;
} }
public static Attachment createWithIdAndName(String attachmentId, String attachmentName) { public static List<Attachment> createManyAttachments(String xmlTemplateString, Map<String, String> templateValues,
var attachment = new Attachment(); String... attachmentParameterMatrix) {
attachment.getAttributes().add(createAttributesEntry());
attachment.setContent("test content".getBytes());
attachment.setContentType("test content type");
attachment.setId(attachmentId);
attachment.setName(attachmentName);
return attachment;
}
public static Stream<Attachment> createAttachmentsForLargeXml() { var metaAttachments = arrayToMetaAttachments(attachmentParameterMatrix);
String[] templateValues = {
DOCX1_ATTACHMENT_ID, "Document1.docx",
PDF_ATTACHMENT_ID, "Document2.pdf",
DOCX2_ATTACHMENT_ID, "Document3.docx",
DOCX3_ATTACHMENT_ID, "Document4.docx",
DOCX4_ATTACHMENT_ID, "Document5.docx",
DOCX5_ATTACHMENT_ID, "Document6.docx",
DOCX6_ATTACHMENT_ID, "Document7.docx",
DOCX7_ATTACHMENT_ID, "Document8.docx",
DOCX8_ATTACHMENT_ID, "Document9.docx",
PDF2_ATTACHMENT_ID, "Document9.pdf",
ODT_ATTACHMENT_ID, "Document10.odt",
JPG_ATTACHMENT_ID, "Document11.jpg",
PNG_ATTACHMENT_ID, "Document12.png",
};
return arrayToMap(templateValues).entrySet().stream()
.map(entry -> createWithIdAndName(entry.getKey(), entry.getValue()));
}
public static Attachment createLargeXmlDaten() { var allTemplateValues = Stream.concat(
String[] templateValues = { templateValues.entrySet().stream(),
"fileid-docx1", DOCX1_ATTACHMENT_ID, metaAttachments.stream().map(metaAttachment -> Map.entry(metaAttachment.templateId, metaAttachment.id))
"fileid-docx2", DOCX2_ATTACHMENT_ID, ).collect(toMap(Map.Entry::getKey, Map.Entry::getValue));
"fileid-docx3", DOCX3_ATTACHMENT_ID,
"fileid-docx4", DOCX4_ATTACHMENT_ID,
"fileid-docx5", DOCX5_ATTACHMENT_ID,
"fileid-docx6", DOCX6_ATTACHMENT_ID,
"fileid-docx7", DOCX7_ATTACHMENT_ID,
"fileid-docx8", DOCX8_ATTACHMENT_ID,
"fileid-pdf1", PDF_ATTACHMENT_ID,
"fileid-pdf2", PDF2_ATTACHMENT_ID,
"fileid-png1", PNG_ATTACHMENT_ID,
"fileid-jpg1", JPG_ATTACHMENT_ID,
"fileid-odt1", ODT_ATTACHMENT_ID,
"oeid", ORGANISATIONSEINHEITEN_ID,
"uuid", UUID.randomUUID().toString(),
"transactionId", UUID.randomUUID().toString(),
"now", Instant.now().toString(),
"antragsteller_anrede", ANTRAGSTELLER_ANREDE,
"anrede_code", ANTRAGSTELLER_ANREDE_CODE,
"antragsteller_nachname", ANTRAGSTELLER_NACHNAME,
"antragsteller_vorname", "Max",
"antragsteller_email", "max.mustermann@example.com"
};
var xmlFormString = fillTemplateString( var xmlFormString = fillTemplateString(
TestUtils.loadTextFile("intelliform/XML-Daten-complex.template.xml"), xmlTemplateString,
arrayToMap(templateValues)); allTemplateValues
return createXmlDatenWithContent(xmlFormString.getBytes()); );
return Stream.concat(
Stream.of(createXmlDatenWithContent(xmlFormString)),
metaAttachments.stream().map(AttachmentTestFactory::createAttachment)
).toList();
} }
private static Attachment createXmlDatenWithContent(byte[] content) { private static Attachment createXmlDatenWithContent(String content) {
var attachment = new Attachment(); return createAttachment(MetaAttachment.builder()
attachment.getAttributes().add(createAttributesEntry()); .id(XML_ATTACHMENT_ID)
attachment.setContentType(XML_CONTENT_TYPE); .name(XML_NAME)
attachment.setId(XML_ATTACHMENT_ID); .contentType(XML_CONTENT_TYPE)
attachment.setName(XML_NAME); .content(content)
attachment.setContent(content); .build()
return attachment; );
}
@Builder
private record MetaAttachment(String id, String name, String contentType, String content, String templateId) {
} }
public static Map<String, String> arrayToMap(String[] array) { private static List<MetaAttachment> arrayToMetaAttachments(String[] array) {
if (array.length % 2 != 0) { int parameterCount = 5;
throw new IllegalArgumentException("Array length must be even to form key-value pairs."); if (array.length % parameterCount != 0) {
throw new IllegalArgumentException("Matrix length must be divisible by %d.".formatted(parameterCount));
} }
return IntStream.range(0, array.length / 2) return IntStream.range(0, array.length / parameterCount)
.boxed() .boxed()
.collect(toMap(i -> array[2 * i], i -> array[2 * i + 1])); .map(row -> row * parameterCount)
.map(offset -> new MetaAttachment(array[offset], array[offset + 1], array[offset + 2], array[offset + 3], array[offset + 4]))
.toList();
} }
private static String fillTemplateString(String templateString, Map<String, String> templateValues) { private static String fillTemplateString(String templateString, Map<String, String> templateValues) {
......
...@@ -326,7 +326,7 @@ class DepositDataMapperTest { ...@@ -326,7 +326,7 @@ class DepositDataMapperTest {
void shouldHaveContentType() { void shouldHaveContentType() {
var incomingFile = doMapping(); var incomingFile = doMapping();
assertThat(incomingFile.getName()).isEqualTo(XML_NAME); assertThat(incomingFile.getContentType()).isEqualTo(XML_CONTENT_TYPE);
} }
@DisplayName("should have size") @DisplayName("should have size")
...@@ -334,7 +334,7 @@ class DepositDataMapperTest { ...@@ -334,7 +334,7 @@ class DepositDataMapperTest {
void shouldHaveSize() { void shouldHaveSize() {
var incomingFile = doMapping(); var incomingFile = doMapping();
assertThat(incomingFile.getSize()).isEqualTo(XML_CONTENT.length); assertThat(incomingFile.getSize()).isEqualTo(XML_CONTENT.getBytes().length);
} }
@DisplayName("should have file with content") @DisplayName("should have file with content")
......
...@@ -23,9 +23,15 @@ ...@@ -23,9 +23,15 @@
*/ */
package de.ozgcloud.eingang.intelliform; package de.ozgcloud.eingang.intelliform;
import static de.ozgcloud.eingang.intelliform.AttachmentTestFactory.*;
import java.time.Instant;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Stream; import java.util.Map;
import java.util.UUID;
import de.ozgcloud.common.test.TestUtils;
public class DepositDataTestFactory { public class DepositDataTestFactory {
...@@ -35,10 +41,32 @@ public class DepositDataTestFactory { ...@@ -35,10 +41,32 @@ public class DepositDataTestFactory {
AttachmentTestFactory.createPng() AttachmentTestFactory.createPng()
); );
public static final List<Attachment> MANY_ATTACHMENTS = Stream.concat( public static final List<Attachment> MANY_ATTACHMENTS = createManyAttachments(
Stream.of(AttachmentTestFactory.createLargeXmlDaten()), TestUtils.loadTextFile("intelliform/XML-Daten-complex.template.xml"),
AttachmentTestFactory.createAttachmentsForLargeXml() Map.of(
).toList(); "oeid", ORGANISATIONSEINHEITEN_ID,
"uuid", UUID.randomUUID().toString(),
"transactionId", UUID.randomUUID().toString(),
"now", Instant.now().toString(),
"antragsteller_anrede", ANTRAGSTELLER_ANREDE,
"anrede_code", ANTRAGSTELLER_ANREDE_CODE,
"antragsteller_nachname", ANTRAGSTELLER_NACHNAME,
"antragsteller_vorname", "Max",
"antragsteller_email", "max.mustermann@example.com"
),
DOCX1_ATTACHMENT_ID, "Document1.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx1",
PDF_ATTACHMENT_ID, "Document2.pdf", PDF_ATTACHMENT_CONTENT_TYPE, PDF_ATTACHMENT_CONTENT, "fileid-pdf1",
DOCX2_ATTACHMENT_ID, "Document3.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx2",
DOCX3_ATTACHMENT_ID, "Document4.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx3",
DOCX4_ATTACHMENT_ID, "Document5.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx4",
DOCX5_ATTACHMENT_ID, "Document6.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx5",
DOCX6_ATTACHMENT_ID, "Document7.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx6",
DOCX7_ATTACHMENT_ID, "Document8.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx7",
DOCX8_ATTACHMENT_ID, "Document9.docx", DOCX_ATTACHMENT_CONTENT_TYPE, DOCX_ATTACHMENT_CONTENT, "fileid-docx8",
PDF2_ATTACHMENT_ID, "Document9.pdf", PDF_ATTACHMENT_CONTENT_TYPE, PDF_ATTACHMENT_CONTENT, "fileid-pdf2",
ODT_ATTACHMENT_ID, "Document10.odt", ODT_ATTACHMENT_CONTENT_TYPE, "TestContent5", "fileid-odt1",
JPG_ATTACHMENT_ID, "Document11.jpg", "image/jpeg", "TestContent6", "fileid-jpg1",
PNG_ATTACHMENT_ID, "Document12.png", "image/png", "TestContent7", "fileid-png1");
public static DepositData create(Collection<Attachment> attachments) { public static DepositData create(Collection<Attachment> attachments) {
var depositData = new DepositData(); var depositData = new DepositData();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment