diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTestConfiguration.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTestConfiguration.java index 8cf7c2e98ca2ccbdbd2db76cf5131a6474d913a3..4a22c1c361fe6a362614815798b8beb480c74801 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTestConfiguration.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTestConfiguration.java @@ -24,11 +24,14 @@ package de.ozgcloud.alfa.postfach; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cloud.autoconfigure.RefreshAutoConfiguration; import org.springframework.context.annotation.Configuration; @Configuration @EnableConfigurationProperties(PostfachProperties.class) +@ImportAutoConfiguration(RefreshAutoConfiguration.class) class PostfachPropertiesTestConfiguration { @Autowired diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java index ba6f94d6a7ba3f5518b8b371b8a1d346161afb94..77a63407f2c188a1a84653ffe35eb17bf1354cd1 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java @@ -27,8 +27,6 @@ import static de.ozgcloud.alfa.vorgang.EingangTestFactory.*; import static org.assertj.core.api.AssertionsForClassTypes.*; 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 java.util.List; @@ -47,10 +45,12 @@ import org.mockito.Spy; import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; import org.springframework.hateoas.EntityModel; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.test.web.servlet.assertj.MockMvcTester; +import org.springframework.test.web.servlet.assertj.MockMvcTester.MockMvcRequestBuilder; +import org.springframework.test.web.servlet.assertj.MvcTestResultAssert; +import org.springframework.web.util.UriComponentsBuilder; import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService; @@ -64,7 +64,7 @@ import lombok.SneakyThrows; class VorgangControllerTest { private static final String RESET_POSTFACH_NACHRICHT_PATH = VorgangController.PATH + "/{0}/hasNewPostfachNachricht"; - private static final String PATH = VorgangController.PATH + "/"; + private static final String PATH = VorgangController.PATH; @Spy @InjectMocks @@ -80,11 +80,11 @@ class VorgangControllerTest { @Mock private StatisticController statisticController; - private MockMvc mockMvc; + private MockMvcTester mockMvcTester; @BeforeEach void initTest() { - mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); + mockMvcTester = MockMvcTester.of(controller); } @DisplayName("VorgangList") @@ -137,10 +137,10 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -188,11 +188,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_STATUS, STATUS.toString())) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_STATUS, STATUS.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -240,11 +240,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_SEARCH, SEARCH_BY)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_SEARCH, SEARCH_BY).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -307,11 +307,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString())) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -383,12 +383,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_SEARCH, SEARCH_BY)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_SEARCH, SEARCH_BY) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -460,12 +460,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_STATUS, STATUS.toString())) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_STATUS, STATUS.toString()) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -520,11 +520,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } @DisplayName("Get all by assignedTo and existing next wiedervorlage frist") @@ -602,12 +602,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequest() { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) + .queryParam(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } } @@ -661,7 +661,7 @@ class VorgangControllerTest { class WithoutParamNachrichtenUngelesene { @ParameterizedTest - @ValueSource(strings = {"", "dummy"}) + @ValueSource(strings = { "", "dummy" }) void shouldCriteriaHaveHasUngeleseneNachrichtenFalse(String nachrichtenValue) { doRequestWithNachrichtenParam(nachrichtenValue); @@ -672,11 +672,11 @@ class VorgangControllerTest { @SneakyThrows private void doRequestWithNachrichtenParam(String paramValue) { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_NACHRICHTEN, paramValue)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_NACHRICHTEN, paramValue).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -749,7 +749,7 @@ class VorgangControllerTest { class WithoutParamNachrichtenUngelesene { @ParameterizedTest - @ValueSource(strings = {"", "dummy"}) + @ValueSource(strings = { "", "dummy" }) void shouldCriteriaHaveHasUngeleseneNachrichtenFalse(String nachrichtenValue) { doRequestWithNachrichtenParam(nachrichtenValue); @@ -760,12 +760,12 @@ class VorgangControllerTest { @SneakyThrows private void doRequestWithNachrichtenParam(String paramValue) { - mockMvc.perform(get(PATH) - .param(VorgangController.PARAM_PAGE, Integer.toString(PAGE)) - .param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)) - .param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) - .param(VorgangController.PARAM_NACHRICHTEN, paramValue)) - .andExpect(status().isOk()); + var uri = UriComponentsBuilder.fromPath(PATH) + .queryParam(VorgangController.PARAM_PAGE, PAGE) + .queryParam(VorgangController.PARAM_LIMIT, LIMIT) + .queryParam(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()) + .queryParam(VorgangController.PARAM_NACHRICHTEN, paramValue).build().toUri(); + mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } } @@ -848,32 +848,35 @@ class VorgangControllerTest { @DisplayName("Single Field should be in json first level") @Test void singleField() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + SINGLE_FIELD_NAME).value(SINGLE_FIELD_VALUE)); + var assertResult = performRequest(); + + assertResult.hasContentTypeCompatibleWith(MediaType.APPLICATION_JSON).bodyJson() + .extractingPath("$.eingang.formData." + SINGLE_FIELD_NAME).isEqualTo(SINGLE_FIELD_VALUE); } @DisplayName("Numeric field should be numeric in json") @Test void numericField() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + NUMERIC_FIELD_NAME).isNumber()); - performRequest().andExpect(jsonPath("$.eingang.formData." + NUMERIC_FIELD_NAME).value(NUMERIC_FIELD_VALUE)); + var assertResult = performRequest(); + + assertResult.hasContentTypeCompatibleWith(MediaType.APPLICATION_JSON).bodyJson() + .extractingPath("$.eingang.formData." + NUMERIC_FIELD_NAME).isEqualTo(NUMERIC_FIELD_VALUE); } @DisplayName("SubForm should have name as key") @Test void keyOfsubForm() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + SUBFORM_NAME).isMap()); - } + var assertResult = performRequest(); - @DisplayName("SubForm-Field should be present") - @Test - void subFormField() throws Exception { - performRequest().andExpect(jsonPath("$.eingang.formData." + SUBFORM_NAME + "." + SUBFORM_FIELD_NAME).value(SUBFORM_FIELD_VALUE)); + assertResult.hasContentTypeCompatibleWith(MediaType.APPLICATION_JSON).bodyJson() + .extractingPath("$.eingang.formData." + SUBFORM_NAME).asMap().containsEntry(SUBFORM_FIELD_NAME, SUBFORM_FIELD_VALUE); } } - private ResultActions performRequest() throws Exception { - return mockMvc.perform(get(PATH + "/" + VorgangHeaderTestFactory.ID)).andExpect(status().isOk()); + private MvcTestResultAssert performRequest() throws Exception { + var uri = UriComponentsBuilder.fromPath(PATH).pathSegment(VorgangHeaderTestFactory.ID).build().toUri(); + return mockMvcTester.get().uri(uri).assertThat().hasStatusOk(); } } @@ -882,23 +885,22 @@ class VorgangControllerTest { class TestResetNewPostfachNachricht { @Test - void resetNewPostfachNachricht() throws Exception { - performRequest("{\"hasNewPostfachNachricht\":false}").andExpect(status().isNoContent()); + void resetNewPostfachNachricht() { + performRequest("{\"hasNewPostfachNachricht\":false}").assertThat().hasStatus(HttpStatus.NO_CONTENT); verify(clientAttributeService).resetPostfachNachricht(VorgangHeaderTestFactory.ID); } @Test - void shouldReturnUnprocessableEntity() throws Exception { - performRequest("{\"hasNewPostfachNachricht\":true}").andExpect(status().isUnprocessableEntity()); + void shouldReturnUnprocessableEntity() { + performRequest("{\"hasNewPostfachNachricht\":true}").assertThat().hasStatus(HttpStatus.UNPROCESSABLE_ENTITY); verify(clientAttributeService, never()).resetPostfachNachricht(VorgangHeaderTestFactory.ID); } - private ResultActions performRequest(String body) throws Exception { - return mockMvc - .perform(put(RESET_POSTFACH_NACHRICHT_PATH, VorgangHeaderTestFactory.ID).contentType(MediaType.APPLICATION_JSON_VALUE) - .content(body)); + private MockMvcRequestBuilder performRequest(String body) { + return mockMvcTester.put().uri(RESET_POSTFACH_NACHRICHT_PATH, VorgangHeaderTestFactory.ID).contentType(MediaType.APPLICATION_JSON_VALUE) + .content(body); } } @@ -915,7 +917,7 @@ class VorgangControllerTest { } @ParameterizedTest - @ValueSource(booleans = {true, false}) + @ValueSource(booleans = { true, false }) void shouldReturnServiceResult(boolean serviceResult) { when(vorgangService.isVorgangEditable(vorgang)).thenReturn(serviceResult); diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java index 9223e8e87e0db4f66bb0bfb7bef14aebd99bb894..a15d0bc3d0900391d36bf409bc4e9e18818da370 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java @@ -25,8 +25,6 @@ package de.ozgcloud.alfa.wiedervorlage; 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 java.util.stream.Stream; @@ -37,16 +35,16 @@ import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.test.web.servlet.assertj.MockMvcTester; +import org.springframework.test.web.servlet.assertj.MockMvcTester.MockMvcRequestBuilder; +import org.springframework.web.util.UriComponentsBuilder; import de.ozgcloud.alfa.common.binaryfile.BinaryFileController; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; class WiedervorlageControllerTest { - private final String PATH = WiedervorlageController.WIEDERVORLAGE_PATH + "/"; + private static final String PATH = WiedervorlageController.WIEDERVORLAGE_PATH; @Spy @InjectMocks @@ -60,11 +58,11 @@ class WiedervorlageControllerTest { @Mock private WiedervorlageMapper mapper; - private MockMvc mockMvc; + private MockMvcTester mockMvcTester; @BeforeEach void initTest() { - mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); + mockMvcTester = MockMvcTester.of(controller); } @Nested @@ -78,26 +76,29 @@ class WiedervorlageControllerTest { } @Test - void shouldReturnStatusOk() throws Exception { - callEndpoint().andExpect(status().isOk()); + void shouldReturnStatusOk() { + var result = callEndpoint(); + + result.assertThat().hasStatusOk(); } @Test - void shouldCallService() throws Exception { - callEndpoint(); + void shouldCallService() { + callEndpoint().exchange(); verify(service).getById(WiedervorlageTestFactory.ID); } @Test - void shouldCallModelAssembler() throws Exception { - callEndpoint(); + void shouldCallModelAssembler() { + callEndpoint().exchange(); verify(modelAssembler).toModel(wiedervorlage); } - private ResultActions callEndpoint() throws Exception { - return mockMvc.perform(get(PATH + WiedervorlageTestFactory.ID)); + private MockMvcRequestBuilder callEndpoint() { + var uri = UriComponentsBuilder.fromUriString(PATH).pathSegment(WiedervorlageTestFactory.ID).build().toUri(); + return mockMvcTester.get().uri(uri); } } @@ -113,25 +114,29 @@ class WiedervorlageControllerTest { @Test void shouldReturnStatusOk() throws Exception { - callEndpoint().andExpect(status().isOk()); + var result = callEndpoint(); + + result.assertThat().hasStatusOk(); } @Test void shouldCallService() throws Exception { - callEndpoint(); + callEndpoint().exchange(); verify(service).findByVorgangId(VorgangHeaderTestFactory.ID); } @Test void shouldCallModelAssembler() throws Exception { - callEndpoint(); + callEndpoint().exchange(); verify(modelAssembler).toCollectionModel(ArgumentMatchers.<Stream<Wiedervorlage>>any(), eq(VorgangHeaderTestFactory.ID)); } - private ResultActions callEndpoint() throws Exception { - return mockMvc.perform(get(PATH).param(WiedervorlageController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID)); + private MockMvcRequestBuilder callEndpoint() throws Exception { + var uri = UriComponentsBuilder.fromUriString(PATH).queryParam(WiedervorlageController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID) + .build().toUri(); + return mockMvcTester.get().uri(uri); } } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 87b10a032f0843538b6267b052b83b40556341c9..8130b3040ff62022fdab7365283cccd879c30144 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ <parent> <groupId>de.ozgcloud.common</groupId> <artifactId>ozgcloud-common-parent</artifactId> - <version>4.6.0</version> + <version>4.11.0-SNAPSHOT</version> </parent> <groupId>de.ozgcloud.alfa</groupId> @@ -59,7 +59,6 @@ <collaboration-manager.version>0.5.0</collaboration-manager.version> <archive-manager.version>0.1.0</archive-manager.version> <document-manager.version>1.1.0</document-manager.version> - <spring-cloud-config-client.version>4.1.3</spring-cloud-config-client.version> <!-- TODO: die Version über ozgcloud-common ziehen --> <jjwt.version>0.12.6</jjwt.version> @@ -150,11 +149,6 @@ <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-config</artifactId> - <version>${spring-cloud-config-client.version}</version> - </dependency> </dependencies> </dependencyManagement>