diff --git a/pom.xml b/pom.xml index b9d89f5..30ed14d 100644 --- a/pom.xml +++ b/pom.xml @@ -189,31 +189,11 @@ powsybl-iidm-test test - - com.squareup.okhttp3 - okhttp - test - - - com.squareup.okhttp3 - mockwebserver - test - - - junit - junit - test - org.assertj assertj-guava test - - org.junit.vintage - junit-vintage-engine - test - org.mockito mockito-core diff --git a/src/test/java/org/gridsuite/voltageinit/server/SupervisionControllerTest.java b/src/test/java/org/gridsuite/voltageinit/server/SupervisionControllerTest.java index b5beb59..f51e389 100644 --- a/src/test/java/org/gridsuite/voltageinit/server/SupervisionControllerTest.java +++ b/src/test/java/org/gridsuite/voltageinit/server/SupervisionControllerTest.java @@ -6,35 +6,31 @@ */ package org.gridsuite.voltageinit.server; -import org.junit.Test; -import org.junit.runner.RunWith; +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.http.MediaType; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static org.junit.Assert.assertEquals; - /** * @author Hugo Marcellin */ -@RunWith(SpringRunner.class) @AutoConfigureMockMvc @SpringBootTest -public class SupervisionControllerTest { +class SupervisionControllerTest { @Autowired private MockMvc mockMvc; @Test - public void testResultCount() throws Exception { + void testResultCount() throws Exception { //get the result timeline uuid of the calculation MvcResult mvcResult = mockMvc.perform(get("/v1/supervision/results-count")) .andExpect(status().isOk()) @@ -43,7 +39,6 @@ public void testResultCount() throws Exception { String resultCount = mvcResult.getResponse().getContentAsString(); assertEquals("0", resultCount); - } } diff --git a/src/test/java/org/gridsuite/voltageinit/server/VoltageInitControllerTest.java b/src/test/java/org/gridsuite/voltageinit/server/VoltageInitControllerTest.java index a9c2401..65cb554 100644 --- a/src/test/java/org/gridsuite/voltageinit/server/VoltageInitControllerTest.java +++ b/src/test/java/org/gridsuite/voltageinit/server/VoltageInitControllerTest.java @@ -7,6 +7,9 @@ package org.gridsuite.voltageinit.server; import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; +import com.github.tomakehurst.wiremock.junit5.WireMockTest; import com.powsybl.commons.PowsyblException; import com.powsybl.computation.CompletableFutureTask; import com.powsybl.computation.ComputationManager; @@ -27,12 +30,6 @@ import com.powsybl.openreac.parameters.input.OpenReacParameters; import com.powsybl.openreac.parameters.output.OpenReacResult; import com.powsybl.openreac.parameters.output.OpenReacStatus; -import lombok.SneakyThrows; -import okhttp3.HttpUrl; -import okhttp3.mockwebserver.Dispatcher; -import okhttp3.mockwebserver.MockResponse; -import okhttp3.mockwebserver.MockWebServer; -import okhttp3.mockwebserver.RecordedRequest; import org.gridsuite.voltageinit.server.dto.VoltageInitResult; import org.gridsuite.voltageinit.server.dto.VoltageInitStatus; import org.gridsuite.voltageinit.server.dto.parameters.FilterEquipments; @@ -44,55 +41,55 @@ import org.gridsuite.voltageinit.server.service.UuidGeneratorService; import org.gridsuite.voltageinit.server.service.parameters.FilterService; import org.gridsuite.voltageinit.server.util.annotations.PostCompletionAdapter; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.gridsuite.voltageinit.utils.ContextConfigurationWithTestChannel; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.MockedStatic; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; 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.cloud.stream.binder.test.OutputDestination; -import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration; import org.springframework.http.MediaType; import org.springframework.messaging.Message; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.ContextHierarchy; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.transaction.support.TransactionSynchronizationManager; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.UUID; import java.util.concurrent.ForkJoinPool; +import static com.github.tomakehurst.wiremock.client.WireMock.*; import static com.powsybl.network.store.model.NetworkStoreApi.VERSION; import static org.gridsuite.voltageinit.server.service.NotificationService.CANCEL_MESSAGE; import static org.gridsuite.voltageinit.server.service.NotificationService.HEADER_USER_ID; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.BDDMockito.given; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * @author Etienne Homer */ -@RunWith(SpringRunner.class) +@ExtendWith({ MockitoExtension.class }) +@WireMockTest @AutoConfigureMockMvc +@ContextConfigurationWithTestChannel @SpringBootTest -@ContextHierarchy({@ContextConfiguration(classes = {VoltageInitApplication.class, TestChannelBinderConfiguration.class})}) -public class VoltageInitControllerTest { - +class VoltageInitControllerTest { private static final UUID NETWORK_UUID = UUID.fromString("7928181c-7977-4592-ba19-88027e4254e4"); private static final UUID OTHER_NETWORK_UUID = UUID.fromString("06824085-db85-4883-9458-8c5c9f1585d6"); private static final UUID RESULT_UUID = UUID.fromString("0c8de370-3e6c-4d72-b292-d355a97e0d5d"); @@ -130,21 +127,15 @@ public class VoltageInitControllerTest { @MockBean private UuidGeneratorService uuidGeneratorService; - private final RestTemplateConfig restTemplateConfig = new RestTemplateConfig(); - private final ObjectMapper mapper = restTemplateConfig.objectMapper(); + @Autowired + private ObjectMapper mapper; private Network network; - private Network network1; - private Network networkForMergingView; - private Network otherNetworkForMergingView; - OpenReacParameters openReacParameters; - OpenReacResult openReacResult; - CompletableFutureTask completableFutureResultsTask; + private OpenReacResult openReacResult; + private CompletableFutureTask completableFutureResultsTask; - private MockWebServer server; - - private OpenReacResult buildOpenReacResult() { - OpenReacAmplIOFiles openReacAmplIOFiles = new OpenReacAmplIOFiles(openReacParameters, network, false); + private void buildOpenReacResult() { + OpenReacAmplIOFiles openReacAmplIOFiles = new OpenReacAmplIOFiles(new OpenReacParameters(), network, false); GeneratorModification.Modifs m1 = new GeneratorModification.Modifs(); m1.setTargetV(228.); @@ -161,10 +152,9 @@ private OpenReacResult buildOpenReacResult() { openReacAmplIOFiles.getNetworkModifications().getShuntModifications().add(new ShuntCompensatorModification("SHUNT_1", true, 1)); openReacResult = new OpenReacResult(OpenReacStatus.OK, openReacAmplIOFiles, INDICATORS); - return openReacResult; } - private VoltageInitParametersEntity buildVoltageInitParametersEntity() { + private static VoltageInitParametersEntity buildVoltageInitParametersEntity() { return VoltageInitParametersInfos.builder() .voltageLimitsModification(List.of(VoltageLimitInfos.builder() .priority(0) @@ -199,17 +189,10 @@ private VoltageInitParametersEntity buildVoltageInitParametersEntity() { .build().toEntity(); } - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - - server = new MockWebServer(); - server.start(); - - HttpUrl baseHttpUrl = server.url(""); - String baseUrl = baseHttpUrl.toString().substring(0, baseHttpUrl.toString().length() - 1); - networkModificationService.setNetworkModificationServerBaseUri(baseUrl); - filterService.setFilterServerBaseUri(baseUrl); + @BeforeEach + public void setUp(final WireMockRuntimeInfo wmRuntimeInfo) { + networkModificationService.setNetworkModificationServerBaseUri(wmRuntimeInfo.getHttpBaseUrl()); + filterService.setFilterServerBaseUri(wmRuntimeInfo.getHttpBaseUrl()); // network store service mocking network = EurostagTutorialExample1Factory.createWithMoreGenerators(new NetworkFactoryImpl()); @@ -221,38 +204,18 @@ public void setUp() throws Exception { given(networkStoreService.getNetwork(NETWORK_UUID, PreloadingStrategy.COLLECTION)).willReturn(network); given(networkStoreService.getNetwork(OTHER_NETWORK_UUID, PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW)).willThrow(new PowsyblException("Not found")); - network1 = EurostagTutorialExample1Factory.createWithMoreGenerators(new NetworkFactoryImpl()); - network1.getVariantManager().cloneVariant(VariantManagerConstants.INITIAL_VARIANT_ID, VARIANT_2_ID); - // OpenReac run mocking - openReacParameters = new OpenReacParameters(); - openReacResult = buildOpenReacResult(); - + buildOpenReacResult(); completableFutureResultsTask = CompletableFutureTask.runAsync(() -> openReacResult, ForkJoinPool.commonPool()); // UUID service mocking to always generate the same result UUID given(uuidGeneratorService.generate()).willReturn(RESULT_UUID); - final Dispatcher dispatcher = new Dispatcher() { - @SneakyThrows - @Override - public MockResponse dispatch(RecordedRequest request) { - String path = Objects.requireNonNull(request.getPath()); - - if (path.matches("/v1/groups/.*") && request.getMethod().equals("DELETE")) { - return new MockResponse().setResponseCode(200) - .addHeader("Content-Type", "application/json; charset=utf-8"); - } else if (path.matches("/v1/groups/modification") && request.getMethod().equals("POST")) { - return new MockResponse().setResponseCode(200).setBody("\"" + MODIFICATIONS_GROUP_UUID + "\"") - .addHeader("Content-Type", "application/json; charset=utf-8"); - } else if (path.matches("/v1/filters/export\\?networkUuid=" + NETWORK_UUID + "&variantId=" + VARIANT_2_ID + "&ids=.*")) { - return new MockResponse().setResponseCode(200).setBody(FILTER_EQUIPMENT_JSON) - .addHeader("Content-Type", "application/json; charset=utf-8"); - } - return new MockResponse().setResponseCode(418); - } - }; - server.setDispatcher(dispatcher); + final WireMock server = wmRuntimeInfo.getWireMock(); + server.register(WireMock.delete(urlPathMatching("/v1/groups/.+")).willReturn(okJson(""))); + server.register(WireMock.post(urlPathEqualTo("/v1/groups/modification")).willReturn(okJson("\"" + MODIFICATIONS_GROUP_UUID + "\""))); + server.register(WireMock.any(urlMatching("/v1/filters/export\\?networkUuid=" + NETWORK_UUID + "&variantId=" + VARIANT_2_ID + "&ids=.+")).willReturn(okJson(FILTER_EQUIPMENT_JSON))); + server.register(WireMock.any(WireMock.anyUrl()).atPriority(Integer.MAX_VALUE).willReturn(WireMock.serviceUnavailable())); // purge messages while (output.receive(1000, "voltageinit.result") != null) { @@ -268,15 +231,14 @@ public MockResponse dispatch(RecordedRequest request) { } } - @SneakyThrows - @After - public void tearDown() { + @AfterEach + public void tearDown() throws Exception { mockMvc.perform(delete("/" + VERSION + "/results")) .andExpect(status().isOk()); } @Test - public void runTest() throws Exception { + void runTest() throws Exception { try (MockedStatic openReacRunnerMockedStatic = Mockito.mockStatic(OpenReacRunner.class)) { openReacRunnerMockedStatic.when(() -> OpenReacRunner.runAsync(eq(network), eq(VARIANT_2_ID), any(OpenReacParameters.class), any(OpenReacConfig.class), any(ComputationManager.class))) .thenReturn(completableFutureResultsTask); @@ -339,7 +301,7 @@ public void runTest() throws Exception { } @Test - public void runWrongNetworkTest() throws Exception { + void runWrongNetworkTest() throws Exception { MvcResult result = mockMvc.perform(post( "/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&variantId=" + VARIANT_2_ID, OTHER_NETWORK_UUID) .header(HEADER_USER_ID, "userId")) @@ -360,7 +322,7 @@ public void runWrongNetworkTest() throws Exception { } @Test - public void runWithReportTest() throws Exception { + void runWithReportTest() throws Exception { MvcResult result = mockMvc.perform(post( "/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&variantId={variantId}&reportType=VoltageInit&reportUuid=" + REPORT_UUID + "&reporterId=" + UUID.randomUUID(), NETWORK_UUID, VARIANT_2_ID) .header(HEADER_USER_ID, "userId")) @@ -370,7 +332,7 @@ public void runWithReportTest() throws Exception { } @Test - public void stopTest() throws Exception { + void stopTest() throws Exception { try (MockedStatic openReacRunnerMockedStatic = Mockito.mockStatic(OpenReacRunner.class)) { openReacRunnerMockedStatic.when(() -> OpenReacRunner.runAsync(eq(network), eq(VARIANT_2_ID), any(OpenReacParameters.class), any(OpenReacConfig.class), any(ComputationManager.class))) .thenReturn(completableFutureResultsTask); @@ -396,9 +358,8 @@ public void stopTest() throws Exception { } } - @SneakyThrows @Test - public void getStatusTest() { + void getStatusTest() throws Exception { MvcResult result = mockMvc.perform(get( "/" + VERSION + "/results/{resultUuid}/status", RESULT_UUID)) .andExpect(status().isOk()) @@ -416,9 +377,8 @@ public void getStatusTest() { assertEquals(VoltageInitStatus.NOT_DONE.name(), result.getResponse().getContentAsString()); } - @SneakyThrows @Test - public void postCompletionAdapterTest() { + void postCompletionAdapterTest() { CompletableFutureTask task = CompletableFutureTask.runAsync(() -> openReacResult, ForkJoinPool.commonPool()); PostCompletionAdapter adapter = new PostCompletionAdapter(); adapter.execute(task); diff --git a/src/test/java/org/gridsuite/voltageinit/server/VoltageInitParametersTest.java b/src/test/java/org/gridsuite/voltageinit/server/VoltageInitParametersTest.java index a7542ce..0edd68b 100644 --- a/src/test/java/org/gridsuite/voltageinit/server/VoltageInitParametersTest.java +++ b/src/test/java/org/gridsuite/voltageinit/server/VoltageInitParametersTest.java @@ -30,21 +30,18 @@ import org.gridsuite.voltageinit.server.entities.parameters.VoltageLimitEntity; import org.gridsuite.voltageinit.server.repository.parameters.VoltageInitParametersRepository; import org.gridsuite.voltageinit.server.service.VoltageInitRunContext; -import org.gridsuite.voltageinit.server.service.VoltageInitService; import org.gridsuite.voltageinit.server.service.VoltageInitWorkerService; import org.gridsuite.voltageinit.server.service.parameters.FilterService; import org.gridsuite.voltageinit.server.service.parameters.VoltageInitParametersService; import org.gridsuite.voltageinit.server.util.VoltageLimitParameterType; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +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.http.MediaType; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.transaction.annotation.Transactional; @@ -60,14 +57,11 @@ /** * @author Ayoub LABIDI */ -@RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc @Transactional -public class VoltageInitParametersTest { - +class VoltageInitParametersTest { private static final String URI_PARAMETERS_BASE = "/v1/parameters"; - private static final String URI_PARAMETERS_GET_PUT = URI_PARAMETERS_BASE + "/"; private static final UUID NETWORK_UUID = UUID.fromString("7928181c-7977-4592-ba19-88027e4254e4"); @@ -80,16 +74,13 @@ public class VoltageInitParametersTest { private Network network; @Autowired - VoltageInitService voltageInitService; + private VoltageInitParametersService voltageInitParametersService; @Autowired - VoltageInitParametersService voltageInitParametersService; + private MockMvc mockMvc; @Autowired - protected MockMvc mockMvc; - - @Autowired - protected ObjectMapper mapper; + private ObjectMapper mapper; @Autowired private VoltageInitParametersRepository parametersRepository; @@ -100,7 +91,7 @@ public class VoltageInitParametersTest { @MockBean private FilterService filterService; - @Before + @BeforeEach public void setup() { network = EurostagTutorialExample1Factory.create(new NetworkFactoryImpl()); network.getVariantManager().cloneVariant(VariantManagerConstants.INITIAL_VARIANT_ID, VARIANT_ID_1); @@ -130,13 +121,13 @@ public void setup() { parametersRepository.deleteAll(); } - @After + @AfterEach public void tearOff() { parametersRepository.deleteAll(); } @Test - public void testCreate() throws Exception { + void testCreate() throws Exception { VoltageInitParametersInfos parametersToCreate = buildParameters(); String parametersToCreateJson = mapper.writeValueAsString(parametersToCreate); @@ -150,7 +141,7 @@ public void testCreate() throws Exception { } @Test - public void testRead() throws Exception { + void testRead() throws Exception { VoltageInitParametersInfos parametersToRead = buildParameters(); @@ -166,7 +157,7 @@ public void testRead() throws Exception { } @Test - public void testUpdate() throws Exception { + void testUpdate() throws Exception { VoltageInitParametersInfos parametersToUpdate = buildParameters(); @@ -185,7 +176,7 @@ public void testUpdate() throws Exception { } @Test - public void testDelete() throws Exception { + void testDelete() throws Exception { VoltageInitParametersInfos parametersToDelete = buildParameters(); @@ -199,7 +190,7 @@ public void testDelete() throws Exception { } @Test - public void testGetAll() throws Exception { + void testGetAll() throws Exception { VoltageInitParametersInfos parameters1 = buildParameters(); VoltageInitParametersInfos parameters2 = buildParametersUpdate(); @@ -218,7 +209,7 @@ public void testGetAll() throws Exception { } @Test - public void testDuplicate() throws Exception { + void testDuplicate() throws Exception { VoltageInitParametersInfos parametersToCreate = buildParameters(); String parametersToCreateJson = mapper.writeValueAsString(parametersToCreate); @@ -300,7 +291,7 @@ protected VoltageInitParametersInfos buildParametersUpdate() { } @Test - public void testBuildSpecificVoltageLimits() { + void testBuildSpecificVoltageLimits() { VoltageLimitEntity voltageLimit = new VoltageLimitEntity(UUID.randomUUID(), 5., 10., 0, VoltageLimitParameterType.DEFAULT, List.of(new FilterEquipmentsEmbeddable(FILTER_UUID_1, FILTER_1))); VoltageLimitEntity voltageLimit2 = new VoltageLimitEntity(UUID.randomUUID(), 44., 88., 1, VoltageLimitParameterType.DEFAULT, List.of(new FilterEquipmentsEmbeddable(FILTER_UUID_2, FILTER_2))); @@ -310,7 +301,7 @@ public void testBuildSpecificVoltageLimits() { OpenReacParameters openReacParameters = voltageInitParametersService.buildOpenReacParameters(context, network); assertEquals(4, openReacParameters.getSpecificVoltageLimits().size()); //No override should be relative since there are no voltage limit modification - assertThat(openReacParameters.getSpecificVoltageLimits().stream().allMatch(voltageLimitOverride -> !voltageLimitOverride.isRelative())).isTrue(); + assertThat(openReacParameters.getSpecificVoltageLimits().stream().noneMatch(VoltageLimitOverride::isRelative)).isTrue(); //VLHV1, VLHV2 and VLLOAD should be applied default voltage limits since those are missing one or both limits assertThat(openReacParameters.getSpecificVoltageLimits().stream().anyMatch(voltageLimitOverride -> "VLHV1".equals(voltageLimitOverride.getVoltageLevelId()))).isTrue(); assertEquals(1, openReacParameters.getSpecificVoltageLimits().stream().filter(voltageLimitOverride -> "VLHV1".equals(voltageLimitOverride.getVoltageLevelId()) && VoltageLimitOverride.VoltageLimitType.LOW_VOLTAGE_LIMIT.equals(voltageLimitOverride.getVoltageLimitType())).count()); @@ -330,7 +321,7 @@ public void testBuildSpecificVoltageLimits() { context = new VoltageInitRunContext(NETWORK_UUID, VARIANT_ID_1, null, null, null, "", "", parametersRepository.findAll().get(1).getId(), new HashMap<>()); openReacParameters = voltageInitParametersService.buildOpenReacParameters(context, network); //There should nox be relative overrides since voltage limit modification are applied - assertThat(openReacParameters.getSpecificVoltageLimits().stream().allMatch(voltageLimitOverride -> !voltageLimitOverride.isRelative())).isFalse(); + assertThat(openReacParameters.getSpecificVoltageLimits().stream().noneMatch(VoltageLimitOverride::isRelative)).isFalse(); //Limits that weren't impacted by default settings are now impacted by modification settings assertEquals(8, openReacParameters.getSpecificVoltageLimits().size()); //VLGEN has both it limits set so it should now be impacted by modifications override @@ -365,7 +356,7 @@ public void testBuildSpecificVoltageLimits() { } @Test - public void testAddRestrictedVoltageLevelReport() { + void testAddRestrictedVoltageLevelReport() { Map restrictedVoltageLevel = new HashMap<>(); restrictedVoltageLevel.put("vl", 10.0); ReporterModel reporter = new ReporterModel("test", "test"); @@ -381,4 +372,3 @@ public void testAddRestrictedVoltageLevelReport() { assertEquals("WARN", typedValues.map(value -> value.getValue().getValue()).get()); } } - diff --git a/src/test/java/org/gridsuite/voltageinit/service/ReportServiceTest.java b/src/test/java/org/gridsuite/voltageinit/service/ReportServiceTest.java index ab1f996..fa31bf3 100644 --- a/src/test/java/org/gridsuite/voltageinit/service/ReportServiceTest.java +++ b/src/test/java/org/gridsuite/voltageinit/service/ReportServiceTest.java @@ -6,101 +6,82 @@ */ package org.gridsuite.voltageinit.service; -import com.github.tomakehurst.wiremock.WireMockServer; -import com.github.tomakehurst.wiremock.core.WireMockConfiguration; import com.github.tomakehurst.wiremock.client.WireMock; - -import static com.github.tomakehurst.wiremock.client.WireMock.*; - +import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; +import com.github.tomakehurst.wiremock.junit5.WireMockTest; import com.powsybl.commons.reporter.Reporter; import com.powsybl.commons.reporter.ReporterModel; import org.gridsuite.voltageinit.server.service.ReportService; import org.gridsuite.voltageinit.utils.ContextConfigurationWithTestChannel; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.*; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; -import static org.gridsuite.voltageinit.utils.TestUtils.resourceToString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -import java.io.IOException; import java.net.URI; import java.util.UUID; +import static com.github.tomakehurst.wiremock.client.WireMock.*; +import static org.gridsuite.voltageinit.utils.TestUtils.resourceToString; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + /** * @author Anis TOURI */ +@WireMockTest @SpringBootTest -@RunWith(SpringRunner.class) @ContextConfigurationWithTestChannel -public class ReportServiceTest { - +class ReportServiceTest { private static final UUID REPORT_UUID = UUID.fromString("7928181c-7977-4592-ba19-88027e4254e4"); - private static final String BASE_URI = "http://localhost:"; - private static final String REPORT_API_VERSION = "/v1"; - private static final String DELIMITER = "/"; - - private WireMockServer server; + private static final String REPORT_API_VERSION = "v1"; @Autowired private ReportService reportService; @MockBean private RestTemplate restTemplate; + private URI baseUrl; - private void configureWireMockServer(String reportJson) { + private void configureStubReports(final WireMock server) throws Exception { server.stubFor(get(urlEqualTo("/v1/reports/" + REPORT_UUID)) .willReturn(aResponse() .withStatus(HttpStatus.OK.value()) - .withBody(reportJson))); - - } - - @Before - public void setUp() throws IOException { - String reportJson = resourceToString("/report.json"); - server = new WireMockServer(WireMockConfiguration.wireMockConfig().dynamicPort()); - server.start(); - WireMock.configureFor("localhost", server.port()); - - configureWireMockServer(reportJson); - - reportService.setReportServiceBaseUri("http://localhost:" + server.port()); + .withBody(resourceToString("/report.json")))); } - @After - public void tearDown() { - server.stop(); + @BeforeEach + public void setUp(final WireMockRuntimeInfo wmRuntimeInfo) throws Exception { + configureStubReports(wmRuntimeInfo.getWireMock()); + reportService.setReportServiceBaseUri(wmRuntimeInfo.getHttpBaseUrl()); + this.baseUrl = URI.create(wmRuntimeInfo.getHttpBaseUrl()); } @Test - public void testSendReport() { + void testSendReport() { Reporter reporter = new ReporterModel("test", "test"); - URI expectedUri = UriComponentsBuilder - .fromPath(DELIMITER + REPORT_API_VERSION + "/reports/{reportUuid}") + URI expectedUri = UriComponentsBuilder.fromUri(baseUrl) + .pathSegment(REPORT_API_VERSION) + .path("/reports/{reportUuid}") .build(REPORT_UUID); reportService.sendReport(REPORT_UUID, reporter); - verify(restTemplate, times(1)).put(eq(BASE_URI + server.port() + expectedUri), eq(reporter)); + verify(restTemplate, times(1)).put(expectedUri.toString(), reporter); } @Test - public void testDeleteReport() { + void testDeleteReport() { reportService.deleteReport(REPORT_UUID, "VoltageInit"); - URI expectedUri = UriComponentsBuilder - .fromPath(DELIMITER + REPORT_API_VERSION + "/reports/{reportUuid}") + URI expectedUri = UriComponentsBuilder.fromUri(baseUrl) + .pathSegment(REPORT_API_VERSION) + .path("/reports/{reportUuid}") .queryParam("reportTypeFilter", "VoltageInit") .queryParam("errorOnReportNotFound", false) .build(REPORT_UUID); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - verify(restTemplate, times(1)).exchange(eq(BASE_URI + server.port() + expectedUri), eq(HttpMethod.DELETE), eq(new HttpEntity<>(headers)), eq(Void.class)); + verify(restTemplate, times(1)).exchange(expectedUri.toString(), HttpMethod.DELETE, new HttpEntity<>(headers), Void.class); } }