diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml index 362c7f196cf5511c026a170c6fdfd4c9357c3bb0..8d494575614167d982ecd6308ab22a788cb0bd4e 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 96ff9a79fd58081775581a678c3ee2c6869fcf22..47febc1e961826ab9d176bd5c1a89f18ecb8d0c6 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 0000000000000000000000000000000000000000..5d7001e1f9186d197a2d301d3910c9d73ed05d15 --- /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 0000000000000000000000000000000000000000..8ed385a33028c9356addd631066f9027347a2ca3 --- /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 bb94507c82029ff753428b9099c11a1f6329d8dc..19708556d8ba45f7106e46064ba59c22ebd6a7ef 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()); } }