From 0118c13fe478c4e259e631e6bf49ab8cb4a39146 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 9 Oct 2023 12:52:39 +0200 Subject: [PATCH] OZG-4428 create vorgang --- enterprise-adapter/pom.xml | 19 +++++--- .../enterprise/entry/EntryController.java | 9 +++- .../src/main/resources/log4j2-local.xml | 14 ++++++ .../entry/EnterpriseEntryITCase.java | 45 +++++++++++++++++++ .../enterprise/entry/EntryControllerTest.java | 19 +++++++- 5 files changed, 99 insertions(+), 7 deletions(-) create mode 100644 enterprise-adapter/src/main/resources/log4j2-local.xml create mode 100644 enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml index 362c7f196..8d4945756 100644 --- a/enterprise-adapter/pom.xml +++ b/enterprise-adapter/pom.xml @@ -17,6 +17,17 @@ </properties> <dependencies> + <!--ozg-Cloud--> + <dependency> + <groupId>de.itvsh.kop.eingangsadapter</groupId> + <artifactId>common</artifactId> + </dependency> + <dependency> + <groupId>de.itvsh.kop.eingangsadapter</groupId> + <artifactId>semantik-adapter</artifactId> + </dependency> + + <!--spring--> <dependency> <groupId>org.springframework.boot</groupId> @@ -26,17 +37,15 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> - <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>common</artifactId> - </dependency> + + <!--dev tools--> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> </dependency> - + <!--test --> <dependency> <groupId>de.itvsh.kop.eingangsadapter</groupId> diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java index 96ff9a79f..47febc1e9 100644 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java @@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; +import de.ozgcloud.eingang.semantik.SemantikAdapter; + @Controller @ResponseBody @RequestMapping("antrag") @@ -21,9 +23,14 @@ public class EntryController { @Autowired private EntryDataMapper mapper; + @Autowired + private SemantikAdapter semantikAdapter; + @ResponseStatus(HttpStatus.ACCEPTED) @PostMapping(consumes = "multipart/form-data", produces = MediaType.APPLICATION_JSON_VALUE) public void receiveAntrag(@RequestPart Resource formData) throws IOException { - mapper.mapEntryData(formData.getInputStream()); + var mapped = mapper.mapEntryData(formData.getInputStream()); + + semantikAdapter.processFormData(mapped); } } diff --git a/enterprise-adapter/src/main/resources/log4j2-local.xml b/enterprise-adapter/src/main/resources/log4j2-local.xml new file mode 100644 index 000000000..5d7001e1f --- /dev/null +++ b/enterprise-adapter/src/main/resources/log4j2-local.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <Appenders> + <Console name="CONSOLE" target="SYSTEM_OUT"> + <PatternLayout pattern="[%-5level] %c{1.} %msg%n"/> + </Console> + </Appenders> + + <Loggers> + <Root level="WARN"> + <appender-ref ref="CONSOLE" /> + </Root> + </Loggers> +</configuration> \ No newline at end of file diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java new file mode 100644 index 000000000..8ed385a33 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java @@ -0,0 +1,45 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import de.itvsh.kop.common.test.TestUtils; +import de.ozgcloud.eingang.Application; +import de.ozgcloud.eingang.router.VorgangService; +import lombok.SneakyThrows; + +@SpringBootTest(classes = Application.class) +@AutoConfigureMockMvc +class EnterpriseEntryITCase { + + @MockBean + private VorgangService vorgangService; + + @Autowired + private MockMvc mockMvc; + + @Test + void shouldCallVorgangService() { + doPostRequest(); + + verify(vorgangService).createVorgang(any()); + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform(multipart("/antrag") + .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))) + .andExpect(status().is2xxSuccessful()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java index bb94507c8..19708556d 100644 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java @@ -1,6 +1,7 @@ package de.ozgcloud.eingang.enterprise.entry; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @@ -21,6 +22,9 @@ import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import de.itvsh.kop.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; import lombok.SneakyThrows; class EntryControllerTest { @@ -30,6 +34,8 @@ class EntryControllerTest { @Mock private EntryDataMapper mapper; + @Mock + private SemantikAdapter semantikAdapter; private MockMvc mockMvc; @@ -62,10 +68,21 @@ class EntryControllerTest { assertThat(inputBytes).hasSameSizeAs(request.getBytes()).isEqualTo(request.getBytes()); } + @Test + void shouldCallSemantikAdapter() { + FormData formData = FormDataTestFactory.create(); + when(mapper.mapEntryData(any())).thenReturn(formData); + + doPostRequest(); + + verify(semantikAdapter).processFormData(formData); + } + @SneakyThrows private ResultActions doPostRequest() { return mockMvc.perform(multipart("/antrag") - .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))); + .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))) + .andExpect(status().is2xxSuccessful()); } } -- GitLab