Skip to content
Snippets Groups Projects
Commit 9896ad22 authored by OZGCloud's avatar OZGCloud
Browse files

Merge remote-tracking branch 'origin/master' into OZG-7144_orgid_lower_case

parents 8f2ed03f 4d0f6f89
No related branches found
No related tags found
1 merge request!1Ozg 7144 orgid lower case
Showing
with 712 additions and 439 deletions
package de.ozgcloud.eingang;
import org.aspectj.lang.annotation.Pointcut;
public class EingangAspectPointcuts {
@Pointcut("execution(public * *(..))")
void anyPublicMethods() {
// aspect pointcut - no implementation needed
}
@Pointcut("within(de.ozgcloud..*)")
void anythingInOzgCloud() {
// aspect pointcut - no implementation needed
}
@Pointcut("anyPublicMethods() && anythingInOzgCloud()")
void anyPublicMethodInOzgCloud() {
// aspect pointcut - no implementation needed
}
@Pointcut("anyPublicMethodInOzgCloud() && target(de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper)")
void publicMethodInEngineBasedMapper() {
// aspect pointcut - no implementation needed
}
}
package de.ozgcloud.eingang;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import de.ozgcloud.common.logging.AspectLoggingUtils;
@Aspect
@Component
public class EingangLoggingAspect extends EingangAspectPointcuts {
@Before("publicMethodInEngineBasedMapper()")
public void onEngineBasedMapper(JoinPoint joinPoint) {
AspectLoggingUtils.log(joinPoint);
}
@AfterReturning(pointcut = "publicMethodInEngineBasedMapper()", returning = "returnValue")
public void afterServiceMethod(JoinPoint joinPoint, Object returnValue) {
AspectLoggingUtils.logReturnValue(joinPoint, returnValue);
}
}
......@@ -64,16 +64,21 @@ public class FormData {
@Singular
private List<IncomingFile> representations;
private FormDataControl control;
@Builder.Default
private FormDataControl control = FormDataControl.builder().build();
@Getter
@Builder
@Builder(toBuilder = true)
@ToString
public static class FormDataControl {
private Optional<Representations> representations;
@Builder.Default
private Optional<Representations> representations = Optional.empty();
@Builder.Default
private Optional<FormMetaData> metaData = Optional.empty();
}
@Getter
@Builder
@Builder(toBuilder = true)
public static class Representations {
private String primaryFormDataRepresentation;
private String primaryFormDataPdfRepresentation;
......
package de.ozgcloud.eingang.common.formdata;
import java.time.ZonedDateTime;
public interface FormMetaData {
ZonedDateTime getOrigin();
ZonedDateTime getDelivery();
/**
* Returns the value of the Entry, or null if this MetaData contains no Entry
* for the name.
*
* @param name Name of the requested Entry
* @return Value of the Entry
*/
String getEntry(String name);
}
package de.ozgcloud.eingang.common.formdata;
import java.util.Optional;
import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl;
import de.ozgcloud.eingang.common.formdata.FormData.Representations;
public class FormDataControlTestFactory {
public static String PRIMARY_FORM_DATA_REPRESENTATION = "Antrag.xml";
public static FormDataControl create() {
return createBuilder().build();
}
public static FormDataControl.FormDataControlBuilder createBuilder() {
return FormDataControl.builder()
.representations(Optional.of(Representations.builder()
.primaryFormDataRepresentation(PRIMARY_FORM_DATA_REPRESENTATION)
.build()))
.metaData(Optional.of(FormMetaDataTestFactory.create()));
}
}
......@@ -62,6 +62,7 @@ public class FormDataTestFactory {
.header(FormHeaderTestFactory.create())
.antragsteller(AntragstellerTestFactory.create())
.zustaendigeStelle(ZustaendigeStelleTestFactory.create())
.control(FormDataControlTestFactory.create())
.formData(Map.of(
SIMPLE_VALUE_KEY, SIMPLE_VALUE,
SUBFORM_KEY, SUBFORM_VALUE,
......
package de.ozgcloud.eingang.common.formdata;
import java.time.ZonedDateTime;
public class FormMetaDataTestFactory {
public static final String XTA_IDENTIFIER_ENTRY_NAME = "xtaIdentifier";
public static final String XTA_IDENTIFIER = "vbe:010550120100";
public static final String OE_ID = "010550120100";
public static FormMetaData create() {
return new FormMetaData() {
@Override
public ZonedDateTime getOrigin() {
return ZonedDateTime.now();
}
@Override
public ZonedDateTime getDelivery() {
return ZonedDateTime.now();
}
@Override
public String getEntry(String name) {
switch (name) {
case XTA_IDENTIFIER_ENTRY_NAME:
return XTA_IDENTIFIER;
}
return null;
}
};
}
}
......@@ -87,10 +87,9 @@
<executions>
<execution>
<id>build-image</id>
<phase>
install</phase>
<phase>install</phase>
<goals>
<goal>build-image</goal>
<goal>build-image-no-fork</goal>
</goals>
</execution>
</executions>
......
package de.ozgcloud.eingang.fim;
import de.ozgcloud.eingang.common.formdata.FormData;
public interface AntragstellerExtractor {
default void extractAntragsteller(final FormData.FormDataBuilder builder, final FormData initialFormData) {}
}
package de.ozgcloud.eingang.fim;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormHeader;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter;
import lombok.extern.log4j.Log4j2;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.Optional;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl;
import de.ozgcloud.eingang.common.formdata.FormData.Representations;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter;
import lombok.NonNull;
import lombok.extern.log4j.Log4j2;
@Log4j2
@Component
......@@ -22,9 +28,14 @@ public class FimBasedAdapter implements EngineBasedSemantikAdapter {
static final String FIM_FORM_ENGINE_NAME = "FIM";
static final String DEFAULT_FORMDATA_REPRESENTATION_NAME = "Antrag.xml";
@Autowired
private FimService fimService;
@Autowired(required = false)
private List<FimEngineBasedMapper> mappers = Collections.emptyList();
@Override
public boolean isResponsible(final FormData formData) {
final String formEngineName = formData.getHeader().getFormEngineName();
......@@ -33,42 +44,53 @@ public class FimBasedAdapter implements EngineBasedSemantikAdapter {
@Override
public FormData parseFormData(final FormData initialFormData) {
var mapped = useMappers(initialFormData);
LOG.info("FIM Mapper running to map formData");
final Optional<String> entryPointOpt = getEntryPoint(initialFormData.getHeader());
if (entryPointOpt.isEmpty()) {
LOG.error("No entry point found in metadata file for fim data mapping");
return initialFormData;
}
final Optional<IncomingFile> fileOpt = findFile(initialFormData, entryPointOpt.get());
if (fileOpt.isEmpty()) {
return findFile(initialFormData, getEntryPoint(initialFormData.getControl()))
.map(primaryRepresentation -> doParsing(mapped, primaryRepresentation))
.orElseGet(() -> {
LOG.error("Entry point file not found for fim data mapping");
return initialFormData;
return mapped;
});
}
try {
final Document document = loadDocument(fileOpt.get());
return fimService.transformDocument(document, initialFormData);
} catch (ParserConfigurationException | SAXException | IOException | FimException e) {
LOG.error("Can't transform document into fim formdata");
return initialFormData;
private FormData useMappers(FormData inFormData) {
var processedFormData = inFormData;
for (var mapper : mappers) {
processedFormData = mapper.parseFormData(processedFormData);
}
return processedFormData;
}
private Optional<IncomingFile> findFile(final FormData formData, final String name) {
for (IncomingFile file : formData.getRepresentations()) {
if (file.getName().endsWith(name)) {
return Optional.of(file);
return formData.getRepresentations().stream()
.filter(file -> file.getName().endsWith(name))
.findFirst();
}
private FormData doParsing(@NonNull FormData formData, @NonNull IncomingFile formDataPrimaryRepresentation) {
try {
return fimService.transformDocument(loadDocument(formDataPrimaryRepresentation), formData);
} catch (ParserConfigurationException | SAXException | IOException | FimException e) {
LOG.error("Can't transform document into fim formdata.", e);
return formData;
}
return Optional.empty();
}
private Optional<String> getEntryPoint(final FormHeader formHeader) {
// FIXME OZG-5778 sollte über formdata metadaten kommen statt aus dem meta file geparsed zu werden
return Optional.of("Antrag.xml");
String getEntryPoint(FormDataControl formDataControl) {
return formDataControl.getRepresentations().map(Representations::getPrimaryFormDataRepresentation)
.orElseGet(() -> {
LOG.error("No entry point found in metadata file for fim data mapping. Trying default.");
return DEFAULT_FORMDATA_REPRESENTATION_NAME;
});
}
private Document loadDocument(final IncomingFile incomingFile) throws ParserConfigurationException, IOException, SAXException {
final DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
return builder.parse(incomingFile.getContentStream());
}
}
package de.ozgcloud.eingang.fim;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
import lombok.extern.log4j.Log4j2;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang3.function.TriFunction;
import org.springframework.stereotype.Service;
import org.w3c.dom.Document;
......@@ -12,7 +12,8 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import java.util.*;
import de.ozgcloud.eingang.common.formdata.FormData;
import lombok.extern.log4j.Log4j2;
@Service
@Log4j2
......@@ -23,12 +24,10 @@ class FimDataMapper implements TriFunction<Document, FimScheme, FormData, FormDa
@Override
public FormData.FormDataBuilder apply(final Document document, final FimScheme fimScheme, final FormData initialFormData) {
final FormData.FormDataBuilder formDataBuilder = FormData.builder();
final FormData.FormDataBuilder formDataBuilder = initialFormData.toBuilder();
Map<String, Object> data = new LinkedHashMap<>();
process(document.getDocumentElement(), fimScheme, data, 0);
formDataBuilder.formData(data);
formDataBuilder.attachments(initialFormData.getAttachments());
formDataBuilder.representations(initialFormData.getRepresentations());
return formDataBuilder;
}
......
package de.ozgcloud.eingang.fim;
import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper;
public interface FimEngineBasedMapper extends EngineBasedMapper {
}
package de.ozgcloud.eingang.fim;
import lombok.extern.log4j.Log4j2;
import java.util.Map;
import java.util.Optional;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.util.Map;
import java.util.Optional;
import lombok.extern.log4j.Log4j2;
@Log4j2
public abstract class FimSchemeAdapter implements ZustaendigeStelleExtractor, AntragstellerExtractor {
public abstract class FimSchemeAdapter {
public abstract FimSchemeIdentifier forIdentifier();
......
package de.ozgcloud.eingang.fim;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
import io.micrometer.common.util.StringUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import jakarta.annotation.PostConstruct;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import de.ozgcloud.eingang.common.formdata.FormData;
import io.micrometer.common.util.StringUtils;
import lombok.extern.log4j.Log4j2;
@Service
@Log4j2
......@@ -40,7 +42,9 @@ public class FimService {
private static final FimSchemeAdapter DEFAULT_FIM_SCHEME_ADAPTER = new FimSchemeAdapter() {
@Override
public FimSchemeIdentifier forIdentifier() { return null; }
public FimSchemeIdentifier forIdentifier() {
return null;
}
};
@PostConstruct
......@@ -83,14 +87,8 @@ public class FimService {
final FimScheme scheme = getSchemeForIdentifier(schemeName);
final FormData.FormDataBuilder builder = fimDataMapper.apply(document, scheme, initialFormData);
final FimSchemeAdapter adapter = scheme.getSchemeAdapter();
builder.header(initialFormData.getHeader());
adapter.extractAntragsteller(builder, initialFormData);
adapter.extractZustaendigeStelle(builder, initialFormData);
return builder.build();
}
......
package de.ozgcloud.eingang.fim;
import de.ozgcloud.eingang.common.formdata.FormData;
public interface ZustaendigeStelleExtractor {
default void extractZustaendigeStelle (final FormData.FormDataBuilder builder, final FormData initialFormData) {}
}
package de.ozgcloud.eingang.fim;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.springframework.stereotype.Component;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
import lombok.NonNull;
@Component
class ZustaendigeStelleMapper implements FimEngineBasedMapper {
static final String XTA_IDENTIFIER_ENTRY_NAME = "xtaIdentifier";
// TODO OZG-7086 umstellen auf FIM Headerdaten
@Override
public FormData parseFormData(FormData formData) {
return formData.getControl().getMetaData()
.map(metaData -> metaData.getEntry(XTA_IDENTIFIER_ENTRY_NAME))
.filter(Objects::nonNull)
.map(oeId -> setOrganisationsEinheitId(formData.getZustaendigeStelles(), oeId))
.map(zustStelle -> formData.toBuilder().zustaendigeStelle(zustStelle).build())
.orElse(formData);
}
private ZustaendigeStelle setOrganisationsEinheitId(List<ZustaendigeStelle> stelles, @NonNull String oeid) {
var builder = stelles.isEmpty() ? ZustaendigeStelle.builder() : stelles.getFirst().toBuilder();
extractOrganisationsEinheitId(oeid).ifPresent(builder::organisationseinheitenId);
return builder.build();
}
Optional<String> extractOrganisationsEinheitId(@NonNull String xtaIdentifier) {
var idx = xtaIdentifier.indexOf(":");
if (idx < 0) {
return Optional.empty();
}
return Optional.of(xtaIdentifier.substring(idx + 1));
}
}
package de.ozgcloud.eingang.fim;
import static org.assertj.core.api.Assertions.*;
import java.util.Optional;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import de.ozgcloud.eingang.common.formdata.FormData.Representations;
import de.ozgcloud.eingang.common.formdata.FormDataControlTestFactory;
class FimBasedAdapterTest {
@InjectMocks
private FimBasedAdapter adapter;
@Nested
class TestGetEntryPoint {
@Test
void shouldReturnPrimaryRepresentation() {
var result = adapter.getEntryPoint(FormDataControlTestFactory.create());
assertThat(result).isEqualTo(FormDataControlTestFactory.PRIMARY_FORM_DATA_REPRESENTATION);
}
@Test
void shouldReturnDefaultOnMissingRepresentations() {
var result = adapter.getEntryPoint(FormDataControlTestFactory.createBuilder().representations(Optional.empty()).build());
assertThat(result).isEqualTo(FimBasedAdapter.DEFAULT_FORMDATA_REPRESENTATION_NAME);
}
@Test
void shouldReturnDefaultOnMissingPrimary() {
var control = FormDataControlTestFactory.createBuilder().representations(Optional.of(Representations.builder().build())).build();
var result = adapter.getEntryPoint(control);
assertThat(result).isEqualTo(FimBasedAdapter.DEFAULT_FORMDATA_REPRESENTATION_NAME);
}
}
}
package de.ozgcloud.eingang.fim;
import de.ozgcloud.common.test.ITCase;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormHeader;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
import de.ozgcloud.common.test.ITCase;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
import de.ozgcloud.eingang.common.formdata.FormHeader;
import de.ozgcloud.eingang.common.formdata.IncomingFile;
@ITCase
@ActiveProfiles({ "itcase", "test" })
......@@ -71,8 +72,7 @@ public class FimServiceITCase {
final Map<String, Object> expected = Map.of(
"xs:fim.S1235", Map.of("label", "Testkey", "value", "Testvalue"),
"xs:fim.S1236", Map.of("label", "xs:fim.S1236", "value", "Testvalue 2")
);
"xs:fim.S1236", Map.of("label", "xs:fim.S1236", "value", "Testvalue 2"));
assertThat(expected).isEqualTo(formData.getFormData());
}
......@@ -83,8 +83,7 @@ public class FimServiceITCase {
final Map<String, Object> expected = Map.of(
"fim.S1235", Map.of("label", "Testkey", "value", "Testvalue"),
"fim.S1236", Map.of("label", "fim.S1236", "value", "Testvalue 2")
);
"fim.S1236", Map.of("label", "fim.S1236", "value", "Testvalue 2"));
assertThat(expected).isEqualTo(formData.getFormData());
}
......@@ -105,47 +104,46 @@ public class FimServiceITCase {
"xfd:G05001480", Map.of(
"label", "identifikation.nachricht",
"value", Map.of(
"xfd:F05002750", Map.of("label", "nachrichtenUUID", "value", "d447e43a-5723-4821-a170-cb44d2dbf143"),
"xfd:F05002751", Map.of("label", "erstellungszeitpunkt", "value", "2022-08-15T09:30:47"),
"xfd:F05002752", Map.of("label", "nachrichtentyp", "value", "fim.S17000652.17000652001004"),
"xfd:F05002753", Map.of("label", "dienstname", "value", "urn:fim:Versammlungsanzeige:1.4")
)
),
"xfd:F05002750",
Map.of("label", "nachrichtenUUID", "value", "d447e43a-5723-4821-a170-cb44d2dbf143"),
"xfd:F05002751",
Map.of("label", "erstellungszeitpunkt", "value", "2022-08-15T09:30:47"),
"xfd:F05002752",
Map.of("label", "nachrichtentyp", "value", "fim.S17000652.17000652001004"),
"xfd:F05002753",
Map.of("label", "dienstname", "value", "urn:fim:Versammlungsanzeige:1.4"))),
"xfd:G05001481", Map.of(
"label", "Leser",
"value", Map.of(
"xfd:F05002754", Map.of("label", "Organisationsname", "value", "Celle"),
"xfd:F05002755", Map.of("label", "Organisationsschlüssel", "value", "vbe:010550120100"),
"xfd:F05002756", Map.of("label", "Kategorie", "value", "Versammlungsbehörde")
)
),
"xfd:F05002755",
Map.of("label", "Organisationsschlüssel", "value", "vbe:010550120100"),
"xfd:F05002756", Map.of("label", "Kategorie", "value", "Versammlungsbehörde"))),
"xfd:G05001482", Map.of(
"label", "Autor",
"value", Map.of(
"xfd:F05002754", Map.of("label", "Organisationsname", "value", "OSI-Onlinedienst Niedersachsen Versammlungsanzeige"),
"xfd:F05002755", Map.of("label", "Organisationsschlüssel", "value", "vbe:010550120100"),
"xfd:F05002756", Map.of("label", "Kategorie", "value", "Engagement- und Hobbyportal")
)
)
)
),
"xfd:F05002754",
Map.of("label", "Organisationsname", "value",
"OSI-Onlinedienst Niedersachsen Versammlungsanzeige"),
"xfd:F05002755",
Map.of("label", "Organisationsschlüssel", "value", "vbe:010550120100"),
"xfd:F05002756",
Map.of("label", "Kategorie", "value", "Engagement- und Hobbyportal"))))),
"xfd:F17005454", Map.of("label", "Datenschutzhinweis DSGVO", "value", "true"),
"xfd:F17005455", Map.of("label", "Zustimmung zu einem digitalen Bescheid", "value", "true"),
"xfd:F17005533", Map.of("label", "UUID", "value", "String")
)
),
"xfd:F17005533", Map.of("label", "UUID", "value", "String"))),
"xfd:F17009191", Map.of("label", "Anzeige durch Person", "value", "true"),
"xfd:F17003371", Map.of("label", "Anzeigenart", "value", "String")
);
"xfd:F17003371", Map.of("label", "Anzeigenart", "value", "String"));
assertThat(expected).isEqualTo(formData.getFormData());
}
@Test
void shouldFallbackUnknownScheme() {
IncomingFile r1 = IncomingFile.builder().name("src/test/resources/test3/Antrag.xml").file(new File("src/test/resources/test3/Antrag.xml")).build();
IncomingFile r1 = IncomingFile.builder().name("src/test/resources/test3/Antrag.xml").file(new File("src/test/resources/test3/Antrag.xml"))
.build();
IncomingFile r2 = IncomingFile.builder().name("src/test/resources/test3/fim_xtaMetadata.xml").build();
final FormData initialFormData = FormData.builder()
final FormData initialFormData = FormDataTestFactory.createBuilder().formData(null)
.header(FormHeader.builder().channel("XTA").formEngineName("FIM").build())
.representations(List.of(r1, r2)).build();
......@@ -163,40 +161,35 @@ public class FimServiceITCase {
"xfd:G05001480", Map.of(
"label", "xfd:G05001480",
"value", Map.of(
"xfd:F05002750", Map.of("label", "xfd:F05002750", "value", "d447e43a-5723-4821-a170-cb44d2dbf143"),
"xfd:F05002750",
Map.of("label", "xfd:F05002750", "value", "d447e43a-5723-4821-a170-cb44d2dbf143"),
"xfd:F05002751", Map.of("label", "xfd:F05002751", "value", "2022-08-15T09:30:47"),
"xfd:F05002752", Map.of("label", "xfd:F05002752", "value", "fim.S17000652.17000652001004"),
"xfd:F05002753", Map.of("label", "xfd:F05002753", "value", "urn:fim:Versammlungsanzeige:1.4")
)
),
"xfd:F05002752",
Map.of("label", "xfd:F05002752", "value", "fim.S17000652.17000652001004"),
"xfd:F05002753",
Map.of("label", "xfd:F05002753", "value", "urn:fim:Versammlungsanzeige:1.4"))),
"xfd:G05001481", Map.of(
"label", "xfd:G05001481",
"value", Map.of(
"xfd:F05002754", Map.of("label", "xfd:F05002754", "value", "Celle"),
"xfd:F05002755", Map.of("label", "xfd:F05002755", "value", "vbe:010550120100"),
"xfd:F05002756", Map.of("label", "xfd:F05002756", "value", "Versammlungsbehörde")
)
),
"xfd:F05002756", Map.of("label", "xfd:F05002756", "value", "Versammlungsbehörde"))),
"xfd:G05001482", Map.of(
"label", "xfd:G05001482",
"value", Map.of(
"xfd:F05002754", Map.of("label", "xfd:F05002754", "value", "OSI-Onlinedienst Niedersachsen Versammlungsanzeige"),
"xfd:F05002754",
Map.of("label", "xfd:F05002754", "value",
"OSI-Onlinedienst Niedersachsen Versammlungsanzeige"),
"xfd:F05002755", Map.of("label", "xfd:F05002755", "value", "vbe:010550120100"),
"xfd:F05002756", Map.of("label", "xfd:F05002756", "value", "Engagement- und Hobbyportal")
)
)
)
),
"xfd:F05002756",
Map.of("label", "xfd:F05002756", "value", "Engagement- und Hobbyportal"))))),
"xfd:F17005454", Map.of("label", "xfd:F17005454", "value", "true"),
"xfd:F17005455", Map.of("label", "xfd:F17005455", "value", "true"),
"xfd:F17005533", Map.of("label", "xfd:F17005533", "value", "String")
)
),
"xfd:F17005533", Map.of("label", "xfd:F17005533", "value", "String"))),
"xfd:F17009191", Map.of("label", "xfd:F17009191", "value", "true"),
"xfd:F17003371", Map.of("label", "xfd:F17003371", "value", "String")
);
"xfd:F17003371", Map.of("label", "xfd:F17003371", "value", "String"));
assertThat(expected).isEqualTo(formData.getFormData());
assertThat(formData.getFormData()).usingRecursiveComparison().isEqualTo(expected);
}
private Document loadDocument(final String path) throws ParserConfigurationException, IOException, SAXException {
......
......@@ -6,6 +6,6 @@ import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@ComponentScan("de.ozgcloud.eingang.fim")
@ComponentScan("de.ozgcloud.eingang")
public class FimTestConfig {
}
package de.ozgcloud.eingang.fim;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory;
import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
class ZustaendigeStelleMapperTest {
@InjectMocks
private ZustaendigeStelleMapper mapper;
@Test
void shouldSetOrganisationsEinheitId() {
var parsed = mapper.parseFormData(FormDataTestFactory.createBuilder().clearZustaendigeStelles().build());
assertThat(parsed.getZustaendigeStelles()).hasSize(1).first().extracting(ZustaendigeStelle::getOrganisationseinheitenId)
.isEqualTo(FormMetaDataTestFactory.OE_ID);
// assertThat(parsed.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(FormMetaDataTestFactory.OE_ID);
}
@Test
void shouldWorkWithoutGivenZustaendigeStelle() {
var parsed = mapper.parseFormData(FormDataTestFactory.createBuilder().clearZustaendigeStelles().build());
assertThat(parsed.getZustaendigeStelles()).hasSize(1).first().extracting(ZustaendigeStelle::getOrganisationseinheitenId)
.isNotNull();
// assertThat(parsed.getZustaendigeStelle()).isNotNull();
}
@Test
void shouldIgnoreMalformedDestinationId() {
var oeid = mapper.extractOrganisationsEinheitId("quatsch");
assertThat(oeid).isEmpty();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment