From 92ab71a0de9a5499cc304eb48c446b1bf830d445 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Fri, 30 Jan 2026 14:46:24 +0100 Subject: [PATCH 01/14] Migrate Shortcircuit tests to wiremock --- .../study/server/ShortCircuitTest.java | 531 ++++++++++-------- .../study/server/utils/TestUtils.java | 1 + .../wiremock/ComputationServerStubs.java | 7 + .../wiremock/ShortcircuitServerStubs.java | 32 ++ 4 files changed, 331 insertions(+), 240 deletions(-) create mode 100644 src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index bcbfa495fa..76f8d06248 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -9,16 +9,13 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.extension.Parameters; +import com.github.tomakehurst.wiremock.matching.RegexPattern; import com.powsybl.commons.exceptions.UncheckedInterruptedException; -import lombok.SneakyThrows; -import mockwebserver3.Dispatcher; -import mockwebserver3.MockResponse; import mockwebserver3.MockWebServer; -import mockwebserver3.RecordedRequest; import mockwebserver3.junit5.internal.MockWebServerExtension; -import okhttp3.Headers; -import okhttp3.HttpUrl; import org.assertj.core.api.WithAssertions; import org.gridsuite.study.server.dto.ComputationType; import org.gridsuite.study.server.dto.NodeReceiver; @@ -31,11 +28,13 @@ import org.gridsuite.study.server.service.*; import org.gridsuite.study.server.service.shortcircuit.ShortCircuitService; import org.gridsuite.study.server.service.shortcircuit.ShortcircuitAnalysisType; +import org.gridsuite.study.server.utils.SendInput; import org.gridsuite.study.server.utils.TestUtils; import org.gridsuite.study.server.utils.elasticsearch.DisableElasticsearch; -import org.jetbrains.annotations.NotNull; +import org.gridsuite.study.server.utils.wiremock.*; import org.json.JSONObject; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -58,15 +57,28 @@ import java.util.*; -import static org.gridsuite.study.server.StudyConstants.*; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.matching; +import static com.github.tomakehurst.wiremock.client.WireMock.ok; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; +import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static org.gridsuite.study.server.StudyConstants.HEADER_RECEIVER; +import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; +import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_DEBUG; import static org.gridsuite.study.server.notification.NotificationService.HEADER_UPDATE_TYPE; +import static org.gridsuite.study.server.utils.SendInput.POST_ACTION_SEND_INPUT; import static org.gridsuite.study.server.utils.TestUtils.USER_DEFAULT_PROFILE_JSON; -import static org.gridsuite.study.server.utils.TestUtils.getBinaryAsBuffer; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doAnswer; -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; @@ -139,8 +151,6 @@ class ShortCircuitTest implements WithAssertions { @Autowired private ObjectMapper objectMapper; - private ObjectWriter objectWriter; - @Autowired private NetworkModificationTreeService networkModificationTreeService; @@ -173,127 +183,51 @@ class ShortCircuitTest implements WithAssertions { private final String shortCircuitAnalysisStoppedDestination = "shortcircuitanalysis.stopped"; private final String shortCircuitAnalysisFailedDestination = "shortcircuitanalysis.run.dlx"; @Autowired - private StudyService studyService; - @Autowired private TestUtils studyTestUtils; + private static WireMockServer wireMockServer; + + private WireMockStubs wireMockStubs; + private ShortcircuitServerStubs shortcircuitServerStubs; + private UserAdminServerStubs userAdminServerStubs; + private ReportServerStubs reportServerStubs; + private ComputationServerStubs computationServerStubs; + + @BeforeAll + static void initWireMock(@Autowired InputDestination input) { + wireMockServer = new WireMockServer(wireMockConfig().dynamicPort().extensions(new SendInput(input))); + wireMockServer.start(); + } + @BeforeEach - void setup(final MockWebServer server) throws Exception { - objectWriter = objectMapper.writer().withDefaultPrettyPrinter(); - - // Ask the server for its URL. You'll need this to make HTTP requests. - HttpUrl baseHttpUrl = server.url(""); - String baseUrl = baseHttpUrl.toString().substring(0, baseHttpUrl.toString().length() - 1); - shortCircuitService.setShortCircuitServerBaseUri(baseUrl); - reportService.setReportServerBaseUri(baseUrl); - userAdminService.setUserAdminServerBaseUri(baseUrl); - - String shortCircuitAnalysisResultUuidStr = objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); - String shortCircuitAnalysisResultNotFoundUuidStr = objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND); - String shortCircuitAnalysisErrorResultUuidStr = objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_ERROR_RESULT_UUID); - - final Dispatcher dispatcher = new Dispatcher() { - @SneakyThrows - @Override - @NotNull - public MockResponse dispatch(RecordedRequest request) { - String path = Objects.requireNonNull(request.getPath()); - String method = Objects.requireNonNull(request.getMethod()); - - if (path.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&busId=BUS_TEST_ID&variantId=" + VARIANT_ID_2)) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), shortCircuitAnalysisResultUuidStr); - } else if (path.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2 + ".*")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), shortCircuitAnalysisResultUuidStr); - } else if (path.matches("/v1/networks/" + NETWORK_UUID_STRING_NOT_FOUND + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_4)) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), shortCircuitAnalysisResultNotFoundUuidStr); - } else if (path.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID)) { - input.send(MessageBuilder.withPayload("") - .setHeader("receiver", "%7B%22nodeUuid%22%3A%22" + request.getPath().split("%")[5].substring(4) + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + request.getPath().split("%")[11].substring(4) + "%22%2C%20%22userId%22%3A%22userId%22%7D") - .build(), shortCircuitAnalysisFailedDestination); - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), shortCircuitAnalysisErrorResultUuidStr); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "\\?mode=FULL")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), SHORT_CIRCUIT_ANALYSIS_RESULT_JSON); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault-types")) { - return new MockResponse(200); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault_results/paged" + "\\?rootNetworkUuid=" + NETWORK_UUID_STRING + "&variantId=" + VARIANT_ID_2 + "&mode=FULL&page=0&size=20&sort=id,DESC")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), SHORT_CIRCUIT_ANALYSIS_RESULT_JSON); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/csv")) { - return new MockResponse.Builder().code(200).body(getBinaryAsBuffer(SHORT_CIRCUIT_ANALYSIS_CSV_RESULT)).addHeader("Content-Type", "application/json; charset=utf-8").build(); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND + "/csv")) { - return new MockResponse(404); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/feeder_results/paged" + "\\?rootNetworkUuid=" + NETWORK_UUID_STRING + "&variantId=" + VARIANT_ID_2 + "&mode=FULL&filters=fakeFilters&page=0&size=20&sort=id,DESC")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), SHORT_CIRCUIT_ANALYSIS_RESULT_JSON); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); - } else if (path.matches("/v1/results/invalidate-status\\?resultUuid=" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID)) { - return new MockResponse(200); - } else if (path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop.*") - || path.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_OTHER_NODE_RESULT_UUID + "/stop.*")) { - String resultUuid = path.matches(".*variantId=" + VARIANT_ID_2 + ".*") ? SHORT_CIRCUIT_ANALYSIS_OTHER_NODE_RESULT_UUID : SHORT_CIRCUIT_ANALYSIS_RESULT_UUID; - input.send(MessageBuilder.withPayload("") - .setHeader("resultUuid", resultUuid) - .setHeader("receiver", "%7B%22nodeUuid%22%3A%22" + request.getPath().split("%")[5].substring(4) + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + request.getPath().split("%")[11].substring(4) + "%22%2C%20%22userId%22%3A%22userId%22%7D") - .build(), shortCircuitAnalysisStoppedDestination); - return new MockResponse(200); - } else if (path.matches("/v1/results\\?resultsUuids.*")) { - return new MockResponse(200); - } else if (path.matches("/v1/reports")) { - return new MockResponse(200); - } else if (path.matches("/v1/supervision/results-count")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), "1"); - } else if (path.matches("/v1/parameters")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); - } else if (path.matches("/v1/users/" + NO_PROFILE_USER_ID + "/profile")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), USER_DEFAULT_PROFILE_JSON); - } else if (path.matches("/v1/users/" + NO_PARAMS_IN_PROFILE_USER_ID + "/profile")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), USER_PROFILE_NO_PARAMS_JSON); - } else if (path.matches("/v1/users/" + VALID_PARAMS_IN_PROFILE_USER_ID + "/profile")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), USER_PROFILE_VALID_PARAMS_JSON); - } else if (path.matches("/v1/users/" + INVALID_PARAMS_IN_PROFILE_USER_ID + "/profile")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), USER_PROFILE_INVALID_PARAMS_JSON); - } else if (path.matches("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)) { - if (method.equals("GET")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), TestUtils.resourceToString("/short-circuit-parameters.json")); - } else { - //Method PUT - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); - } - } else if (path.matches("/v1/parameters\\?duplicateFrom=" + PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING) && method.equals("POST")) { - // params duplication request KO - return new MockResponse(404); - } else if (path.matches("/v1/parameters/" + PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING) && method.equals("GET")) { - return new MockResponse(404); - } else if (path.matches("/v1/parameters\\?duplicateFrom=" + PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING) && method.equals("POST")) { - // params duplication request OK - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), DUPLICATED_PARAMS_JSON); - } else if (path.matches("/v1/parameters/" + PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING) && method.equals("GET")) { - // profile params get request OK - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), SHORT_CIRCUIT_ANALYSIS_PROFILE_PARAMETERS_JSON); - } else if (path.matches("/v1/parameters") && method.equals("POST")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); - } else if (path.matches("/v1/parameters/default") && method.equals("POST")) { - return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); - } else { - LOGGER.error("Unhandled method+path: {} {}", request.getMethod(), request.getPath()); - return new MockResponse(418, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE), "Unhandled method+path: " + request.getMethod() + " " + request.getPath()); - } - } - }; - server.setDispatcher(dispatcher); + void setup() { + shortcircuitServerStubs = new ShortcircuitServerStubs(wireMockServer); + userAdminServerStubs = new UserAdminServerStubs(wireMockServer); + computationServerStubs = new ComputationServerStubs(wireMockServer); + reportServerStubs = new ReportServerStubs(wireMockServer); + wireMockStubs = new WireMockStubs(wireMockServer); + + shortCircuitService.setShortCircuitServerBaseUri(wireMockServer.baseUrl()); + reportService.setReportServerBaseUri(wireMockServer.baseUrl()); + userAdminService.setUserAdminServerBaseUri(wireMockServer.baseUrl()); } @Test - void testShortCircuitAnalysisParameters(final MockWebServer server) throws Exception { + void testShortCircuitAnalysisParameters() throws Exception { //insert a study StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), UUID.fromString(CASE_SHORT_CIRCUIT_UUID_STRING), null); UUID studyNameUserIdUuid = studyEntity.getId(); + wireMockStubs.stubParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); + computationServerStubs.stubParametersGet(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING,TestUtils.resourceToString("/short-circuit-parameters.json")); + //get default ShortCircuitParameters mockMvc.perform(get("/v1/studies/{studyUuid}/short-circuit-analysis/parameters", studyNameUserIdUuid)) .andExpectAll(status().isOk(), content().string(TestUtils.resourceToString("/short-circuit-parameters.json"))); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.equals("/v1/parameters/default"))); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.equals("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID))); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/parameters/default", Map.of()); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of()); + computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); mockMvc.perform(post("/v1/studies/{studyUuid}/short-circuit-analysis/parameters", studyNameUserIdUuid) .header(HEADER_USER_ID, "testUserId") .content("{\"dumb\": \"json\"}").contentType(MediaType.APPLICATION_JSON)) @@ -302,13 +236,12 @@ void testShortCircuitAnalysisParameters(final MockWebServer server) throws Excep assertEquals(NotificationService.UPDATE_TYPE_ONE_BUS_SHORT_CIRCUIT_STATUS, output.receive(TIMEOUT, studyUpdateDestination).getHeaders().get(NotificationService.HEADER_UPDATE_TYPE)); assertEquals(NotificationService.UPDATE_TYPE_PCC_MIN_STATUS, output.receive(TIMEOUT, studyUpdateDestination).getHeaders().get(NotificationService.HEADER_UPDATE_TYPE)); assertEquals(NotificationService.UPDATE_TYPE_COMPUTATION_PARAMETERS, output.receive(TIMEOUT, studyUpdateDestination).getHeaders().get(NotificationService.HEADER_UPDATE_TYPE)); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.equals("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID))); + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of(), null); } @Test - void testAllBusesShortCircuit(final MockWebServer server) throws Exception { - //insert a study + void testAllBusesShortCircuit() throws Exception { +//insert a study StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, null); UUID studyNameUserIdUuid = studyEntity.getId(); UUID firstRootNetworkUuid = studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid); @@ -324,10 +257,6 @@ void testAllBusesShortCircuit(final MockWebServer server) throws Exception { NetworkModificationNode modificationNode3 = createNetworkModificationNode(studyNameUserIdUuid, modificationNode2Uuid, UUID.randomUUID(), VARIANT_ID_2, "node 3"); UUID modificationNode3Uuid = modificationNode3.getId(); - - NetworkModificationNode modificationNode4 = createNetworkModificationNode(studyNameUserIdUuid, - modificationNode3Uuid, UUID.randomUUID(), VARIANT_ID_3, "node 4"); - UUID unknownModificationNodeUuid = UUID.randomUUID(); // run a short circuit analysis on root node (not allowed) @@ -335,87 +264,123 @@ void testAllBusesShortCircuit(final MockWebServer server) throws Exception { .header("userId", "userId")) .andExpect(status().isForbidden()); + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); //run in debug mode an all-buses short circuit analysis mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param(QUERY_PARAM_DEBUG, "true") .header("userId", "userId")) .andExpect(status().isOk()); - + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_2), + "debug", WireMock.equalTo("true")), + null); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, true); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2 + "&debug=true"))); - + computationServerStubs.stubGetResult(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_RESULT_JSON); // get short circuit result mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)) - .andExpectAll( - status().isOk(), - content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON)); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "\\?mode=FULL"))); - + .andExpectAll( + status().isOk(), + content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON)); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, Map.of("mode", WireMock.equalTo("FULL"))); + + wireMockServer.stubFor(WireMock.post(urlPathEqualTo( + "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/csv" + )) + .willReturn(aResponse() + .withStatus(200) + .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .withBody(SHORT_CIRCUIT_ANALYSIS_CSV_RESULT) + )); // export short circuit analysis csv result mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result/csv", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", "ALL_BUSES") .content(CSV_HEADERS)).andExpectAll(status().isOk(), content().bytes(SHORT_CIRCUIT_ANALYSIS_CSV_RESULT)); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/csv"))); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/csv", Map.of()); // get short circuit result but with unknown node mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result", studyNameUserIdUuid, firstRootNetworkUuid, unknownModificationNodeUuid)).andExpect( status().isNoContent()); - assertTrue(TestUtils.getRequestsDone(0, server).isEmpty()); - + computationServerStubs.stubGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); // get short circuit status mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_STATUS_JSON)); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status"))); - + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status", Map.of()); + + wireMockServer.stubFor( + WireMock.put(WireMock.urlPathEqualTo("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop")).withPostServeAction(POST_ACTION_SEND_INPUT, + Parameters.from( + Map.of( + "payload", "", + "destination", shortCircuitAnalysisStoppedDestination, + "receiver", "%7B%22nodeUuid%22%3A%22" + modificationNode3Uuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + firstRootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" + ))).willReturn(ok()) + ); // stop short circuit analysis mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/stop", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .header(HEADER_USER_ID, "userId")) .andExpect(status().isOk()); - + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop", true, Map.of( + "receiver", WireMock.matching(".*")), null); checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_STATUS, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_RESULT); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop\\?receiver=.*nodeUuid.*"))); - + wireMockServer.stubFor( + WireMock.post(WireMock.urlPathMatching("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save")) + .withQueryParam("receiver", WireMock.matching(".*")) + .withQueryParam("reportUuid", WireMock.matching(".*")) + .withQueryParam("reporterId", WireMock.matching(".*")) + .withQueryParam("variantId", WireMock.equalTo(VARIANT_ID)) + .withPostServeAction(POST_ACTION_SEND_INPUT, + Parameters.from( + Map.of( + "payload", "", + "destination", shortCircuitAnalysisFailedDestination, + "receiver", "%7B%22nodeUuid%22%3A%22" + modificationNode2Uuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + firstRootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" + )) + ).willReturn(WireMock.okJson("\"" + SHORT_CIRCUIT_ANALYSIS_ERROR_RESULT_UUID + "\""))); // short circuit analysis failed mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode2Uuid) .header(HEADER_USER_ID, "testUserId")) .andExpect(status().isOk()).andReturn(); - - checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_FAILED); - checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_STATUS); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID))); + checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_FAILED); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID)), + null); // Test result count // In short-circuit server there is no distinction between 1-bus and all-buses, so the count will return all kinds of short-circuit + computationServerStubs.stubResultsCount(1); mockMvc.perform(delete("/v1/supervision/computation/results") .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) .queryParam("dryRun", "true")) .andExpect(status().isOk()); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/supervision/results-count"))); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/supervision/results-count", Map.of()); // Delete Shortcircuit results // In short-circuit server there is no distinction between 1-bus and all-buses, so we remove all kinds of short-circuit assertEquals(1, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); + computationServerStubs.stubDeleteResults("/v1/results"); + reportServerStubs.stubDeleteReport(); mockMvc.perform(delete("/v1/supervision/computation/results") .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) .queryParam("dryRun", "false")) .andExpect(status().isOk()); - - var requests = TestUtils.getRequestsDone(2, server); - assertTrue(requests.stream().anyMatch(r -> r.matches("/v1/results\\?resultsUuids"))); - assertTrue(requests.stream().anyMatch(r -> r.matches("/v1/reports"))); + WireMockUtilsCriteria.verifyDeleteRequest(wireMockServer, "/v1/results", Map.of("resultsUuids", matching(".*"))); + reportServerStubs.verifyDeleteReport(); assertEquals(0, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); } @Test - void testGetShortCircuitAnalysisCsvResultNotFound(final MockWebServer server) throws Exception { + void testGetShortCircuitAnalysisCsvResultNotFound() throws Exception { //insert a study StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING_NOT_FOUND), UUID.fromString(CASE_SHORT_CIRCUIT_UUID_STRING_NOT_FOUND), null); UUID studyNameUserIdUuid = studyEntity.getId(); @@ -429,28 +394,38 @@ void testGetShortCircuitAnalysisCsvResultNotFound(final MockWebServer server) th modificationNode1Uuid, UUID.randomUUID(), VARIANT_ID, "node 2"); UUID modificationNode2Uuid = modificationNode2.getId(); - NetworkModificationNode modificationNode4 = createNetworkModificationNode(studyNameUserIdUuid, - modificationNode2Uuid, UUID.randomUUID(), VARIANT_ID_4, "node 4"); - UUID modificationNode4Uuid = modificationNode4.getId(); + NetworkModificationNode modificationNode3 = createNetworkModificationNode(studyNameUserIdUuid, + modificationNode2Uuid, UUID.randomUUID(), VARIANT_ID_4, "node 3"); + UUID modificationNode3Uuid = modificationNode3.getId(); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid) .header("userId", "userId")) .andExpect(status().isForbidden()); - mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode4Uuid) + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING_NOT_FOUND, VARIANT_ID_4, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND); + mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .header("userId", "userId")) .andExpect(status().isOk()); - - consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode4Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND, false); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING_NOT_FOUND + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_4))); - + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING_NOT_FOUND + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_4)), + null); + consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND, false); + + wireMockServer.stubFor(WireMock.post(urlPathEqualTo( + "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND + "/csv" + )) + .willReturn(aResponse() + .withStatus(HttpStatus.NOT_FOUND.value()) + .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + )); // export short circuit analysis csv result not found - - mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result/csv", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode4Uuid) + mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result/csv", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", "ALL_BUSES") .content(CSV_HEADERS)).andExpectAll(status().isNotFound()); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND + "/csv"))); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND + "/csv", Map.of()); } private void consumeShortCircuitAnalysisResult(UUID studyUuid, UUID rootNetworkUuid, UUID nodeUuid, String resultUuid, boolean debug) throws JsonProcessingException { @@ -487,7 +462,7 @@ private void consumeShortCircuitAnalysisOneBusResult(UUID studyUuid, UUID rootNe } @Test - void testPagedShortCircuit(final MockWebServer server) throws Exception { + void testPagedShortCircuit() throws Exception { //insert a study StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, null); UUID studyNameUserIdUuid = studyEntity.getId(); @@ -499,54 +474,80 @@ void testPagedShortCircuit(final MockWebServer server) throws Exception { UUID unknownModificationNodeUuid = UUID.randomUUID(); + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); //run a short circuit analysis mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid) .header(HEADER_USER_ID, "userId")) .andExpect(status().isOk()); - + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_2)), + null); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, false); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2))); + wireMockServer.stubFor(WireMock.get("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault-types").willReturn(WireMock.ok())); // get fault types mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/computation/result/enum-values?computingType={computingType}&enumName={enumName}", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid, ComputationType.SHORT_CIRCUIT, "fault-types")) .andExpectAll(status().isOk()); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault-types"))); - + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault-types", Map.of()); + + wireMockServer.stubFor(WireMock.get(WireMock.urlPathMatching("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault_results/paged")) + .withQueryParam("rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING)) + .withQueryParam("variantId", WireMock.equalTo(VARIANT_ID_2)) + .withQueryParam("mode", WireMock.equalTo("FULL")) + .withQueryParam("page", WireMock.equalTo("0")) + .withQueryParam("size", WireMock.equalTo("20")) + .withQueryParam("sort", WireMock.equalTo("id,DESC")) + .willReturn(WireMock.okJson(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON))); // get short circuit result with pagination mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result?paged=true&page=0&size=20&sort=id,DESC", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid)).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON)); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault_results/paged\\?rootNetworkUuid=" + NETWORK_UUID_STRING + "&variantId=variant_2&mode=FULL&page=0&size=20&sort=id,DESC"))); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault_results/paged", Map.of( + "rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING), + "variantId", WireMock.equalTo(VARIANT_ID_2), + "mode", WireMock.equalTo("FULL"), + "page", WireMock.equalTo("0"), + "size", WireMock.equalTo("20"), + "sort", WireMock.equalTo("id,DESC") + )); // get short circuit result with pagination but with unknown node mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result?paged=true&page=0&size=20", studyNameUserIdUuid, firstRootNetworkUuid, unknownModificationNodeUuid)).andExpect( status().isNoContent()); - assertTrue(TestUtils.getRequestsDone(0, server).isEmpty()); - // get short circuit status + computationServerStubs.stubGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid)).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_STATUS_JSON)); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status"))); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status", Map.of()); // stop short circuit analysis + wireMockServer.stubFor( + WireMock.put(WireMock.urlPathEqualTo("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop")).withPostServeAction(POST_ACTION_SEND_INPUT, + Parameters.from( + Map.of( + "payload", "", + "destination", shortCircuitAnalysisStoppedDestination, + "receiver", "%7B%22nodeUuid%22%3A%22" + modificationNode1Uuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + firstRootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" + ))).willReturn(ok()) + ); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/stop", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid) .header(HEADER_USER_ID, "userId")) .andExpect(status().isOk()); checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_STATUS, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_RESULT); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop\\?receiver=.*nodeUuid.*"))); + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop", true, Map.of( + "receiver", WireMock.matching(".*")), null); } @Test - void testOneBusShortCircuit(final MockWebServer server) throws Exception { + void testOneBusShortCircuit() throws Exception { //insert a study StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, null); UUID studyNameUserIdUuid = studyEntity.getId(); @@ -564,9 +565,6 @@ void testOneBusShortCircuit(final MockWebServer server) throws Exception { modificationNode2Uuid, UUID.randomUUID(), VARIANT_ID_2, "node 3"); UUID modificationNode3Uuid = modificationNode3.getId(); - NetworkModificationNode modificationNode4 = createNetworkModificationNode(studyNameUserIdUuid, - modificationNode3Uuid, UUID.randomUUID(), VARIANT_ID_3, "node 4"); - // run a one bus short circuit analysis on root node (not allowed) mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, rootNodeUuid) .param("busId", "BUS_TEST_ID") @@ -574,37 +572,59 @@ void testOneBusShortCircuit(final MockWebServer server) throws Exception { .andExpect(status().isForbidden()); //run in debug mode a one bus short circuit analysis + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("busId", "BUS_TEST_ID") .param(QUERY_PARAM_DEBUG, "true") .header("userId", "userId")) .andExpect(status().isOk()); - + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "debug", WireMock.equalTo("true"), + "variantId", WireMock.equalTo(VARIANT_ID_2)), + null); consumeShortCircuitAnalysisOneBusResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, true); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2 + "&debug=true"))); - assertEquals(1, rootNetworkNodeInfoRepository.findAllByOneBusShortCircuitAnalysisResultUuidNotNull().size()); // get one bus short circuit result + computationServerStubs.stubGetResult(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_RESULT_JSON); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", ShortcircuitAnalysisType.ONE_BUS.name())) .andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON) ); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, Map.of("mode", WireMock.equalTo("FULL"))); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "\\?mode=FULL"))); // get short circuit result with pagination + wireMockServer.stubFor(WireMock.get(WireMock.urlPathMatching("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/feeder_results/paged")) + .withQueryParam("rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING)) + .withQueryParam("variantId", WireMock.equalTo(VARIANT_ID_2)) + .withQueryParam("filters", WireMock.equalTo("fakeFilters")) + .withQueryParam("mode", WireMock.equalTo("FULL")) + .withQueryParam("page", WireMock.equalTo("0")) + .withQueryParam("size", WireMock.equalTo("20")) + .withQueryParam("sort", WireMock.equalTo("id,DESC")) + .willReturn(WireMock.okJson(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON))); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result?paged=true&page=0&size=20&sort=id,DESC&filters=fakeFilters", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", ShortcircuitAnalysisType.ONE_BUS.name()) ).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON)); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/feeder_results/paged\\?rootNetworkUuid=" + NETWORK_UUID_STRING + "&variantId=variant_2&mode=FULL&filters=fakeFilters&page=0&size=20&sort=id,DESC"))); - + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/feeder_results/paged", Map.of( + "rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING), + "variantId", WireMock.equalTo(VARIANT_ID_2), + "filters", WireMock.equalTo("fakeFilters"), + "mode", WireMock.equalTo("FULL"), + "page", WireMock.equalTo("0"), + "size", WireMock.equalTo("20"), + "sort", WireMock.equalTo("id,DESC") + )); + + computationServerStubs.stubGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); // get one bus short circuit status mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", ShortcircuitAnalysisType.ONE_BUS.name())) @@ -612,25 +632,25 @@ void testOneBusShortCircuit(final MockWebServer server) throws Exception { status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_STATUS_JSON) ); - - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status"))); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status", Map.of()); //Test result count + computationServerStubs.stubResultsCount(1); mockMvc.perform(delete("/v1/supervision/computation/results") .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) .queryParam("dryRun", "true")) .andExpect(status().isOk()); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/supervision/results-count"))); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/supervision/results-count", Map.of()); // Delete Shortcircuit results + computationServerStubs.stubDeleteResults("/v1/results"); + reportServerStubs.stubDeleteReport(); mockMvc.perform(delete("/v1/supervision/computation/results") .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) .queryParam("dryRun", "false")) .andExpect(status().isOk()); - - var requests = TestUtils.getRequestsDone(2, server); - assertTrue(requests.stream().anyMatch(r -> r.matches("/v1/results\\?resultsUuids"))); - assertTrue(requests.stream().anyMatch(r -> r.matches("/v1/reports"))); + WireMockUtilsCriteria.verifyDeleteRequest(wireMockServer, "/v1/results", Map.of("resultsUuids", matching(".*"))); + reportServerStubs.verifyDeleteReport(); assertEquals(0, rootNetworkNodeInfoRepository.findAllByOneBusShortCircuitAnalysisResultUuidNotNull().size()); } @@ -715,7 +735,7 @@ void testNoResult() throws Exception { } @Test - void testSetParamInvalidateShortCircuitStatus(final MockWebServer server) throws Exception { + void testSetParamInvalidateShortCircuitStatus() throws Exception { //insert a study StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, null); UUID studyNameUserIdUuid = studyEntity.getId(); @@ -734,19 +754,30 @@ void testSetParamInvalidateShortCircuitStatus(final MockWebServer server) throws UUID modificationNode3Uuid = modificationNode3.getId(); //run a short circuit analysis + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .header("userId", "userId")) .andExpect(status().isOk()) .andReturn(); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_2)), + null); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, false); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2))); // update parameters invalidate the status + computationServerStubs.stubParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); + wireMockServer.stubFor(WireMock.post(WireMock.urlPathEqualTo("/v1/parameters/default")) + .willReturn(WireMock.ok().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).withBody(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)))).getId(); + userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); + wireMockServer.stubFor(WireMock.put(WireMock.urlMatching("/v1/results/invalidate-status\\?resultUuid=.*")) + .willReturn(WireMock.ok())); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - var requests = TestUtils.getRequestsDone(3, server); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/users/" + NO_PROFILE_USER_ID + "/profile"))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters/default"))); - assertTrue(requests.stream().anyMatch(r -> r.matches("/v1/results/invalidate-status\\?resultUuid=.*"))); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/parameters/default", Map.of()); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PROFILE_USER_ID + "/profile", Map.of()); + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/invalidate-status", Map.of("resultUuid", new RegexPattern(".*")), null); } @Test @@ -769,20 +800,31 @@ void testSetParamInvalidateOneBusShortCircuitStatus(final MockWebServer server) UUID modificationNode3Uuid = modificationNode3.getId(); //run a one bus short circuit analysis + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("busId", "BUS_TEST_ID") .header("userId", "userId")) .andExpect(status().isOk()) .andReturn(); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_2)), + null); consumeShortCircuitAnalysisOneBusResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, false); - assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2))); // update parameters invalidate the status + computationServerStubs.stubParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); + wireMockServer.stubFor(WireMock.post(WireMock.urlPathEqualTo("/v1/parameters/default")) + .willReturn(WireMock.ok().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).withBody(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)))).getId(); + userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); + wireMockServer.stubFor(WireMock.put(WireMock.urlMatching("/v1/results/invalidate-status\\?resultUuid=.*")) + .willReturn(WireMock.ok())); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - var requests = TestUtils.getRequestsDone(3, server); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/users/" + NO_PROFILE_USER_ID + "/profile"))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters/default"))); - assertTrue(requests.stream().anyMatch(r -> r.matches("/v1/results/invalidate-status\\?resultUuid=.*"))); + WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/parameters/default", Map.of()); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PROFILE_USER_ID + "/profile", Map.of()); + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/invalidate-status", Map.of("resultUuid", new RegexPattern(".*")), null); } private void createOrUpdateParametersAndDoChecks(UUID studyNameUserIdUuid, String parameters, String userId, HttpStatusCode status) throws Exception { @@ -811,60 +853,69 @@ private void createOrUpdateParametersAndDoChecks(UUID studyNameUserIdUuid, Strin } @Test - void testResetShortCircuitAnalysisParametersUserHasNoProfile(final MockWebServer server) throws Exception { + void testResetShortCircuitAnalysisParametersUserHasNoProfile() throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID); UUID studyNameUserIdUuid = studyEntity.getId(); - createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - var requests = TestUtils.getRequestsDone(2, server); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/users/" + NO_PROFILE_USER_ID + "/profile"))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING))); // update existing with dft + userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); + computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PROFILE_USER_ID + "/profile", Map.of()); + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of(), null); } @Test void testResetShortCircuitAnalysisParametersUserHasNoParamsInProfile(final MockWebServer server) throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID); UUID studyNameUserIdUuid = studyEntity.getId(); - createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); - var requests = TestUtils.getRequestsDone(2, server); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/users/" + NO_PARAMS_IN_PROFILE_USER_ID + "/profile"))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING))); // update existing with dft + userAdminServerStubs.stubGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); + computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); + WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PARAMS_IN_PROFILE_USER_ID + "/profile", Map.of()); + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of(), null); } @Test void testResetShortCircuitAnalysisParametersUserHasInvalidParamsInProfile(final MockWebServer server) throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID); UUID studyNameUserIdUuid = studyEntity.getId(); - createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", INVALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.NO_CONTENT); - var requests = TestUtils.getRequestsDone(3, server); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/users/" + INVALID_PARAMS_IN_PROFILE_USER_ID + "/profile"))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING))); // update existing with dft - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters?duplicateFrom=" + PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING))); // post duplicate ko + userAdminServerStubs.stubGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_INVALID_PARAMS_JSON); + computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParametersDuplicateFromNotFound(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); + createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", INVALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.NO_CONTENT); + userAdminServerStubs.verifyGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID); + WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of(), null); + computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); } @Test void testResetShortCircuitAnalysisParametersUserHasValidParamsInProfile(final MockWebServer server) throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID); UUID studyNameUserIdUuid = studyEntity.getId(); - createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", VALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); - var requests = TestUtils.getRequestsDone(3, server); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/users/" + VALID_PARAMS_IN_PROFILE_USER_ID + "/profile"))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters?duplicateFrom=" + PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING))); // post duplicate ok + userAdminServerStubs.stubGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_VALID_PARAMS_JSON); + computationServerStubs.stubParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(PROFILE_SHORT_CIRCUIT_ANALYSIS_DUPLICATED_PARAMETERS_UUID_STRING)); + wireMockServer.stubFor(WireMock.delete(WireMock.urlPathEqualTo("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)) + .willReturn(WireMock.ok()) + ); + createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", VALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); + userAdminServerStubs.verifyGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID); + computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING); + WireMockUtilsCriteria.verifyDeleteRequest(wireMockServer, "/v1/parameters/"+ SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of()); } @Test void testResetShortCircuitAnalysisParametersUserHasValidParamsInProfileButNoExistingShortcircuitAnalysisParams(final MockWebServer server) throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, null); UUID studyNameUserIdUuid = studyEntity.getId(); - createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", VALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); - var requests = TestUtils.getRequestsDone(2, server); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/users/" + VALID_PARAMS_IN_PROFILE_USER_ID + "/profile"))); - assertTrue(requests.stream().anyMatch(r -> r.equals("/v1/parameters?duplicateFrom=" + PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING))); // post duplicate ok + userAdminServerStubs.stubGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_VALID_PARAMS_JSON); + computationServerStubs.stubParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(PROFILE_SHORT_CIRCUIT_ANALYSIS_DUPLICATED_PARAMETERS_UUID_STRING)); + createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", VALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); + userAdminServerStubs.verifyGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID); + computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING); } private StudyEntity insertDummyStudy(UUID networkUuid, UUID caseUuid, UUID shortCircuitParametersUuid) { @@ -897,7 +948,7 @@ private NetworkModificationNode createNetworkModificationNode(UUID studyUuid, UU .children(Collections.emptyList()).build(); // Only for tests - String mnBodyJson = objectWriter.writeValueAsString(modificationNode); + String mnBodyJson = objectMapper.writeValueAsString(modificationNode); JSONObject jsonObject = new JSONObject(mnBodyJson); jsonObject.put("variantId", variantId); jsonObject.put("modificationGroupUuid", modificationGroupUuid); @@ -917,7 +968,7 @@ private NetworkModificationNode createNetworkModificationNode(UUID studyUuid, UU } @AfterEach - void tearDown(final MockWebServer server) { + void tearDown() { studyRepository.findAll().forEach(s -> networkModificationTreeService.doDeleteTree(s.getId())); studyRepository.deleteAll(); @@ -925,7 +976,7 @@ void tearDown(final MockWebServer server) { TestUtils.assertQueuesEmptyThenClear(destinations, output); try { - TestUtils.assertServerRequestsEmptyThenShutdown(server); + TestUtils.assertWiremockServerRequestsEmptyThenClear(wireMockServer); } catch (UncheckedInterruptedException e) { LOGGER.error("Error while attempting to get the request done : ", e); } diff --git a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java index 92634ae060..5f3c72c401 100644 --- a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java +++ b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java @@ -232,6 +232,7 @@ public static void assertWiremockServerRequestsEmptyThenShutdown(WireMockServer public static void assertWiremockServerRequestsEmptyThenClear(WireMockServer wireMockServer) throws UncheckedInterruptedException { try { wireMockServer.checkForUnmatchedRequests(); + var test = wireMockServer.findAll(WireMock.anyRequestedFor(WireMock.anyUrl())); assertEquals(0, wireMockServer.findAll(WireMock.anyRequestedFor(WireMock.anyUrl())).size()); } finally { wireMockServer.resetAll(); diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java index 47e2b31fbd..92ea97ee10 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java @@ -51,6 +51,13 @@ public UUID stubGetResultStatus(String resultUuid, String statusJson) { .withBody(statusJson))).getId(); } + public UUID stubGetResult(String resultUuid, String statusJson) { + return wireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/v1/results/" + resultUuid )).withQueryParam("mode", WireMock.equalTo("FULL")) + .willReturn(WireMock.ok() + .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .withBody(statusJson))).getId(); + } + public void verifyComputationStop(String resultUuid, Map queryParams) { WireMockUtilsCriteria.verifyPutRequest(wireMock, "/v1/results/" + resultUuid + "/stop", true, queryParams, null); } diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java new file mode 100644 index 0000000000..20d81ebb2e --- /dev/null +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2026, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.study.server.utils.wiremock; + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; +import org.gridsuite.study.server.utils.TestUtils; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; + +import java.io.IOException; + +/** + * @author Hugo Marcellin + */ +public class ShortcircuitServerStubs { + private final WireMockServer wireMock; + + public ShortcircuitServerStubs(WireMockServer wireMock) { + this.wireMock = wireMock; + } + + public void stubGetShortcircuitParameters(String parametersUuid) throws IOException { + wireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/v1/parameters/" + parametersUuid + "/provider")) + .willReturn(WireMock.ok().withBody(TestUtils.resourceToString("/short-circuit-parameters.json")).withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)) + ); + } +} From 69f018720ed5e11c7c3d67968f5c3377cd7cd5ad Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 11:30:30 +0100 Subject: [PATCH 02/14] Factorize and cleanup --- .../study/server/ShortCircuitTest.java | 222 +++++------------- .../rootnetworks/SecurityAnalysisTest.java | 22 +- .../wiremock/ComputationServerStubs.java | 69 +++++- .../wiremock/ShortcircuitServerStubs.java | 105 ++++++++- 4 files changed, 227 insertions(+), 191 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index 76f8d06248..a0e29a8d0f 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -11,7 +11,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; -import com.github.tomakehurst.wiremock.extension.Parameters; import com.github.tomakehurst.wiremock.matching.RegexPattern; import com.powsybl.commons.exceptions.UncheckedInterruptedException; import mockwebserver3.MockWebServer; @@ -46,7 +45,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.stream.binder.test.InputDestination; import org.springframework.cloud.stream.binder.test.OutputDestination; -import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatusCode; import org.springframework.http.MediaType; @@ -57,16 +55,12 @@ import java.util.*; -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.matching; -import static com.github.tomakehurst.wiremock.client.WireMock.ok; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; import static org.gridsuite.study.server.StudyConstants.HEADER_RECEIVER; import static org.gridsuite.study.server.StudyConstants.HEADER_USER_ID; import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_DEBUG; import static org.gridsuite.study.server.notification.NotificationService.HEADER_UPDATE_TYPE; -import static org.gridsuite.study.server.utils.SendInput.POST_ACTION_SEND_INPUT; import static org.gridsuite.study.server.utils.TestUtils.USER_DEFAULT_PROFILE_JSON; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -187,7 +181,6 @@ class ShortCircuitTest implements WithAssertions { private static WireMockServer wireMockServer; - private WireMockStubs wireMockStubs; private ShortcircuitServerStubs shortcircuitServerStubs; private UserAdminServerStubs userAdminServerStubs; private ReportServerStubs reportServerStubs; @@ -205,7 +198,6 @@ void setup() { userAdminServerStubs = new UserAdminServerStubs(wireMockServer); computationServerStubs = new ComputationServerStubs(wireMockServer); reportServerStubs = new ReportServerStubs(wireMockServer); - wireMockStubs = new WireMockStubs(wireMockServer); shortCircuitService.setShortCircuitServerBaseUri(wireMockServer.baseUrl()); reportService.setReportServerBaseUri(wireMockServer.baseUrl()); @@ -218,16 +210,15 @@ void testShortCircuitAnalysisParameters() throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), UUID.fromString(CASE_SHORT_CIRCUIT_UUID_STRING), null); UUID studyNameUserIdUuid = studyEntity.getId(); - wireMockStubs.stubParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); - computationServerStubs.stubParametersGet(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING,TestUtils.resourceToString("/short-circuit-parameters.json")); - + computationServerStubs.stubPostParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); + computationServerStubs.stubParametersGet(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, TestUtils.resourceToString("/short-circuit-parameters.json")); //get default ShortCircuitParameters mockMvc.perform(get("/v1/studies/{studyUuid}/short-circuit-analysis/parameters", studyNameUserIdUuid)) .andExpectAll(status().isOk(), content().string(TestUtils.resourceToString("/short-circuit-parameters.json"))); WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/parameters/default", Map.of()); WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of()); - computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); mockMvc.perform(post("/v1/studies/{studyUuid}/short-circuit-analysis/parameters", studyNameUserIdUuid) .header(HEADER_USER_ID, "testUserId") .content("{\"dumb\": \"json\"}").contentType(MediaType.APPLICATION_JSON)) @@ -241,7 +232,7 @@ void testShortCircuitAnalysisParameters() throws Exception { @Test void testAllBusesShortCircuit() throws Exception { -//insert a study + //insert a study StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, null); UUID studyNameUserIdUuid = studyEntity.getId(); UUID firstRootNetworkUuid = studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid); @@ -264,38 +255,25 @@ void testAllBusesShortCircuit() throws Exception { .header("userId", "userId")) .andExpect(status().isForbidden()); - computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); //run in debug mode an all-buses short circuit analysis + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param(QUERY_PARAM_DEBUG, "true") .header("userId", "userId")) .andExpect(status().isOk()); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, - Map.of( - "receiver", WireMock.matching(".*"), - "reporterId", WireMock.matching(".*"), - "variantId", WireMock.equalTo(VARIANT_ID_2), - "debug", WireMock.equalTo("true")), - null); + shortcircuitServerStubs.verifyShortcircuitRun(NETWORK_UUID_STRING, VARIANT_ID_2, true); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, true); - computationServerStubs.stubGetResult(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_RESULT_JSON); // get short circuit result + computationServerStubs.stubGetResult(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_RESULT_JSON); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)) .andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON)); WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, Map.of("mode", WireMock.equalTo("FULL"))); - wireMockServer.stubFor(WireMock.post(urlPathEqualTo( - "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/csv" - )) - .willReturn(aResponse() - .withStatus(200) - .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .withBody(SHORT_CIRCUIT_ANALYSIS_CSV_RESULT) - )); // export short circuit analysis csv result + computationServerStubs.stubGetResultCsv(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_CSV_RESULT); mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result/csv", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", "ALL_BUSES") .content(CSV_HEADERS)).andExpectAll(status().isOk(), content().bytes(SHORT_CIRCUIT_ANALYSIS_CSV_RESULT)); @@ -305,23 +283,15 @@ void testAllBusesShortCircuit() throws Exception { mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result", studyNameUserIdUuid, firstRootNetworkUuid, unknownModificationNodeUuid)).andExpect( status().isNoContent()); - computationServerStubs.stubGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); // get short circuit status + computationServerStubs.stubGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_STATUS_JSON)); WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status", Map.of()); - wireMockServer.stubFor( - WireMock.put(WireMock.urlPathEqualTo("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop")).withPostServeAction(POST_ACTION_SEND_INPUT, - Parameters.from( - Map.of( - "payload", "", - "destination", shortCircuitAnalysisStoppedDestination, - "receiver", "%7B%22nodeUuid%22%3A%22" + modificationNode3Uuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + firstRootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" - ))).willReturn(ok()) - ); // stop short circuit analysis + shortcircuitServerStubs.stubShortCircuitStopWithPostAction(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, shortCircuitAnalysisStoppedDestination, modificationNode3Uuid, firstRootNetworkUuid); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/stop", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .header(HEADER_USER_ID, "userId")) .andExpect(status().isOk()); @@ -329,21 +299,8 @@ void testAllBusesShortCircuit() throws Exception { "receiver", WireMock.matching(".*")), null); checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_STATUS, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_RESULT); - wireMockServer.stubFor( - WireMock.post(WireMock.urlPathMatching("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save")) - .withQueryParam("receiver", WireMock.matching(".*")) - .withQueryParam("reportUuid", WireMock.matching(".*")) - .withQueryParam("reporterId", WireMock.matching(".*")) - .withQueryParam("variantId", WireMock.equalTo(VARIANT_ID)) - .withPostServeAction(POST_ACTION_SEND_INPUT, - Parameters.from( - Map.of( - "payload", "", - "destination", shortCircuitAnalysisFailedDestination, - "receiver", "%7B%22nodeUuid%22%3A%22" + modificationNode2Uuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + firstRootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" - )) - ).willReturn(WireMock.okJson("\"" + SHORT_CIRCUIT_ANALYSIS_ERROR_RESULT_UUID + "\""))); // short circuit analysis failed + shortcircuitServerStubs.stubShortCircuitRunWithPostAction(NETWORK_UUID_STRING, VARIANT_ID, SHORT_CIRCUIT_ANALYSIS_ERROR_RESULT_UUID, shortCircuitAnalysisFailedDestination, modificationNode2Uuid, firstRootNetworkUuid); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode2Uuid) .header(HEADER_USER_ID, "testUserId")) .andExpect(status().isOk()).andReturn(); @@ -414,14 +371,8 @@ void testGetShortCircuitAnalysisCsvResultNotFound() throws Exception { null); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND, false); - wireMockServer.stubFor(WireMock.post(urlPathEqualTo( - "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND + "/csv" - )) - .willReturn(aResponse() - .withStatus(HttpStatus.NOT_FOUND.value()) - .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - )); // export short circuit analysis csv result not found + computationServerStubs.stubGetResultCsvNotFound(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND); mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result/csv", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", "ALL_BUSES") .content(CSV_HEADERS)).andExpectAll(status().isNotFound()); @@ -474,47 +425,32 @@ void testPagedShortCircuit() throws Exception { UUID unknownModificationNodeUuid = UUID.randomUUID(); - computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); //run a short circuit analysis + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID_2, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid) .header(HEADER_USER_ID, "userId")) .andExpect(status().isOk()); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, - Map.of( + computationServerStubs.verifyComputationRun(NETWORK_UUID_STRING, Map.of( "receiver", WireMock.matching(".*"), "reporterId", WireMock.matching(".*"), - "variantId", WireMock.equalTo(VARIANT_ID_2)), - null); + "variantId", WireMock.equalTo(VARIANT_ID_2))); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, false); - - wireMockServer.stubFor(WireMock.get("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault-types").willReturn(WireMock.ok())); // get fault types + shortcircuitServerStubs.stubGetFaultTypes(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/computation/result/enum-values?computingType={computingType}&enumName={enumName}", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid, ComputationType.SHORT_CIRCUIT, "fault-types")) .andExpectAll(status().isOk()); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault-types", Map.of()); - - wireMockServer.stubFor(WireMock.get(WireMock.urlPathMatching("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault_results/paged")) - .withQueryParam("rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING)) - .withQueryParam("variantId", WireMock.equalTo(VARIANT_ID_2)) - .withQueryParam("mode", WireMock.equalTo("FULL")) - .withQueryParam("page", WireMock.equalTo("0")) - .withQueryParam("size", WireMock.equalTo("20")) - .withQueryParam("sort", WireMock.equalTo("id,DESC")) - .willReturn(WireMock.okJson(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON))); + shortcircuitServerStubs.verifyGetFaultTypes(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); + // get short circuit result with pagination + shortcircuitServerStubs.stubGetPagedFaultResults(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, + SHORT_CIRCUIT_ANALYSIS_RESULT_JSON, NETWORK_UUID_STRING, VARIANT_ID_2, "FULL", "0", "20", "id,DESC"); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result?paged=true&page=0&size=20&sort=id,DESC", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid)).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON)); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/fault_results/paged", Map.of( - "rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING), - "variantId", WireMock.equalTo(VARIANT_ID_2), - "mode", WireMock.equalTo("FULL"), - "page", WireMock.equalTo("0"), - "size", WireMock.equalTo("20"), - "sort", WireMock.equalTo("id,DESC") - )); + shortcircuitServerStubs.verifyGetPagedFaultResults(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, NETWORK_UUID_STRING, VARIANT_ID_2, + "FULL", "0", "20", "id,DESC"); // get short circuit result with pagination but with unknown node mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result?paged=true&page=0&size=20", studyNameUserIdUuid, firstRootNetworkUuid, unknownModificationNodeUuid)).andExpect( @@ -525,22 +461,13 @@ void testPagedShortCircuit() throws Exception { mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid)).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_STATUS_JSON)); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status", Map.of()); + computationServerStubs.verifyGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, 1); // stop short circuit analysis - wireMockServer.stubFor( - WireMock.put(WireMock.urlPathEqualTo("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop")).withPostServeAction(POST_ACTION_SEND_INPUT, - Parameters.from( - Map.of( - "payload", "", - "destination", shortCircuitAnalysisStoppedDestination, - "receiver", "%7B%22nodeUuid%22%3A%22" + modificationNode1Uuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + firstRootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" - ))).willReturn(ok()) - ); + shortcircuitServerStubs.stubShortCircuitStopWithPostAction(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, shortCircuitAnalysisStoppedDestination, modificationNode1Uuid, firstRootNetworkUuid); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/stop", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid) .header(HEADER_USER_ID, "userId")) .andExpect(status().isOk()); - checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_STATUS, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_RESULT); WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop", true, Map.of( "receiver", WireMock.matching(".*")), null); @@ -578,13 +505,7 @@ void testOneBusShortCircuit() throws Exception { .param(QUERY_PARAM_DEBUG, "true") .header("userId", "userId")) .andExpect(status().isOk()); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, - Map.of( - "receiver", WireMock.matching(".*"), - "reporterId", WireMock.matching(".*"), - "debug", WireMock.equalTo("true"), - "variantId", WireMock.equalTo(VARIANT_ID_2)), - null); + shortcircuitServerStubs.verifyShortcircuitRun(NETWORK_UUID_STRING, VARIANT_ID_2, true); consumeShortCircuitAnalysisOneBusResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, true); assertEquals(1, rootNetworkNodeInfoRepository.findAllByOneBusShortCircuitAnalysisResultUuidNotNull().size()); @@ -598,34 +519,17 @@ void testOneBusShortCircuit() throws Exception { ); WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, Map.of("mode", WireMock.equalTo("FULL"))); - // get short circuit result with pagination - wireMockServer.stubFor(WireMock.get(WireMock.urlPathMatching("/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/feeder_results/paged")) - .withQueryParam("rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING)) - .withQueryParam("variantId", WireMock.equalTo(VARIANT_ID_2)) - .withQueryParam("filters", WireMock.equalTo("fakeFilters")) - .withQueryParam("mode", WireMock.equalTo("FULL")) - .withQueryParam("page", WireMock.equalTo("0")) - .withQueryParam("size", WireMock.equalTo("20")) - .withQueryParam("sort", WireMock.equalTo("id,DESC")) - .willReturn(WireMock.okJson(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON))); + shortcircuitServerStubs.stubGetPagedFeederResults(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_RESULT_JSON, NETWORK_UUID_STRING, VARIANT_ID_2, "fakeFilters", "FULL", "0", "20", "id,DESC"); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/result?paged=true&page=0&size=20&sort=id,DESC&filters=fakeFilters", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", ShortcircuitAnalysisType.ONE_BUS.name()) ).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_RESULT_JSON)); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/feeder_results/paged", Map.of( - "rootNetworkUuid", WireMock.equalTo(NETWORK_UUID_STRING), - "variantId", WireMock.equalTo(VARIANT_ID_2), - "filters", WireMock.equalTo("fakeFilters"), - "mode", WireMock.equalTo("FULL"), - "page", WireMock.equalTo("0"), - "size", WireMock.equalTo("20"), - "sort", WireMock.equalTo("id,DESC") - )); + shortcircuitServerStubs.verifyGetPagedFeederResults(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, NETWORK_UUID_STRING, VARIANT_ID_2, "fakeFilters", "FULL", "0", "20", "id,DESC"); - computationServerStubs.stubGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); // get one bus short circuit status + computationServerStubs.stubGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, SHORT_CIRCUIT_ANALYSIS_STATUS_JSON); mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .param("type", ShortcircuitAnalysisType.ONE_BUS.name())) .andExpectAll( @@ -759,25 +663,21 @@ void testSetParamInvalidateShortCircuitStatus() throws Exception { .header("userId", "userId")) .andExpect(status().isOk()) .andReturn(); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, - Map.of( - "receiver", WireMock.matching(".*"), - "reporterId", WireMock.matching(".*"), - "variantId", WireMock.equalTo(VARIANT_ID_2)), - null); + computationServerStubs.verifyComputationRun(NETWORK_UUID_STRING, Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_2))); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, false); // update parameters invalidate the status - computationServerStubs.stubParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); - wireMockServer.stubFor(WireMock.post(WireMock.urlPathEqualTo("/v1/parameters/default")) - .willReturn(WireMock.ok().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).withBody(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)))).getId(); + computationServerStubs.stubGetParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); + computationServerStubs.stubPostParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - wireMockServer.stubFor(WireMock.put(WireMock.urlMatching("/v1/results/invalidate-status\\?resultUuid=.*")) - .willReturn(WireMock.ok())); + computationServerStubs.stubInvalidateStatus(); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/parameters/default", Map.of()); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PROFILE_USER_ID + "/profile", Map.of()); - WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/invalidate-status", Map.of("resultUuid", new RegexPattern(".*")), null); + computationServerStubs.verifyParametersDefault(); + userAdminServerStubs.verifyGetUserProfile(NO_PROFILE_USER_ID); + computationServerStubs.verifyInvalidateStatus(Map.of("resultUuid", new RegexPattern(".*"))); } @Test @@ -806,25 +706,21 @@ void testSetParamInvalidateOneBusShortCircuitStatus(final MockWebServer server) .header("userId", "userId")) .andExpect(status().isOk()) .andReturn(); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, - Map.of( - "receiver", WireMock.matching(".*"), - "reporterId", WireMock.matching(".*"), - "variantId", WireMock.equalTo(VARIANT_ID_2)), - null); + computationServerStubs.verifyComputationRun(NETWORK_UUID_STRING, Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_2))); consumeShortCircuitAnalysisOneBusResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, false); // update parameters invalidate the status - computationServerStubs.stubParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); - wireMockServer.stubFor(WireMock.post(WireMock.urlPathEqualTo("/v1/parameters/default")) - .willReturn(WireMock.ok().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).withBody(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)))).getId(); + computationServerStubs.stubGetParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)); + computationServerStubs.stubPostParametersDefault(objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - wireMockServer.stubFor(WireMock.put(WireMock.urlMatching("/v1/results/invalidate-status\\?resultUuid=.*")) - .willReturn(WireMock.ok())); + computationServerStubs.stubInvalidateStatus(); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/parameters/default", Map.of()); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PROFILE_USER_ID + "/profile", Map.of()); - WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/invalidate-status", Map.of("resultUuid", new RegexPattern(".*")), null); + computationServerStubs.verifyParametersDefault(); + userAdminServerStubs.verifyGetUserProfile(NO_PROFILE_USER_ID); + computationServerStubs.verifyInvalidateStatus(Map.of("resultUuid", new RegexPattern(".*"))); } private void createOrUpdateParametersAndDoChecks(UUID studyNameUserIdUuid, String parameters, String userId, HttpStatusCode status) throws Exception { @@ -858,10 +754,10 @@ void testResetShortCircuitAnalysisParametersUserHasNoProfile() throws Exception UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PROFILE_USER_ID + "/profile", Map.of()); - WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of(), null); + userAdminServerStubs.verifyGetUserProfile(NO_PROFILE_USER_ID); + computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -870,10 +766,10 @@ void testResetShortCircuitAnalysisParametersUserHasNoParamsInProfile(final MockW UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/users/" + NO_PARAMS_IN_PROFILE_USER_ID + "/profile", Map.of()); - WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of(), null); + userAdminServerStubs.verifyGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID); + computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -882,11 +778,11 @@ void testResetShortCircuitAnalysisParametersUserHasInvalidParamsInProfile(final UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_INVALID_PARAMS_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); computationServerStubs.stubParametersDuplicateFromNotFound(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", INVALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.NO_CONTENT); userAdminServerStubs.verifyGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID); - WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of(), null); + computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); } @@ -897,13 +793,11 @@ void testResetShortCircuitAnalysisParametersUserHasValidParamsInProfile(final Mo userAdminServerStubs.stubGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_VALID_PARAMS_JSON); computationServerStubs.stubParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(PROFILE_SHORT_CIRCUIT_ANALYSIS_DUPLICATED_PARAMETERS_UUID_STRING)); - wireMockServer.stubFor(WireMock.delete(WireMock.urlPathEqualTo("/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING)) - .willReturn(WireMock.ok()) - ); + computationServerStubs.stubDeleteParameters(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", VALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); userAdminServerStubs.verifyGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID); computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING); - WireMockUtilsCriteria.verifyDeleteRequest(wireMockServer, "/v1/parameters/"+ SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of()); + computationServerStubs.verifyDeleteParameters(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); } @Test diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java index c8fc7d0ff8..c7b6d5e181 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java @@ -697,7 +697,7 @@ void testSecurityAnalysisParameters() throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.randomUUID(), UUID.randomUUID(), null); UUID studyUuid = studyEntity.getId(); assertNotNull(studyUuid); - computationServerStubs.stubParametersDefault(SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON); + computationServerStubs.stubGetParametersDefault(SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON); wireMockServer.stubFor( post(urlEqualTo("/v1/parameters/default")) .willReturn( @@ -709,7 +709,7 @@ void testSecurityAnalysisParameters() throws Exception { ); computationServerStubs.stubParametersGet(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON); - computationServerStubs.stubParametersDefault(SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON); + computationServerStubs.stubGetParametersDefault(SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON); mockMvc.perform(get("/v1/studies/{studyUuid}/security-analysis/parameters", studyUuid)) .andExpect(status().isOk()) .andExpect(content().string(SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON)); @@ -720,7 +720,7 @@ void testSecurityAnalysisParameters() throws Exception { assertEquals(SECURITY_ANALYSIS_PARAMETERS_UUID, studyRepository.findById(studyUuid).orElseThrow().getSecurityAnalysisParametersUuid()); String mnBodyJson = objectWriter.writeValueAsString(SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, mnBodyJson); + computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, mnBodyJson); mockMvc.perform( post("/v1/studies/{studyUuid}/security-analysis/parameters", studyUuid) .header("userId", "userId") @@ -728,7 +728,7 @@ void testSecurityAnalysisParameters() throws Exception { .content(mnBodyJson) ).andExpect(status().isOk()); - computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); assertEquals(UPDATE_TYPE_SECURITY_ANALYSIS_STATUS, output.receive(TIMEOUT, studyUpdateDestination).getHeaders().get(NotificationService.HEADER_UPDATE_TYPE)); assertEquals(UPDATE_TYPE_COMPUTATION_PARAMETERS, output.receive(TIMEOUT, studyUpdateDestination).getHeaders().get(NotificationService.HEADER_UPDATE_TYPE)); @@ -782,9 +782,9 @@ void testResetSecurityAnalysisParametersUserHasNoProfile() throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_UUID, SECURITY_ANALYSIS_PARAMETERS_UUID); UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_PROFILE_NO_PARAMS_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); + computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -858,11 +858,11 @@ void testResetSecurityAnalysisParametersUserHasNoParamsInProfile() throws Except UUID studyUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_NO_PARAMS_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); + computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); createOrUpdateParametersAndDoChecks(studyUuid, "", NO_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); userAdminServerStubs.verifyGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID); - computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -871,13 +871,13 @@ void testResetSecurityAnalysisParametersUserHasInvalidParamsInProfile() throws E UUID studyUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_INVALID_PARAMS_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); + computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); computationServerStubs.stubParametersDuplicateFromNotFound(PROFILE_SECURITY_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); createOrUpdateParametersAndDoChecks(studyUuid, "", INVALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.NO_CONTENT); // --- Verify WireMock requests --- userAdminServerStubs.verifyGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID); - computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SECURITY_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); } @@ -891,7 +891,7 @@ void testResetSecurityAnalysisParametersUserHasValidParamsInProfile() throws Exc wireMockServer.stubFor(post(urlPathMatching("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save.*")) .willReturn(ok())); userAdminServerStubs.stubGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_VALID_PARAMS_JSON); - computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, objectWriter.writeValueAsString(SECURITY_ANALYSIS_PARAMETERS)); + computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, objectWriter.writeValueAsString(SECURITY_ANALYSIS_PARAMETERS)); computationServerStubs.stubParametersDuplicateFrom(PROFILE_SECURITY_ANALYSIS_VALID_PARAMETERS_UUID_STRING, DUPLICATED_PARAMS_JSON); wireMockServer.stubFor(post(urlPathMatching("/v1/results/invalidate-status.*")) .withQueryParam("resultUuid", matching(".*")) diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java index 92ea97ee10..530234097f 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java @@ -11,6 +11,7 @@ import com.github.tomakehurst.wiremock.client.WireMock; import com.github.tomakehurst.wiremock.matching.StringValuePattern; import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import java.util.Map; @@ -52,7 +53,7 @@ public UUID stubGetResultStatus(String resultUuid, String statusJson) { } public UUID stubGetResult(String resultUuid, String statusJson) { - return wireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/v1/results/" + resultUuid )).withQueryParam("mode", WireMock.equalTo("FULL")) + return wireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/v1/results/" + resultUuid)).withQueryParam("mode", WireMock.equalTo("FULL")) .willReturn(WireMock.ok() .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .withBody(statusJson))).getId(); @@ -94,16 +95,14 @@ public void verifyParametersDuplicateFrom(String duplicateFromUuid, int nbReques WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/parameters", Map.of("duplicateFrom", WireMock.equalTo(duplicateFromUuid)), nbRequests); } - public void stubParameterPut(WireMockServer wireMockServer, String paramUuid, String responseJson) { - wireMockServer.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) - .willReturn(WireMock.okJson(responseJson)) + public void stubParameterPut(String paramUuid, String responseJson) { + wireMock.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) + .willReturn(WireMock.okJson(responseJson)) ); } - public void verifyParameterPut(WireMockServer wireMockServer, String paramUuid) { - wireMockServer.verify( - putRequestedFor(urlEqualTo("/v1/parameters/" + paramUuid)) - ); + public void verifyParameterPut(String paramUuid) { + WireMockUtilsCriteria.verifyPutRequest(wireMock, "/v1/parameters/" + paramUuid, Map.of(), null); } public void stubParametersGet(String paramUuid, String responseBody) { @@ -131,7 +130,12 @@ public void verifyParameters(int nbRequests) { WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/parameters", Map.of(), nbRequests); } - public void stubParametersDefault(String statusJson) { + public void stubPostParametersDefault(String responseBody) { + wireMock.stubFor(WireMock.post(WireMock.urlPathEqualTo("/v1/parameters/default")) + .willReturn(WireMock.ok().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).withBody(responseBody))).getId(); + } + + public void stubGetParametersDefault(String statusJson) { wireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/v1/parameters/default")) .willReturn(WireMock.ok() .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) @@ -142,6 +146,20 @@ public void verifyParametersDefault(int nbRequests) { WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/parameters/default", Map.of(), nbRequests); } + public void stubDeleteParameters(String parametersUuid) { + wireMock.stubFor(WireMock.delete(WireMock.urlPathEqualTo("/v1/parameters/" + parametersUuid)) + .willReturn(WireMock.ok())); + } + + public void verifyDeleteParameters(String parametersUuid) { + WireMockUtilsCriteria.verifyDeleteRequest(wireMock, + "/v1/parameters/" + parametersUuid, Map.of()); + } + + public void verifyParametersDefault() { + WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/parameters/default", Map.of()); + } + /* Results */ public UUID stubDeleteResult(String resultUuid) { @@ -171,4 +189,37 @@ public void stubResultsCount(int count) { public void verifyResultsCountGet() { WireMockUtilsCriteria.verifyGetRequest(wireMock, "/v1/supervision/results-count", Map.of()); } + + public void stubGetResultCsv(String resultUuid, byte[] csvContent) { + wireMock.stubFor(WireMock.post(urlPathEqualTo("/v1/results/" + resultUuid + "/csv")) + .willReturn(aResponse() + .withStatus(200) + .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .withBody(csvContent))); + } + + public void stubGetResultCsvNotFound(String resultUuid) { + wireMock.stubFor(WireMock.post(urlPathEqualTo("/v1/results/" + resultUuid + "/csv")) + .willReturn(aResponse() + .withStatus(HttpStatus.NOT_FOUND.value()) + .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + )); + } + + public void verifyGetResultCsv(String resultUuid) { + WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/results/" + resultUuid + "/csv", Map.of()); + } + + /* Status */ + + public void stubInvalidateStatus() { + wireMock.stubFor(WireMock.put(WireMock.urlMatching("/v1/results/invalidate-status\\?resultUuid=.*")) + .willReturn(ok())); + } + + public void verifyInvalidateStatus(Map queryParams) { + WireMockUtilsCriteria.verifyPutRequest(wireMock, "/v1/results/invalidate-status", + true, queryParams, null); + } + } diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java index 20d81ebb2e..d362e8a8dc 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java @@ -8,11 +8,13 @@ import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; -import org.gridsuite.study.server.utils.TestUtils; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; +import com.github.tomakehurst.wiremock.extension.Parameters; -import java.io.IOException; +import java.util.Map; +import java.util.UUID; + +import static com.github.tomakehurst.wiremock.client.WireMock.ok; +import static org.gridsuite.study.server.utils.SendInput.POST_ACTION_SEND_INPUT; /** * @author Hugo Marcellin @@ -24,9 +26,98 @@ public ShortcircuitServerStubs(WireMockServer wireMock) { this.wireMock = wireMock; } - public void stubGetShortcircuitParameters(String parametersUuid) throws IOException { - wireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/v1/parameters/" + parametersUuid + "/provider")) - .willReturn(WireMock.ok().withBody(TestUtils.resourceToString("/short-circuit-parameters.json")).withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)) + public void stubShortCircuitRunWithPostAction(String networkUuid, String variantId, String resultUuid, + String destination, UUID modificationUuid, UUID rootNetworkUuid) { + wireMock.stubFor( + WireMock.post(WireMock.urlPathMatching("/v1/networks/" + networkUuid + "/run-and-save")) + .withQueryParam("receiver", WireMock.matching(".*")) + .withQueryParam("reportUuid", WireMock.matching(".*")) + .withQueryParam("reporterId", WireMock.matching(".*")) + .withQueryParam("variantId", WireMock.equalTo(variantId)) + .withPostServeAction(POST_ACTION_SEND_INPUT, + Parameters.from( + Map.of( + "payload", "", + "destination", destination, + "receiver", "%7B%22nodeUuid%22%3A%22" + modificationUuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + rootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" + )) + ).willReturn(WireMock.okJson("\"" + resultUuid + "\""))); + } + + public void stubShortCircuitStopWithPostAction(String resultUuid, String destination, UUID modificationNodeUuid, UUID rootNetworkUuid) { + wireMock.stubFor( + WireMock.put(WireMock.urlPathEqualTo("/v1/results/" + resultUuid + "/stop")).withPostServeAction(POST_ACTION_SEND_INPUT, + Parameters.from( + Map.of( + "payload", "", + "destination", destination, + "receiver", "%7B%22nodeUuid%22%3A%22" + modificationNodeUuid + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + rootNetworkUuid + "%22%2C%20%22userId%22%3A%22userId%22%7D" + ))).willReturn(ok()) ); } + + public void stubGetFaultTypes(String resultUuid) { + wireMock.stubFor(WireMock.get("/v1/results/" + resultUuid + "/fault-types") + .willReturn(ok())); + } + + public void verifyGetFaultTypes(String resultUuid) { + WireMockUtilsCriteria.verifyGetRequest(wireMock, "/v1/results/" + resultUuid + "/fault-types", Map.of()); + } + + public void stubGetPagedFaultResults(String resultUuid, String result, String rootNetworkUuid, String variantId, String mode, String page, String size, String sort) { + wireMock.stubFor(WireMock.get(WireMock.urlPathMatching("/v1/results/" + resultUuid + "/fault_results/paged")) + .withQueryParam("rootNetworkUuid", WireMock.equalTo(rootNetworkUuid)) + .withQueryParam("variantId", WireMock.equalTo(variantId)) + .withQueryParam("mode", WireMock.equalTo(mode)) + .withQueryParam("page", WireMock.equalTo(page)) + .withQueryParam("size", WireMock.equalTo(size)) + .withQueryParam("sort", WireMock.equalTo(sort)) + .willReturn(WireMock.okJson(result))); + } + + public void verifyGetPagedFaultResults(String resultUuid, String rootNetworkUuid, String variantId, String mode, String page, String size, String sort) { + WireMockUtilsCriteria.verifyGetRequest(wireMock, "/v1/results/" + resultUuid + "/fault_results/paged", Map.of( + "rootNetworkUuid", WireMock.equalTo(rootNetworkUuid), + "variantId", WireMock.equalTo(variantId), + "mode", WireMock.equalTo(mode), + "page", WireMock.equalTo(page), + "size", WireMock.equalTo(size), + "sort", WireMock.equalTo(sort) + )); + } + + public void stubGetPagedFeederResults(String resultUuid, String result, String rootNetworkUuid, String variantId, String filters, String mode, String page, String size, String sort) { + wireMock.stubFor(WireMock.get(WireMock.urlPathMatching("/v1/results/" + resultUuid + "/feeder_results/paged")) + .withQueryParam("rootNetworkUuid", WireMock.equalTo(rootNetworkUuid)) + .withQueryParam("variantId", WireMock.equalTo(variantId)) + .withQueryParam("filters", WireMock.equalTo(filters)) + .withQueryParam("mode", WireMock.equalTo(mode)) + .withQueryParam("page", WireMock.equalTo(page)) + .withQueryParam("size", WireMock.equalTo(size)) + .withQueryParam("sort", WireMock.equalTo(sort)) + .willReturn(WireMock.okJson(result))); + } + + public void verifyGetPagedFeederResults(String resultUuid, String rootNetworkUuid, String variantId, String filters, String mode, String page, String size, String sort) { + WireMockUtilsCriteria.verifyGetRequest(wireMock, "/v1/results/" + resultUuid + "/feeder_results/paged", Map.of( + "rootNetworkUuid", WireMock.equalTo(rootNetworkUuid), + "variantId", WireMock.equalTo(variantId), + "filters", WireMock.equalTo(filters), + "mode", WireMock.equalTo(mode), + "page", WireMock.equalTo(page), + "size", WireMock.equalTo(size), + "sort", WireMock.equalTo(sort) + )); + } + + public void verifyShortcircuitRun(String networkUuid, String variantId, boolean debug) { + WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/networks/" + networkUuid + "/run-and-save", true, + Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(variantId), + "debug", WireMock.equalTo(String.valueOf(debug))), + null); + } } From 763ab68005458be5460b2e35c0be8c7aac6d98e3 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 11:50:16 +0100 Subject: [PATCH 03/14] Checkstyle --- .../study/server/utils/wiremock/ShortcircuitServerStubs.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java index d338ab29e8..31cbd38f7e 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java @@ -78,7 +78,7 @@ public void stubGetPagedFaultResults(String resultUuid, String result, String ne public void verifyGetPagedFaultResults(String resultUuid, String networkUuid, String variantId, String mode, String page, String size, String sort) { WireMockUtilsCriteria.verifyGetRequest(wireMock, "/v1/results/" + resultUuid + "/fault_results/paged", Map.of( - "networkUuid" , WireMock.equalTo(networkUuid), + "networkUuid", WireMock.equalTo(networkUuid), "variantId", WireMock.equalTo(variantId), "mode", WireMock.equalTo(mode), "page", WireMock.equalTo(page), From cd292a89555b99bd58b53e41f43fd92e1b269dd1 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 11:51:56 +0100 Subject: [PATCH 04/14] Remove debug var --- src/test/java/org/gridsuite/study/server/utils/TestUtils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java index 0139ebdc54..7bcbe46007 100644 --- a/src/test/java/org/gridsuite/study/server/utils/TestUtils.java +++ b/src/test/java/org/gridsuite/study/server/utils/TestUtils.java @@ -232,7 +232,6 @@ public static void assertWiremockServerRequestsEmptyThenShutdown(WireMockServer public static void assertWiremockServerRequestsEmptyThenClear(WireMockServer wireMockServer) throws UncheckedInterruptedException { try { wireMockServer.checkForUnmatchedRequests(); - var test = wireMockServer.findAll(WireMock.anyRequestedFor(WireMock.anyUrl())); assertEquals(0, wireMockServer.findAll(WireMock.anyRequestedFor(WireMock.anyUrl())).size()); } finally { wireMockServer.resetAll(); From 4c2f4dcebfe8242721a4bc4250930af1aeee62fa Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 12:26:36 +0100 Subject: [PATCH 05/14] Fix sa tests --- .../study/server/ShortCircuitTest.java | 14 +++++++------- .../rootnetworks/SecurityAnalysisTest.java | 18 +++++++++--------- .../utils/wiremock/ComputationServerStubs.java | 13 +++++++------ .../wiremock/ShortcircuitServerStubs.java | 10 ++++++++++ 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index e767741d16..d62819bf3e 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -218,7 +218,7 @@ void testShortCircuitAnalysisParameters() throws Exception { WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/parameters/default", Map.of()); WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/parameters/" + SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, Map.of()); - computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(wireMockServer, SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); mockMvc.perform(post("/v1/studies/{studyUuid}/short-circuit-analysis/parameters", studyNameUserIdUuid) .header(HEADER_USER_ID, "testUserId") .content("{\"dumb\": \"json\"}").contentType(MediaType.APPLICATION_JSON)) @@ -754,10 +754,10 @@ void testResetShortCircuitAnalysisParametersUserHasNoProfile() throws Exception UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + shortcircuitServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); userAdminServerStubs.verifyGetUserProfile(NO_PROFILE_USER_ID); - computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); + shortcircuitServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -766,10 +766,10 @@ void testResetShortCircuitAnalysisParametersUserHasNoParamsInProfile(final MockW UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + shortcircuitServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); userAdminServerStubs.verifyGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID); - computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); + shortcircuitServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -778,11 +778,11 @@ void testResetShortCircuitAnalysisParametersUserHasInvalidParamsInProfile(final UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_INVALID_PARAMS_JSON); - computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + shortcircuitServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); computationServerStubs.stubParametersDuplicateFromNotFound(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", INVALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.NO_CONTENT); userAdminServerStubs.verifyGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID); - computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); + shortcircuitServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); } diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java index c7b6d5e181..754b7f55c3 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/SecurityAnalysisTest.java @@ -720,7 +720,7 @@ void testSecurityAnalysisParameters() throws Exception { assertEquals(SECURITY_ANALYSIS_PARAMETERS_UUID, studyRepository.findById(studyUuid).orElseThrow().getSecurityAnalysisParametersUuid()); String mnBodyJson = objectWriter.writeValueAsString(SECURITY_ANALYSIS_DEFAULT_PARAMETERS_JSON); - computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, mnBodyJson); + computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, mnBodyJson); mockMvc.perform( post("/v1/studies/{studyUuid}/security-analysis/parameters", studyUuid) .header("userId", "userId") @@ -728,7 +728,7 @@ void testSecurityAnalysisParameters() throws Exception { .content(mnBodyJson) ).andExpect(status().isOk()); - computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); assertEquals(UPDATE_TYPE_SECURITY_ANALYSIS_STATUS, output.receive(TIMEOUT, studyUpdateDestination).getHeaders().get(NotificationService.HEADER_UPDATE_TYPE)); assertEquals(UPDATE_TYPE_COMPUTATION_PARAMETERS, output.receive(TIMEOUT, studyUpdateDestination).getHeaders().get(NotificationService.HEADER_UPDATE_TYPE)); @@ -782,9 +782,9 @@ void testResetSecurityAnalysisParametersUserHasNoProfile() throws Exception { StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_UUID, SECURITY_ANALYSIS_PARAMETERS_UUID); UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_PROFILE_NO_PARAMS_JSON); - computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); + computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -858,11 +858,11 @@ void testResetSecurityAnalysisParametersUserHasNoParamsInProfile() throws Except UUID studyUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_NO_PARAMS_JSON); - computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); + computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); createOrUpdateParametersAndDoChecks(studyUuid, "", NO_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); userAdminServerStubs.verifyGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID); - computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -871,13 +871,13 @@ void testResetSecurityAnalysisParametersUserHasInvalidParamsInProfile() throws E UUID studyUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_INVALID_PARAMS_JSON); - computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); + computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, SECURITY_ANALYSIS_PROFILE_PARAMETERS_JSON); computationServerStubs.stubParametersDuplicateFromNotFound(PROFILE_SECURITY_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); createOrUpdateParametersAndDoChecks(studyUuid, "", INVALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.NO_CONTENT); // --- Verify WireMock requests --- userAdminServerStubs.verifyGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID); - computationServerStubs.verifyParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING); computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SECURITY_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); } @@ -891,7 +891,7 @@ void testResetSecurityAnalysisParametersUserHasValidParamsInProfile() throws Exc wireMockServer.stubFor(post(urlPathMatching("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save.*")) .willReturn(ok())); userAdminServerStubs.stubGetUserProfile(VALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_VALID_PARAMS_JSON); - computationServerStubs.stubParameterPut(SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, objectWriter.writeValueAsString(SECURITY_ANALYSIS_PARAMETERS)); + computationServerStubs.stubParameterPut(wireMockServer, SECURITY_ANALYSIS_PARAMETERS_UUID_STRING, objectWriter.writeValueAsString(SECURITY_ANALYSIS_PARAMETERS)); computationServerStubs.stubParametersDuplicateFrom(PROFILE_SECURITY_ANALYSIS_VALID_PARAMETERS_UUID_STRING, DUPLICATED_PARAMS_JSON); wireMockServer.stubFor(post(urlPathMatching("/v1/results/invalidate-status.*")) .withQueryParam("resultUuid", matching(".*")) diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java index 530234097f..09f7205bc1 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java @@ -95,14 +95,15 @@ public void verifyParametersDuplicateFrom(String duplicateFromUuid, int nbReques WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/parameters", Map.of("duplicateFrom", WireMock.equalTo(duplicateFromUuid)), nbRequests); } - public void stubParameterPut(String paramUuid, String responseJson) { - wireMock.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) - .willReturn(WireMock.okJson(responseJson)) - ); + public void stubParameterPut(WireMockServer wireMockServer, String paramUuid, String responseJson) { + wireMockServer.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) + .willReturn(WireMock.okJson(responseJson))); } - public void verifyParameterPut(String paramUuid) { - WireMockUtilsCriteria.verifyPutRequest(wireMock, "/v1/parameters/" + paramUuid, Map.of(), null); + public void verifyParameterPut(WireMockServer wireMockServer, String paramUuid) { + wireMockServer.verify( + putRequestedFor(urlEqualTo("/v1/parameters/" + paramUuid)) + ); } public void stubParametersGet(String paramUuid, String responseBody) { diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java index 31cbd38f7e..ad0269da6f 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java @@ -120,4 +120,14 @@ public void verifyShortcircuitRun(String networkUuid, String variantId, boolean "debug", WireMock.equalTo(String.valueOf(debug))), null); } + + public void stubParameterPut(String paramUuid, String responseJson) { + wireMock.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) + .willReturn(WireMock.okJson(responseJson)) + ); + } + + public void verifyParameterPut(String paramUuid) { + WireMockUtilsCriteria.verifyPutRequest(wireMock, "/v1/parameters/" + paramUuid, Map.of(), null); + } } From dfe3af849e9c059ce714114b6338033a4c6a3373 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 12:50:24 +0100 Subject: [PATCH 06/14] Use mutualized functions --- .../study/server/ShortCircuitTest.java | 26 +++++++++---------- .../wiremock/ComputationServerStubs.java | 2 +- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index d62819bf3e..54f6881b9e 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -288,15 +288,16 @@ void testAllBusesShortCircuit() throws Exception { mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/status", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)).andExpectAll( status().isOk(), content().string(SHORT_CIRCUIT_ANALYSIS_STATUS_JSON)); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/status", Map.of()); + computationServerStubs.verifyGetResultStatus(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); // stop short circuit analysis shortcircuitServerStubs.stubShortCircuitStopWithPostAction(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, shortCircuitAnalysisStoppedDestination, modificationNode3Uuid, firstRootNetworkUuid); mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/stop", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .header(HEADER_USER_ID, "userId")) .andExpect(status().isOk()); - WireMockUtilsCriteria.verifyPutRequest(wireMockServer, "/v1/results/" + SHORT_CIRCUIT_ANALYSIS_RESULT_UUID + "/stop", true, Map.of( - "receiver", WireMock.matching(".*")), null); + computationServerStubs.verifyComputationStop(SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, Map.of( + "receiver", WireMock.matching(".*") + )); checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_STATUS, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_RESULT); // short circuit analysis failed @@ -306,12 +307,11 @@ void testAllBusesShortCircuit() throws Exception { .andExpect(status().isOk()).andReturn(); checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_STATUS); checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, NotificationService.UPDATE_TYPE_SHORT_CIRCUIT_FAILED); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save", true, + computationServerStubs.verifyComputationRun(NETWORK_UUID_STRING, Map.of( "receiver", WireMock.matching(".*"), "reporterId", WireMock.matching(".*"), - "variantId", WireMock.equalTo(VARIANT_ID)), - null); + "variantId", WireMock.equalTo(VARIANT_ID))); // Test result count // In short-circuit server there is no distinction between 1-bus and all-buses, so the count will return all kinds of short-circuit @@ -320,7 +320,7 @@ void testAllBusesShortCircuit() throws Exception { .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) .queryParam("dryRun", "true")) .andExpect(status().isOk()); - WireMockUtilsCriteria.verifyGetRequest(wireMockServer, "/v1/supervision/results-count", Map.of()); + computationServerStubs.verifyResultsCountGet(); // Delete Shortcircuit results // In short-circuit server there is no distinction between 1-bus and all-buses, so we remove all kinds of short-circuit @@ -331,7 +331,7 @@ void testAllBusesShortCircuit() throws Exception { .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) .queryParam("dryRun", "false")) .andExpect(status().isOk()); - WireMockUtilsCriteria.verifyDeleteRequest(wireMockServer, "/v1/results", Map.of("resultsUuids", matching(".*"))); + computationServerStubs.verifyDeleteResult(".*"); reportServerStubs.verifyDeleteReport(); assertEquals(0, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); } @@ -363,12 +363,10 @@ void testGetShortCircuitAnalysisCsvResultNotFound() throws Exception { mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid) .header("userId", "userId")) .andExpect(status().isOk()); - WireMockUtilsCriteria.verifyPostRequest(wireMockServer, "/v1/networks/" + NETWORK_UUID_STRING_NOT_FOUND + "/run-and-save", true, - Map.of( - "receiver", WireMock.matching(".*"), - "reporterId", WireMock.matching(".*"), - "variantId", WireMock.equalTo(VARIANT_ID_4)), - null); + computationServerStubs.verifyComputationRun(NETWORK_UUID_STRING_NOT_FOUND, Map.of( + "receiver", WireMock.matching(".*"), + "reporterId", WireMock.matching(".*"), + "variantId", WireMock.equalTo(VARIANT_ID_4))); consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID_NOT_FOUND, false); // export short circuit analysis csv result not found diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java index 09f7205bc1..847588faaa 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java @@ -170,7 +170,7 @@ public UUID stubDeleteResult(String resultUuid) { } public void verifyDeleteResult(String resultUuid) { - WireMockUtilsCriteria.verifyDeleteRequest(wireMock, "/v1/results", false, Map.of("resultsUuids", WireMock.equalTo(resultUuid))); + WireMockUtilsCriteria.verifyDeleteRequest(wireMock, "/v1/results", false, Map.of("resultsUuids", WireMock.matching(resultUuid))); } public void stubDeleteResults(String path) { From da6d553ed113fc9305c20ca052941fc39ea9d55b Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 12:58:51 +0100 Subject: [PATCH 07/14] Fix test --- src/test/java/org/gridsuite/study/server/ShortCircuitTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index 54f6881b9e..915641cae0 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -324,7 +324,6 @@ void testAllBusesShortCircuit() throws Exception { // Delete Shortcircuit results // In short-circuit server there is no distinction between 1-bus and all-buses, so we remove all kinds of short-circuit - assertEquals(1, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); computationServerStubs.stubDeleteResults("/v1/results"); reportServerStubs.stubDeleteReport(); mockMvc.perform(delete("/v1/supervision/computation/results") From 3bfc8a0b088a015c397703084d99f94ad1796cfe Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 13:12:17 +0100 Subject: [PATCH 08/14] Fix test --- .../java/org/gridsuite/study/server/ShortCircuitTest.java | 6 +++--- .../study/server/utils/wiremock/ComputationServerStubs.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index 915641cae0..138d4152b1 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -323,16 +323,16 @@ void testAllBusesShortCircuit() throws Exception { computationServerStubs.verifyResultsCountGet(); // Delete Shortcircuit results - // In short-circuit server there is no distinction between 1-bus and all-buses, so we remove all kinds of short-circuit + assertEquals(1, rootNetworkNodeInfoRepository.findAll().stream().filter(rootNetworkNodeInfoEntity -> rootNetworkNodeInfoEntity.getShortCircuitAnalysisResultUuid() != null).count()); computationServerStubs.stubDeleteResults("/v1/results"); reportServerStubs.stubDeleteReport(); mockMvc.perform(delete("/v1/supervision/computation/results") .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) .queryParam("dryRun", "false")) .andExpect(status().isOk()); - computationServerStubs.verifyDeleteResult(".*"); + WireMockUtilsCriteria.verifyDeleteRequest(wireMockServer, "/v1/results", Map.of("resultsUuids", matching(".*"))); reportServerStubs.verifyDeleteReport(); - assertEquals(0, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); + assertEquals(0, rootNetworkNodeInfoRepository.findAll().stream().filter(rootNetworkNodeInfoEntity -> rootNetworkNodeInfoEntity.getShortCircuitAnalysisResultUuid() != null).count()); } @Test diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java index 847588faaa..09f7205bc1 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java @@ -170,7 +170,7 @@ public UUID stubDeleteResult(String resultUuid) { } public void verifyDeleteResult(String resultUuid) { - WireMockUtilsCriteria.verifyDeleteRequest(wireMock, "/v1/results", false, Map.of("resultsUuids", WireMock.matching(resultUuid))); + WireMockUtilsCriteria.verifyDeleteRequest(wireMock, "/v1/results", false, Map.of("resultsUuids", WireMock.equalTo(resultUuid))); } public void stubDeleteResults(String path) { From 9c426c3a5b5a742d338d86cbbd7173c16c266d3a Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 13:23:10 +0100 Subject: [PATCH 09/14] test --- .../org/gridsuite/study/server/ShortCircuitTest.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index 138d4152b1..f49a61ff9c 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -32,10 +32,7 @@ import org.gridsuite.study.server.utils.elasticsearch.DisableElasticsearch; import org.gridsuite.study.server.utils.wiremock.*; import org.json.JSONObject; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.*; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mockito; import org.slf4j.Logger; @@ -62,10 +59,7 @@ import static org.gridsuite.study.server.StudyConstants.QUERY_PARAM_DEBUG; import static org.gridsuite.study.server.notification.NotificationService.HEADER_UPDATE_TYPE; import static org.gridsuite.study.server.utils.TestUtils.USER_DEFAULT_PROFILE_JSON; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doAnswer; @@ -323,7 +317,7 @@ void testAllBusesShortCircuit() throws Exception { computationServerStubs.verifyResultsCountGet(); // Delete Shortcircuit results - assertEquals(1, rootNetworkNodeInfoRepository.findAll().stream().filter(rootNetworkNodeInfoEntity -> rootNetworkNodeInfoEntity.getShortCircuitAnalysisResultUuid() != null).count()); + assertNotEquals(0, rootNetworkNodeInfoRepository.findAll().stream().filter(rootNetworkNodeInfoEntity -> rootNetworkNodeInfoEntity.getShortCircuitAnalysisResultUuid() != null).count()); computationServerStubs.stubDeleteResults("/v1/results"); reportServerStubs.stubDeleteReport(); mockMvc.perform(delete("/v1/supervision/computation/results") From 010817e4dfbc6e5ce0182bed2e15ea8165724890 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 13:30:21 +0100 Subject: [PATCH 10/14] Break up tests --- .../study/server/ShortCircuitTest.java | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index f49a61ff9c..52a7821072 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -306,29 +306,51 @@ void testAllBusesShortCircuit() throws Exception { "receiver", WireMock.matching(".*"), "reporterId", WireMock.matching(".*"), "variantId", WireMock.equalTo(VARIANT_ID))); + } + + @Test + void testDeleteShortcircuitResult() throws Exception { + //insert a study + StudyEntity studyEntity = insertDummyStudy(UUID.fromString(NETWORK_UUID_STRING), CASE_SHORT_CIRCUIT_UUID, null); + UUID studyNameUserIdUuid = studyEntity.getId(); + UUID firstRootNetworkUuid = studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid); + UUID rootNodeUuid = getRootNode(studyNameUserIdUuid).getId(); + NetworkModificationNode modificationNode1 = createNetworkModificationNode(studyNameUserIdUuid, rootNodeUuid, + UUID.randomUUID(), VARIANT_ID, "node 1"); + UUID modificationNode1Uuid = modificationNode1.getId(); + + //run in debug mode an all-buses short circuit analysis + computationServerStubs.stubComputationRun(NETWORK_UUID_STRING, VARIANT_ID, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID); + mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/shortcircuit/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid) + .param(QUERY_PARAM_DEBUG, "true") + .header("userId", "userId")) + .andExpect(status().isOk()); + shortcircuitServerStubs.verifyShortcircuitRun(NETWORK_UUID_STRING, VARIANT_ID, true); + consumeShortCircuitAnalysisResult(studyNameUserIdUuid, firstRootNetworkUuid, modificationNode1Uuid, SHORT_CIRCUIT_ANALYSIS_RESULT_UUID, true); // Test result count // In short-circuit server there is no distinction between 1-bus and all-buses, so the count will return all kinds of short-circuit computationServerStubs.stubResultsCount(1); mockMvc.perform(delete("/v1/supervision/computation/results") - .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) - .queryParam("dryRun", "true")) + .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) + .queryParam("dryRun", "true")) .andExpect(status().isOk()); computationServerStubs.verifyResultsCountGet(); // Delete Shortcircuit results - assertNotEquals(0, rootNetworkNodeInfoRepository.findAll().stream().filter(rootNetworkNodeInfoEntity -> rootNetworkNodeInfoEntity.getShortCircuitAnalysisResultUuid() != null).count()); + assertEquals(1, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); computationServerStubs.stubDeleteResults("/v1/results"); reportServerStubs.stubDeleteReport(); mockMvc.perform(delete("/v1/supervision/computation/results") - .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) - .queryParam("dryRun", "false")) - .andExpect(status().isOk()); + .queryParam("type", ComputationType.SHORT_CIRCUIT.toString()) + .queryParam("dryRun", "false")) + .andExpect(status().isOk()); WireMockUtilsCriteria.verifyDeleteRequest(wireMockServer, "/v1/results", Map.of("resultsUuids", matching(".*"))); reportServerStubs.verifyDeleteReport(); - assertEquals(0, rootNetworkNodeInfoRepository.findAll().stream().filter(rootNetworkNodeInfoEntity -> rootNetworkNodeInfoEntity.getShortCircuitAnalysisResultUuid() != null).count()); + assertEquals(0, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); } + @Test void testGetShortCircuitAnalysisCsvResultNotFound() throws Exception { //insert a study From 500851dd8fb046f37cccfe64b7bbd05fe34b39f7 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 13:33:31 +0100 Subject: [PATCH 11/14] Checkstyle --- src/test/java/org/gridsuite/study/server/ShortCircuitTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index 52a7821072..770ee6801e 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -350,7 +350,6 @@ void testDeleteShortcircuitResult() throws Exception { assertEquals(0, rootNetworkNodeInfoRepository.findAllByShortCircuitAnalysisResultUuidNotNull().size()); } - @Test void testGetShortCircuitAnalysisCsvResultNotFound() throws Exception { //insert a study From 0dcb507a746906efe943129df66b80871f892666 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 3 Feb 2026 13:42:14 +0100 Subject: [PATCH 12/14] Sonar issues --- .../java/org/gridsuite/study/server/ShortCircuitTest.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index 770ee6801e..109a6e94a4 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -95,8 +95,6 @@ class ShortCircuitTest implements WithAssertions { private static final String SHORT_CIRCUIT_ANALYSIS_ERROR_RESULT_UUID = "25222222-9994-4e55-8ec7-07ea965d24eb"; - private static final String SHORT_CIRCUIT_ANALYSIS_OTHER_NODE_RESULT_UUID = "11131111-8594-4e55-8ef7-07ea965d24eb"; - private static final String SHORT_CIRCUIT_ANALYSIS_RESULT_JSON = "{\"version\":\"1.0\",\"faults\":[]}"; private static final String CSV_HEADERS = "{csvHeaders}"; @@ -105,7 +103,6 @@ class ShortCircuitTest implements WithAssertions { private static final String SHORT_CIRCUIT_ANALYSIS_STATUS_JSON = "{\"status\":\"COMPLETED\"}"; - private static final String SHORT_CIRCUIT_ANALYSIS_PROFILE_PARAMETERS_JSON = "{\"withLimitViolations\":\"true\",\"withFortescueResult\":\"false\",\"withFeederResult\":\"true\"}"; private static final String SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING = "0c0f1efd-bd22-4a75-83d3-9e530245c7f4"; private static final UUID SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID = UUID.fromString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); private static final String NO_PROFILE_USER_ID = "noProfileUser"; @@ -115,14 +112,11 @@ class ShortCircuitTest implements WithAssertions { private static final String VALID_PARAMS_IN_PROFILE_USER_ID = "validParamInProfileUser"; private static final String PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING = "1cec4a7b-ab7e-4d78-9dd7-ce73c5ef11d9"; private static final String PROFILE_SHORT_CIRCUIT_ANALYSIS_DUPLICATED_PARAMETERS_UUID_STRING = "a4ce25e1-59a7-401d-abb1-04425fe24587"; - private static final String USER_PROFILE_NO_PARAMS_JSON = "{\"id\":\"97bb1890-a90c-43c3-a004-e631246d42d6\",\"name\":\"Profile No params\"}"; private static final String USER_PROFILE_VALID_PARAMS_JSON = "{\"id\":\"97bb1890-a90c-43c3-a004-e631246d42d6\",\"name\":\"Profile with valid params\",\"shortcircuitParameterId\":\"" + PROFILE_SHORT_CIRCUIT_ANALYSIS_VALID_PARAMETERS_UUID_STRING + "\",\"allParametersLinksValid\":true}"; private static final String USER_PROFILE_INVALID_PARAMS_JSON = "{\"id\":\"97bb1890-a90c-43c3-a004-e631246d42d6\",\"name\":\"Profile with broken params\",\"shortcircuitParameterId\":\"" + PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING + "\",\"allParametersLinksValid\":false}"; - private static final String DUPLICATED_PARAMS_JSON = "\"" + PROFILE_SHORT_CIRCUIT_ANALYSIS_DUPLICATED_PARAMETERS_UUID_STRING + "\""; private static final String VARIANT_ID = "variant_1"; private static final String VARIANT_ID_2 = "variant_2"; - private static final String VARIANT_ID_3 = "variant_3"; private static final String VARIANT_ID_4 = "variant_4"; private static final long TIMEOUT = 1000; @@ -166,7 +160,6 @@ class ShortCircuitTest implements WithAssertions { //output destinations private final String studyUpdateDestination = "study.update"; private final String elementUpdateDestination = "element.update"; - private final String shortCircuitAnalysisDebugDestination = "shortcircuitanalysis.debug"; private final String shortCircuitAnalysisResultDestination = "shortcircuitanalysis.result"; private final String shortCircuitAnalysisStoppedDestination = "shortcircuitanalysis.stopped"; private final String shortCircuitAnalysisFailedDestination = "shortcircuitanalysis.run.dlx"; From 62844e5060337f41a9ac17ff111fcc954bc6bb52 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 10 Feb 2026 15:56:05 +0100 Subject: [PATCH 13/14] PR suggestions --- .../study/server/ShortCircuitTest.java | 16 ++++++------- .../wiremock/ComputationServerStubs.java | 24 ++++++++++++++----- .../wiremock/ShortcircuitServerStubs.java | 10 -------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java index 109a6e94a4..a7802e0b4f 100644 --- a/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java +++ b/src/test/java/org/gridsuite/study/server/ShortCircuitTest.java @@ -680,7 +680,7 @@ void testSetParamInvalidateShortCircuitStatus() throws Exception { userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); computationServerStubs.stubInvalidateStatus(); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - computationServerStubs.verifyParametersDefault(); + computationServerStubs.verifyParametersDefault(1); userAdminServerStubs.verifyGetUserProfile(NO_PROFILE_USER_ID); computationServerStubs.verifyInvalidateStatus(Map.of("resultUuid", new RegexPattern(".*"))); } @@ -723,7 +723,7 @@ void testSetParamInvalidateOneBusShortCircuitStatus(final MockWebServer server) userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); computationServerStubs.stubInvalidateStatus(); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); - computationServerStubs.verifyParametersDefault(); + computationServerStubs.verifyParametersDefault(1); userAdminServerStubs.verifyGetUserProfile(NO_PROFILE_USER_ID); computationServerStubs.verifyInvalidateStatus(Map.of("resultUuid", new RegexPattern(".*"))); } @@ -759,10 +759,10 @@ void testResetShortCircuitAnalysisParametersUserHasNoProfile() throws Exception UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - shortcircuitServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PROFILE_USER_ID, HttpStatus.OK); userAdminServerStubs.verifyGetUserProfile(NO_PROFILE_USER_ID); - shortcircuitServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -771,10 +771,10 @@ void testResetShortCircuitAnalysisParametersUserHasNoParamsInProfile(final MockW UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID, USER_DEFAULT_PROFILE_JSON); - shortcircuitServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", NO_PARAMS_IN_PROFILE_USER_ID, HttpStatus.OK); userAdminServerStubs.verifyGetUserProfile(NO_PARAMS_IN_PROFILE_USER_ID); - shortcircuitServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); } @Test @@ -783,11 +783,11 @@ void testResetShortCircuitAnalysisParametersUserHasInvalidParamsInProfile(final UUID studyNameUserIdUuid = studyEntity.getId(); userAdminServerStubs.stubGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID, USER_PROFILE_INVALID_PARAMS_JSON); - shortcircuitServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); + computationServerStubs.stubParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING, objectMapper.writeValueAsString(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID)); computationServerStubs.stubParametersDuplicateFromNotFound(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); createOrUpdateParametersAndDoChecks(studyNameUserIdUuid, "", INVALID_PARAMS_IN_PROFILE_USER_ID, HttpStatus.NO_CONTENT); userAdminServerStubs.verifyGetUserProfile(INVALID_PARAMS_IN_PROFILE_USER_ID); - shortcircuitServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); + computationServerStubs.verifyParameterPut(SHORT_CIRCUIT_ANALYSIS_PARAMETERS_UUID_STRING); computationServerStubs.verifyParametersDuplicateFrom(PROFILE_SHORT_CIRCUIT_ANALYSIS_INVALID_PARAMETERS_UUID_STRING); } diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java index 09f7205bc1..8390e97730 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java @@ -95,17 +95,34 @@ public void verifyParametersDuplicateFrom(String duplicateFromUuid, int nbReques WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/parameters", Map.of("duplicateFrom", WireMock.equalTo(duplicateFromUuid)), nbRequests); } + /** Preferably use function without WireMockServer in signature + * TODO remove after current usages have been fixed + **/ + @Deprecated public void stubParameterPut(WireMockServer wireMockServer, String paramUuid, String responseJson) { wireMockServer.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) .willReturn(WireMock.okJson(responseJson))); } + /** This function doesn't remove request after verifying it + * TODO remove after current usages have been fixed + **/ + @Deprecated public void verifyParameterPut(WireMockServer wireMockServer, String paramUuid) { wireMockServer.verify( putRequestedFor(urlEqualTo("/v1/parameters/" + paramUuid)) ); } + public void stubParameterPut(String paramUuid, String responseJson) { + wireMock.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) + .willReturn(WireMock.okJson(responseJson))); + } + + public void verifyParameterPut(String paramUuid) { + WireMockUtilsCriteria.verifyPutRequest(wireMock, "/v1/parameters/" + paramUuid, Map.of(), null); + } + public void stubParametersGet(String paramUuid, String responseBody) { wireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) .willReturn(WireMock.ok().withBody(responseBody)) @@ -157,10 +174,6 @@ public void verifyDeleteParameters(String parametersUuid) { "/v1/parameters/" + parametersUuid, Map.of()); } - public void verifyParametersDefault() { - WireMockUtilsCriteria.verifyPostRequest(wireMock, "/v1/parameters/default", Map.of()); - } - /* Results */ public UUID stubDeleteResult(String resultUuid) { @@ -193,8 +206,7 @@ public void verifyResultsCountGet() { public void stubGetResultCsv(String resultUuid, byte[] csvContent) { wireMock.stubFor(WireMock.post(urlPathEqualTo("/v1/results/" + resultUuid + "/csv")) - .willReturn(aResponse() - .withStatus(200) + .willReturn(WireMock.ok() .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .withBody(csvContent))); } diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java index ad0269da6f..31cbd38f7e 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ShortcircuitServerStubs.java @@ -120,14 +120,4 @@ public void verifyShortcircuitRun(String networkUuid, String variantId, boolean "debug", WireMock.equalTo(String.valueOf(debug))), null); } - - public void stubParameterPut(String paramUuid, String responseJson) { - wireMock.stubFor(WireMock.put(WireMock.urlPathEqualTo("/v1/parameters/" + paramUuid)) - .willReturn(WireMock.okJson(responseJson)) - ); - } - - public void verifyParameterPut(String paramUuid) { - WireMockUtilsCriteria.verifyPutRequest(wireMock, "/v1/parameters/" + paramUuid, Map.of(), null); - } } From 62756bef4a267dde8b03f975fb593556d8a1a82e Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 10 Feb 2026 15:58:28 +0100 Subject: [PATCH 14/14] Fix indent --- .../study/server/utils/wiremock/ComputationServerStubs.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java index 8390e97730..704c10fa73 100644 --- a/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java +++ b/src/test/java/org/gridsuite/study/server/utils/wiremock/ComputationServerStubs.java @@ -110,7 +110,7 @@ public void stubParameterPut(WireMockServer wireMockServer, String paramUuid, St @Deprecated public void verifyParameterPut(WireMockServer wireMockServer, String paramUuid) { wireMockServer.verify( - putRequestedFor(urlEqualTo("/v1/parameters/" + paramUuid)) + putRequestedFor(urlEqualTo("/v1/parameters/" + paramUuid)) ); }