diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java index ed3ed7816b082b0139413eceee38a8196b63e968..ce9d59c38cf6f5ee88d9c8fc40c150001bebbc0a 100644 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java @@ -37,9 +37,9 @@ public class AntragstellerTestFactory { public static final String SUB_VERBOTENE_VEREINIGUNG_KEY = "MitgliedschaftInVerboternerVereinigung"; public static final String SUB_VERBOTENE_VEREINIGUNG_VALUE = "true"; - public static final String VORNAME = "Helge"; - public static final String NACHNAME = "Schneider"; - public static final String GEBURTSNAME = "Schneider"; + public static final String VORNAME = "Theo"; + public static final String NACHNAME = "Test"; + public static final String GEBURTSNAME = "Toast"; public static final String GEBURTSDATUM = "30.8.1955"; public static final String GEBURTSORT = "Mülheim an der Ruhr"; public static final String EMAIL = "schneider@helgeschneider.local"; diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..96d272d79816e7c89ccb25e7294ac1ba79fc2752 --- /dev/null +++ b/enterprise-adapter/pom.xml @@ -0,0 +1,82 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>de.itvsh.kop.eingangsadapter</groupId> + <artifactId>parent</artifactId> + <version>1.13.0-SNAPSHOT</version> + </parent> + <artifactId>enterprise-adapter</artifactId> + <name>EM - Enterprise Interface Adapter</name> + + <properties> + <spring-boot.build-image.imageName> + docker.ozg-sh.de/enterprise-interface-adapter:build-latest + </spring-boot.build-image.imageName> + </properties> + + <dependencies> + <!--spring--> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + <dependency> + <groupId>de.itvsh.kop.eingangsadapter</groupId> + <artifactId>common</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>ci-build</id> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <executions> + <execution> + <id>build-image</id> + <phase> + install</phase> + <goals> + <goal>build-image</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> \ No newline at end of file diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java new file mode 100644 index 0000000000000000000000000000000000000000..70268f833726fb7fa913872bfbb30d7436341da4 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java @@ -0,0 +1,35 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Builder; +import lombok.Getter; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +public class EntryData { + + private ControlData control; + + @Builder + @Getter + @Jacksonized + public static class ControlData { + private String transactionId; + private String zustaendigeStelle; + private String[] leikaIds; + private ResultEndpoint resultEndpoint; + private String formId; + @JsonProperty("name") + private String formName; + + @Builder + @Getter + @Jacksonized + public static class ResultEndpoint { + private String address; + } + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..9f26f3e2c8262ba57cbc3eb69385636f737c5e3a --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java @@ -0,0 +1,30 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData; +import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData.ResultEndpoint; + +public class ControlDataTestFactory { + + public static final String TRANSACTION_ID = "4e7a6ae7-4d0f-444d-8971-7cfc051c9924"; + public static final String ZUSTAENDIGE_STELLE = "248240886"; + public static final String[] LEIKA_IDS = new String[] { "99108011000000", "99108011153000" }; + + public static final String RESULT_ENDPOIN_ADDRESS = "https://idalabs.de/backend/api"; + + public static final String FORM_ID = "KFAS_LIVE_KI_10_Haltverbot_befristet"; + public static final String NAME = "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)"; + + public static ControlData create() { + return createBuilder().build(); + } + + public static ControlData.ControlDataBuilder createBuilder() { + return ControlData.builder() + .transactionId(TRANSACTION_ID) + .zustaendigeStelle(ZUSTAENDIGE_STELLE) + .leikaIds(LEIKA_IDS) + .resultEndpoint(ResultEndpoint.builder().address(RESULT_ENDPOIN_ADDRESS).build()) + .formId(FORM_ID) + .formName(NAME); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..bb40354bfc7e8fe34cc7464d06c60789d1dc7d92 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java @@ -0,0 +1,32 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import java.io.IOException; +import java.io.InputStream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +class EntryDataMapper { + + @Autowired + private ObjectMapper objectMapper; + + public FormData mapEntryData(InputStream request) { + // TODO Auto-generated method stub + return null; + } + + EntryData readRequest(InputStream request) { + try { + return objectMapper.readValue(request, EntryData.class); + } catch (IOException e) { + throw new ReadingRequestException(e); + } + + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9ae7f427464b5c23530855e1fbee2e88ef82565d --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java @@ -0,0 +1,40 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.itvsh.kop.common.test.TestUtils; + +class EntryDataMapperTest { + + @InjectMocks + private EntryDataMapper mapper; + + @Spy + private ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + @Nested + class TestMappingEntryData { + + @Nested + class TestReadRequest { + @Test + void shouldReadJson() { + var jsonInput = TestUtils.loadFile("request/simple.json"); + + var read = mapper.readRequest(jsonInput); + + assertThat(read).usingRecursiveComparison().isEqualTo(EntryDataTestFactory.create()); + } + } + + } + +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ef11b273345c61a2713add9a7b7d7a9664aee8f7 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java @@ -0,0 +1,13 @@ +package de.ozgcloud.eingang.enterprise.entry; + +public class EntryDataTestFactory { + + public static EntryData create() { + return createBuilder().build(); + } + + public static EntryData.EntryDataBuilder createBuilder() { + return EntryData.builder() + .control(ControlDataTestFactory.create()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java new file mode 100644 index 0000000000000000000000000000000000000000..d1d4e3f9c4467aac99cf52838c164f3f1e26f49c --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java @@ -0,0 +1,14 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import de.itvsh.kop.common.errorhandling.TechnicalException; + +public class ReadingRequestException extends TechnicalException { + + private static final String MESSAGE = "Error reading Request."; + + public ReadingRequestException(Exception cause) { + super(MESSAGE, cause); + + } + +} diff --git a/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000000000000000000000000000000000000..79b126e6cdb86bec1f4f08c205de8961bde1934a --- /dev/null +++ b/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/junit-platform.properties b/enterprise-adapter/src/test/resources/junit-platform.properties new file mode 100644 index 0000000000000000000000000000000000000000..1cebb76d5a58ac034b2627d12411d82d1e85821e --- /dev/null +++ b/enterprise-adapter/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/request/simple.json b/enterprise-adapter/src/test/resources/request/simple.json new file mode 100644 index 0000000000000000000000000000000000000000..aae35e5dff4c81bf23edd6c0c961bcd7bdd59742 --- /dev/null +++ b/enterprise-adapter/src/test/resources/request/simple.json @@ -0,0 +1,32 @@ +{ + "control": { + "transactionId": "4e7a6ae7-4d0f-444d-8971-7cfc051c9924", + "zustaendigeStelle": "248240886", + "leikaIds": [ + "99108011000000", + "99108011153000" + ], + "resultEndpoint": { + "address": "https://idalabs.de/backend/api" + }, + "formId": "KFAS_LIVE_KI_10_Haltverbot_befristet", + "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)" + }, + "antragsteller": { + "label": "Antragstellende Person", + "value": { + "person_oder_firma": { + "label": "Anrede", + "stringValue": "Herr" + }, + "vorname": { + "label": "Vorname", + "stringValue": "Theo" + }, + "nachname": { + "label": "Nachname", + "stringValue": "Test" + } + } + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 159a629dfb724cef66d31bd051cf94e8a3cb4026..163fadcc95d6404bd5adc2458afa062ddd751736 100644 --- a/pom.xml +++ b/pom.xml @@ -24,17 +24,19 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> - + <parent> <groupId>de.itvsh.kop.common</groupId> <artifactId>kop-common-parent</artifactId> <version>2.3.2-SNAPSHOT</version> - <relativePath/> <!-- lookup parent from repository --> + <relativePath /> <!-- lookup parent from repository --> </parent> - + <groupId>de.itvsh.kop.eingangsadapter</groupId> <artifactId>parent</artifactId> <version>1.13.0-SNAPSHOT</version> @@ -50,6 +52,7 @@ <module>semantik-adapter</module> <module>formcycle-adapter</module> <module>xta-adapter</module> + <module>enterprise-adapter</module> </modules> <properties> @@ -154,9 +157,9 @@ </plugin> <plugin> <groupId>com.evolvedbinary.maven.jvnet</groupId> - <artifactId>jaxb30-maven-plugin</artifactId> - <version>${jaxb3-plugin.version}</version> - <executions> + <artifactId>jaxb30-maven-plugin</artifactId> + <version>${jaxb3-plugin.version}</version> + <executions> <execution> <goals> <goal>generate</goal> @@ -206,9 +209,9 @@ </plugin> </plugins> </pluginManagement> - + <plugins> - + </plugins> </build>