diff --git a/pom.xml b/pom.xml index b234cacba..6a6bc6da8 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ **/migration/**/* gridsuite org.gridsuite:network-modification-server - 0.59.0 + 0.60.0-SNAPSHOT @@ -99,7 +99,7 @@ pom import - + org.gridsuite diff --git a/src/main/java/org/gridsuite/modification/server/NetworkModificationServerException.java b/src/main/java/org/gridsuite/modification/server/NetworkModificationServerException.java deleted file mode 100644 index 519575c84..000000000 --- a/src/main/java/org/gridsuite/modification/server/NetworkModificationServerException.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (c) 2025, 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.modification.server; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.powsybl.commons.PowsyblException; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.gridsuite.modification.NetworkModificationException; -import org.springframework.http.HttpStatus; -import org.springframework.web.client.HttpStatusCodeException; - -import java.util.Objects; - -/** - * @author Slimane Amar - */ -@Slf4j -public class NetworkModificationServerException extends PowsyblException { - public enum Type { - DUPLICATION_ARGUMENT_INVALID(HttpStatus.BAD_REQUEST, "Invalid argument for duplication"); - - public final HttpStatus status; - private final String message; - - Type(HttpStatus status, String message) { - this.status = status; - this.message = message; - } - } - - @Getter - private final Type type; - - public NetworkModificationServerException(Type type) { - super(Objects.requireNonNull(type.name()) + ((type.message == null) ? "" : " : " + type.message)); - this.type = type; - } - - public static NetworkModificationException handleChangeError(HttpStatusCodeException httpException, NetworkModificationException.Type type) { - String responseBody = httpException.getResponseBodyAsString(); - if (responseBody.isEmpty()) { - return new NetworkModificationException(type, httpException.getStatusCode().toString()); - } - - String message = responseBody; - try { - JsonNode node = new ObjectMapper().readTree(responseBody).path("message"); - if (!node.isMissingNode()) { - message = node.asText(); - } - } catch (JsonProcessingException e) { - // responseBody by default - } - - log.error(message, httpException); - - return new NetworkModificationException(type, message); - } -} diff --git a/src/main/java/org/gridsuite/modification/server/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/modification/server/RestResponseEntityExceptionHandler.java deleted file mode 100644 index d4b87abf9..000000000 --- a/src/main/java/org/gridsuite/modification/server/RestResponseEntityExceptionHandler.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (c) 2021, 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.modification.server; - -import org.gridsuite.modification.NetworkModificationException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; - -/** - * @author Slimane Amar - */ -@ControllerAdvice -public class RestResponseEntityExceptionHandler { - - private static final Logger LOGGER = LoggerFactory.getLogger(RestResponseEntityExceptionHandler.class); - private static final String HANDLER_MESSAGE = "Caught in handler"; - - @ExceptionHandler(NetworkModificationException.class) - protected ResponseEntity handleException(NetworkModificationException exception) { - return handleException(exception.getType().status, exception); - } - - @ExceptionHandler(NetworkModificationServerException.class) - protected ResponseEntity handleException(NetworkModificationServerException exception) { - return handleException(exception.getType().status, exception); - } - - private ResponseEntity handleException(HttpStatus status, Exception exception) { - if (LOGGER.isErrorEnabled()) { - LOGGER.error(HANDLER_MESSAGE, exception); - } - return ResponseEntity - .status(status) - .body(exception.getMessage()); - } -} diff --git a/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java b/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java index 8f9ef5dd5..aa94c1e26 100644 --- a/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java +++ b/src/main/java/org/gridsuite/modification/server/dto/elasticsearch/EquipmentInfos.java @@ -84,7 +84,7 @@ public static Set getVoltageLevels(@NonNull Identifiable identi ).collect(Collectors.toSet()); } - throw NetworkModificationException.createEquipmentTypeUnknown(identifiable.getClass().getSimpleName()); + throw new NetworkModificationException("The equipment type : " + identifiable.getClass().getSimpleName() + " is unknown"); } public static String getEquipmentTypeName(@NonNull Identifiable identifiable) { @@ -98,11 +98,10 @@ public static String getEquipmentTypeName(@NonNull Identifiable identifiable) /** * @param hvdcLine The hvdc line to get hvdc type name * @return The hvdc type name string - * @throws NetworkModificationException if converter station types don't match */ private static String getHvdcLineTypeName(HvdcLine hvdcLine) { if (hvdcLine.getConverterStation1().getHvdcType() != hvdcLine.getConverterStation2().getHvdcType()) { - throw NetworkModificationException.createHybridHvdcUnsupported(hvdcLine.getId()); + throw new NetworkModificationException(String.format("The hybrid Hvdc line %s is unsupported", hvdcLine.getId())); } return String.format("%s_%s", hvdcLine.getType().name(), hvdcLine.getConverterStation1().getHvdcType().name()); diff --git a/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java index 9abc8c373..3de6c554c 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java @@ -15,14 +15,13 @@ import org.gridsuite.modification.dto.EquipmentAttributeModificationInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.entities.equipment.modification.attribute.EquipmentAttributeModificationEntity; +import org.gridsuite.modification.server.error.NetworkModificationServerException; import java.lang.reflect.Constructor; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.MISSING_MODIFICATION_DESCRIPTION; - /** * @author Slimane Amar */ @@ -86,7 +85,7 @@ public ModificationEntity(UUID id, String type) { protected ModificationEntity(ModificationInfos modificationInfos) { if (modificationInfos == null) { - throw new NetworkModificationException(MISSING_MODIFICATION_DESCRIPTION, "Missing network modification description"); + throw new NetworkModificationException("Missing network modification description"); } //We need to limit the precision to avoid database precision storage limit issue (postgres has a precision of 6 digits while h2 can go to 9) this.date = Instant.now().truncatedTo(ChronoUnit.MICROS); @@ -138,7 +137,7 @@ public static ModificationEntity fromDTO(ModificationInfos dto) { Constructor constructor = entityClass.getConstructor(dto.getClass()); return constructor.newInstance(dto); } catch (Exception e) { - throw new RuntimeException("Failed to map DTO to Entity", e); + throw new NetworkModificationServerException("Failed to map DTO to Entity: " + e.getCause().getMessage(), e); } } else { throw new IllegalArgumentException("No entity class registered for DTO class: " + dto.getClass()); diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/LineAttachToVoltageLevelEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/LineAttachToVoltageLevelEntity.java index b361f6cb0..1bdce63d9 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/LineAttachToVoltageLevelEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/LineAttachToVoltageLevelEntity.java @@ -18,8 +18,6 @@ import jakarta.persistence.*; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_ATTACH_DESCRIPTION_ERROR; - /** * @author Nicolas NOIR */ @@ -98,7 +96,7 @@ private void assignAttributes(LineAttachToVoltageLevelInfos lineAttachToVoltageL existingVoltageLevelId = lineAttachToVoltageLevelInfos.getExistingVoltageLevelId(); bbsOrBusId = lineAttachToVoltageLevelInfos.getBbsOrBusId(); if (lineAttachToVoltageLevelInfos.getAttachmentLine() == null) { - throw new NetworkModificationException(LINE_ATTACH_DESCRIPTION_ERROR, "Missing required attachment line description"); + throw new NetworkModificationException("Missing required attachment line description"); } lineCreation = new LineCreationEntity(lineAttachToVoltageLevelInfos.getAttachmentLine()); newLine1Id = lineAttachToVoltageLevelInfos.getNewLine1Id(); diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/attribute/EquipmentAttributeModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/attribute/EquipmentAttributeModificationEntity.java index 12f6f7a04..222b38352 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/attribute/EquipmentAttributeModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/attribute/EquipmentAttributeModificationEntity.java @@ -21,6 +21,7 @@ import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; import jakarta.persistence.MappedSuperclass; +import org.gridsuite.modification.server.error.NetworkModificationServerException; /** @@ -95,7 +96,7 @@ public static EquipmentAttributeModificationEntity createAttributeEntity(Equi Constructor> constructor = entityClass.getConstructor(EquipmentAttributeModificationInfos.class); return constructor.newInstance(dto); } catch (Exception e) { - throw new RuntimeException("Failed to map DTO to Entity", e); + throw new NetworkModificationServerException("Failed to map DTO to Entity: " + e.getCause().getMessage(), e); } } else { throw new IllegalArgumentException("No entity class registered for attribute value class: " + attributeValueClass); diff --git a/src/main/java/org/gridsuite/modification/server/error/NetworkModificationGroupNotFoundException.java b/src/main/java/org/gridsuite/modification/server/error/NetworkModificationGroupNotFoundException.java new file mode 100644 index 000000000..6f34f6294 --- /dev/null +++ b/src/main/java/org/gridsuite/modification/server/error/NetworkModificationGroupNotFoundException.java @@ -0,0 +1,18 @@ +/* + Copyright (c) 2025, 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.modification.server.error; + +/** + * @author Mohamed Benrejeb + */ +public class NetworkModificationGroupNotFoundException extends RuntimeException { + + public NetworkModificationGroupNotFoundException(String message) { + super(message); + } + +} diff --git a/src/main/java/org/gridsuite/modification/server/error/NetworkModificationServerException.java b/src/main/java/org/gridsuite/modification/server/error/NetworkModificationServerException.java new file mode 100644 index 000000000..8f3b50790 --- /dev/null +++ b/src/main/java/org/gridsuite/modification/server/error/NetworkModificationServerException.java @@ -0,0 +1,22 @@ +/* + Copyright (c) 2025, 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.modification.server.error; + +/** + * @author Mohamed Benrejeb + */ +public class NetworkModificationServerException extends RuntimeException { + + public NetworkModificationServerException(String message) { + super(message); + } + + public NetworkModificationServerException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java b/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java index d49a2d275..78609fd48 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/NetworkStoreListener.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.*; import com.powsybl.network.store.client.NetworkStoreService; import lombok.Getter; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.dto.elasticsearch.EquipmentInfos; import org.gridsuite.modification.server.dto.elasticsearch.ModificationApplicationInfos; @@ -26,7 +25,6 @@ import java.util.regex.Pattern; import java.util.stream.Stream; -import static org.gridsuite.modification.NetworkModificationException.Type.MODIFICATION_ERROR; import static org.gridsuite.modification.server.elasticsearch.EquipmentInfosService.getIndexedEquipmentTypes; import static org.gridsuite.modification.server.elasticsearch.EquipmentInfosService.getIndexedEquipmentTypesInModification; @@ -196,13 +194,8 @@ public void initModificationApplication(UUID groupUuid, ModificationInfos modifi } public List flushModificationApplications() { - try { - networkStoreService.flush(network); // At first - flushImpactedEquipments(); - } catch (Exception e) { - throw new NetworkModificationException(MODIFICATION_ERROR, e); - } - + networkStoreService.flush(network); // At first + flushImpactedEquipments(); return reduceNetworkImpacts(); } diff --git a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java index b56fd5dcf..7bb359667 100644 --- a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java +++ b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java @@ -10,7 +10,6 @@ import lombok.NonNull; import org.apache.commons.collections4.CollectionUtils; import org.gridsuite.modification.ModificationType; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.dto.tabular.*; import org.gridsuite.modification.server.dto.ModificationMetadata; @@ -19,6 +18,8 @@ import org.gridsuite.modification.server.entities.equipment.modification.EquipmentModificationEntity; import org.gridsuite.modification.server.entities.tabular.TabularModificationsEntity; import org.gridsuite.modification.server.entities.tabular.TabularPropertyEntity; +import org.gridsuite.modification.server.error.NetworkModificationGroupNotFoundException; +import org.gridsuite.modification.server.error.NetworkModificationServerException; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @@ -30,7 +31,6 @@ import java.util.stream.Stream; import static org.apache.commons.collections4.SetUtils.emptyIfNull; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.utils.DatabaseConstants.SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE; import static org.gridsuite.modification.server.utils.DatabaseConstants.SQL_SUB_MODIFICATION_WITH_LIMITSET_DELETION_BATCH_SIZE; @@ -141,11 +141,10 @@ public UUID createNetworkCompositeModification(@NonNull List modificationU public void updateCompositeModification(@NonNull UUID compositeUuid, @NonNull List modificationUuids) { ModificationEntity modificationEntity = modificationRepository.findById(compositeUuid) - .orElseThrow(() -> new NetworkModificationException(MODIFICATION_NOT_FOUND, String.format(MODIFICATION_NOT_FOUND_MESSAGE, compositeUuid))); + .orElseThrow(() -> new NetworkModificationServerException(String.format(MODIFICATION_NOT_FOUND_MESSAGE, compositeUuid))); if (!(modificationEntity instanceof CompositeModificationEntity compositeEntity)) { - throw new NetworkModificationException(MODIFICATION_ERROR, - String.format("Modification (%s) is not a composite modification", compositeUuid)); + throw new NetworkModificationServerException(String.format("Modification (%s) is not a composite modification", compositeUuid)); } List copyEntities = modificationRepository.findAllByIdIn(modificationUuids).stream() @@ -221,7 +220,7 @@ private void insertModifications(List modificationsList, Lis modificationsList.size() : IntStream.range(0, modificationsList.size()) .filter(i -> referenceModificationUuid.equals(modificationsList.get(i).getId())) .findFirst() - .orElseThrow(() -> new NetworkModificationException(MOVE_MODIFICATION_ERROR)); + .orElseThrow(() -> new NetworkModificationServerException("Insert modification error")); modificationsList.addAll(insertionIndex, modificationsToAdd); for (int order = 0; order < modificationsList.size(); order++) { modificationsList.get(order).setModificationsOrder(order); @@ -284,8 +283,8 @@ public List getModifications(UUID groupUuid, boolean onlyMeta public List getModifications(UUID groupUuid, boolean onlyMetadata, boolean errorOnGroupNotFound, boolean onlyStashed) { try { return onlyMetadata ? getModificationsMetadata(groupUuid, onlyStashed) : getModificationsInfos(List.of(groupUuid), onlyStashed); - } catch (NetworkModificationException e) { - if (e.getType() == MODIFICATION_GROUP_NOT_FOUND && !errorOnGroupNotFound) { + } catch (NetworkModificationGroupNotFoundException e) { + if (!errorOnGroupNotFound) { return List.of(); } throw e; @@ -437,7 +436,7 @@ public ModificationInfos getModificationInfo(UUID modificationUuid) { public ModificationEntity getModificationEntity(UUID modificationUuid) { return modificationRepository .findById(modificationUuid) - .orElseThrow(() -> new NetworkModificationException(MODIFICATION_NOT_FOUND, modificationUuid.toString())); + .orElseThrow(() -> new NetworkModificationServerException("Modification not found: " + modificationUuid.toString())); } @Transactional // To have the 2 delete in the same transaction (atomic) @@ -451,11 +450,10 @@ public void deleteModificationGroup(UUID groupUuid, boolean errorOnGroupNotFound deleteModifications(modifications.stream().filter(Objects::nonNull).toList()); } modificationGroupRepository.delete(groupEntity); - } catch (NetworkModificationException e) { - if (e.getType() == MODIFICATION_GROUP_NOT_FOUND && !errorOnGroupNotFound) { - return; + } catch (NetworkModificationGroupNotFoundException e) { + if (errorOnGroupNotFound) { + throw e; } - throw e; } } @@ -474,11 +472,11 @@ public int deleteModifications(UUID groupUuid, List uuids) { modifications = modificationRepository.findAllById(uuids); Optional optionalModificationWithGroup = modifications.stream().filter(m -> m.getGroup() != null).findFirst(); if (optionalModificationWithGroup.isPresent()) { - throw new NetworkModificationException(MODIFICATION_DELETION_ERROR, String.format("%s is owned by group %s", + throw new NetworkModificationServerException(String.format("Modification deletion error: %s is owned by group %s", optionalModificationWithGroup.get().getId().toString(), optionalModificationWithGroup.get().getGroup().getId())); } } else { - throw new NetworkModificationException(MODIFICATION_DELETION_ERROR, "need to specify the group or give a list of UUIDs"); + throw new NetworkModificationServerException("Modification deletion error: need to specify the group or give a list of UUIDs"); } int count = modifications.size(); deleteModifications(modifications); @@ -486,7 +484,7 @@ public int deleteModifications(UUID groupUuid, List uuids) { } private ModificationGroupEntity getModificationGroup(UUID groupUuid) { - return this.modificationGroupRepository.findById(groupUuid).orElseThrow(() -> new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, groupUuid.toString())); + return this.modificationGroupRepository.findById(groupUuid).orElseThrow(() -> new NetworkModificationGroupNotFoundException("Modification Group not found " + groupUuid)); } private ModificationGroupEntity getOrCreateModificationGroup(UUID groupUuid) { @@ -564,7 +562,7 @@ public void stashNetworkModifications(@NonNull List modificationUuids, int for (UUID modificationUuid : modificationUuids) { ModificationEntity modificationEntity = this.modificationRepository .findById(modificationUuid) - .orElseThrow(() -> new NetworkModificationException(MODIFICATION_NOT_FOUND, String.format(MODIFICATION_NOT_FOUND_MESSAGE, modificationUuid))); + .orElseThrow(() -> new NetworkModificationServerException(String.format(MODIFICATION_NOT_FOUND_MESSAGE, modificationUuid))); modificationEntity.setStashed(true); modificationEntity.setModificationsOrder(stashModificationOrder); modificationEntities.add(modificationEntity); @@ -593,7 +591,7 @@ public void restoreNetworkModifications(@NonNull List modificationUuids, i int modificationOrder = unstashedSize; List modifications = modificationRepository.findAllByIdInReverse(modificationUuids); if (modifications.size() != modificationUuids.size()) { - throw new NetworkModificationException(MODIFICATION_NOT_FOUND); + throw new NetworkModificationServerException("Modification not found"); } for (ModificationEntity modification : modifications) { modification.setStashed(false); @@ -607,7 +605,7 @@ public void updateNetworkModificationMetadata(@NonNull List modificationUu for (UUID modificationUuid : modificationUuids) { ModificationEntity modificationEntity = this.modificationRepository .findById(modificationUuid) - .orElseThrow(() -> new NetworkModificationException(MODIFICATION_NOT_FOUND, String.format(MODIFICATION_NOT_FOUND_MESSAGE, modificationUuid))); + .orElseThrow(() -> new NetworkModificationServerException(String.format(MODIFICATION_NOT_FOUND_MESSAGE, modificationUuid))); if (metadata.getDescription() != null) { modificationEntity.setDescription(metadata.getDescription()); } @@ -646,11 +644,10 @@ public void deleteStashedModificationInGroup(UUID groupUuid, boolean errorOnGrou groupEntity.getModifications().removeAll(modifications); // No need to remove the group from the modification as we're going to delete it deleteModifications(modifications); } - } catch (NetworkModificationException e) { - if (e.getType() == MODIFICATION_GROUP_NOT_FOUND && !errorOnGroupNotFound) { - return; + } catch (NetworkModificationGroupNotFoundException e) { + if (errorOnGroupNotFound) { + throw e; } - throw e; } } diff --git a/src/main/java/org/gridsuite/modification/server/service/FilterService.java b/src/main/java/org/gridsuite/modification/server/service/FilterService.java index 9b3060a55..7cad7dbea 100644 --- a/src/main/java/org/gridsuite/modification/server/service/FilterService.java +++ b/src/main/java/org/gridsuite/modification/server/service/FilterService.java @@ -16,7 +16,6 @@ import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; import org.springframework.stereotype.Service; -import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; @@ -28,9 +27,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.modification.NetworkModificationException.Type.FILTERS_NOT_FOUND; -import static org.gridsuite.modification.server.NetworkModificationServerException.handleChangeError; - /** * @author bendaamerahm */ @@ -60,11 +56,7 @@ public List getFilters(List filtersUuids) { String path = UriComponentsBuilder.fromPath(DELIMITER + FILTER_SERVER_API_VERSION + "/filters/metadata" + ids) .buildAndExpand() .toUriString(); - try { - return restTemplate.exchange(filterServerBaseUri + path, HttpMethod.GET, null, new ParameterizedTypeReference>() { }).getBody(); - } catch (HttpStatusCodeException e) { - throw handleChangeError(e, FILTERS_NOT_FOUND); - } + return restTemplate.exchange(filterServerBaseUri + path, HttpMethod.GET, null, new ParameterizedTypeReference>() { }).getBody(); } public Stream exportFilters(List filtersUuids, Network network) { diff --git a/src/main/java/org/gridsuite/modification/server/service/LoadFlowService.java b/src/main/java/org/gridsuite/modification/server/service/LoadFlowService.java index 6c689f6c0..6ecb2dc5d 100644 --- a/src/main/java/org/gridsuite/modification/server/service/LoadFlowService.java +++ b/src/main/java/org/gridsuite/modification/server/service/LoadFlowService.java @@ -8,19 +8,14 @@ import lombok.extern.slf4j.Slf4j; import org.gridsuite.modification.ILoadFlowService; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.LoadFlowParametersInfos; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; -import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; import java.util.UUID; -import static org.gridsuite.modification.server.NetworkModificationServerException.handleChangeError; - /** * @author Achour BERRAHMA */ @@ -43,15 +38,6 @@ public LoadFlowService(@Value("${gridsuite.services.loadflow-server.base-uri:htt public LoadFlowParametersInfos getLoadFlowParametersInfos(UUID uuid) { String path = UriComponentsBuilder.fromPath(DELIMITER + LOADFLOW_SERVER_API_VERSION + PARAMETERS_URI) .buildAndExpand(uuid).toUriString(); - try { - return restTemplate.getForObject(loadFlowServerBaseUri + path, LoadFlowParametersInfos.class); - } catch (HttpStatusCodeException e) { - if (e.getStatusCode() == HttpStatus.NOT_FOUND) { - log.error("Load flow parameters with UUID {} not found", uuid); - return null; - } else { - throw handleChangeError(e, NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR); - } - } + return restTemplate.getForObject(loadFlowServerBaseUri + path, LoadFlowParametersInfos.class); } } diff --git a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java index 869051564..82ce0d46c 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -10,7 +10,6 @@ import co.elastic.clients.elasticsearch._types.query_dsl.Query; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Streams; -import com.powsybl.commons.PowsyblException; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.VariantManagerConstants; import com.powsybl.network.store.client.NetworkStoreService; @@ -19,15 +18,15 @@ import org.apache.commons.lang3.StringUtils; import org.gridsuite.filter.AbstractFilter; import org.gridsuite.modification.ModificationType; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.GenerationDispatchInfos; import org.gridsuite.modification.dto.ModificationInfos; -import org.gridsuite.modification.server.NetworkModificationServerException; import org.gridsuite.modification.server.dto.*; import org.gridsuite.modification.server.dto.elasticsearch.ModificationApplicationInfos; import org.gridsuite.modification.server.elasticsearch.EquipmentInfosService; import org.gridsuite.modification.server.elasticsearch.ModificationApplicationInfosService; import org.gridsuite.modification.server.entities.ModificationEntity; +import org.gridsuite.modification.server.error.NetworkModificationGroupNotFoundException; +import org.gridsuite.modification.server.error.NetworkModificationServerException; import org.gridsuite.modification.server.modifications.NetworkModificationApplicator; import org.gridsuite.modification.server.repositories.ModificationRepository; import org.gridsuite.modification.server.repositories.NetworkModificationRepository; @@ -47,8 +46,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.modification.NetworkModificationException.Type.*; -import static org.gridsuite.modification.server.NetworkModificationServerException.Type.DUPLICATION_ARGUMENT_INVALID; import static org.gridsuite.modification.server.modifications.AsyncUtils.scheduleApplyModifications; /** @@ -124,7 +121,7 @@ public void verifyModifications(UUID groupUuid, Set modificationUuids) { .stream().map(ModificationInfos::getUuid) .collect(Collectors.toSet()) .containsAll(modificationUuids)) { - throw new NetworkModificationException(MODIFICATION_NOT_FOUND); + throw new NetworkModificationServerException("Modifications not found"); } } @@ -198,11 +195,8 @@ public void deleteIndexedModificationGroup(List groupUuids, UUID networkUu public NetworkInfos getNetworkInfos(UUID networkUuid, String variantId, PreloadingStrategy preloadingStrategy) { Network network; - try { - network = networkStoreService.getNetwork(networkUuid, preloadingStrategy); - } catch (PowsyblException e) { - throw new NetworkModificationException(NETWORK_NOT_FOUND, networkUuid.toString()); - } + network = networkStoreService.getNetwork(networkUuid, preloadingStrategy); + boolean isVariantPresent = true; if (variantId != null) { if (network.getVariantManager().getVariantIds().stream().anyMatch(id -> id.equals(variantId))) { @@ -274,19 +268,11 @@ public Network cloneNetworkVariant(UUID networkUuid, String destinationVariantId, PreloadingStrategy preloadingStrategy) { Network network; - try { - network = networkStoreService.getNetwork(networkUuid, preloadingStrategy); - network.addListener(new NetworkVariantsListener(network, networkUuid, equipmentInfosService)); - } catch (PowsyblException e) { - throw new NetworkModificationException(NETWORK_NOT_FOUND, networkUuid.toString()); - } + network = networkStoreService.getNetwork(networkUuid, preloadingStrategy); + network.addListener(new NetworkVariantsListener(network, networkUuid, equipmentInfosService)); String startingVariant = StringUtils.isBlank(originVariantId) ? VariantManagerConstants.INITIAL_VARIANT_ID : originVariantId; - try { - network.getVariantManager().cloneVariant(startingVariant, destinationVariantId, true); // cloning variant - network.getVariantManager().setWorkingVariant(destinationVariantId); // set current variant to destination variant - } catch (PowsyblException e) { - throw new NetworkModificationException(VARIANT_NOT_FOUND, startingVariant); - } + network.getVariantManager().cloneVariant(startingVariant, destinationVariantId, true); // cloning variant + network.getVariantManager().setWorkingVariant(destinationVariantId); // set current variant to destination variant return network; } @@ -296,14 +282,8 @@ public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNul Streams.forEachPair(buildInfos.getModificationGroupUuids().stream(), buildInfos.getReportsInfos().stream(), (groupUuid, reportInfos) -> { Set modificationsToExclude = buildInfos.getModificationUuidsToExclude().get(groupUuid); - List modifications = List.of(); - try { - modifications = networkModificationRepository.getActiveModifications(groupUuid, modificationsToExclude); - } catch (NetworkModificationException e) { - if (e.getType() != MODIFICATION_GROUP_NOT_FOUND) { // May not exist - throw e; - } - } + List modifications = networkModificationRepository.getActiveModifications(groupUuid, modificationsToExclude); + modificationGroupsInfos.add(new ModificationApplicationGroup(groupUuid, modifications, reportInfos)); } @@ -331,7 +311,7 @@ public void stopBuildRequest(String receiver) { public void deleteNetworkModifications(UUID groupUuid, List modificationsUuids) { if (networkModificationRepository.deleteModifications(groupUuid, modificationsUuids) == 0) { - throw new NetworkModificationException(MODIFICATION_NOT_FOUND); + throw new NetworkModificationServerException("No modifications found"); } } @@ -357,11 +337,8 @@ public Map duplicateGroup(UUID sourceGroupUuid, UUID groupUuid) { } return duplicateModificationMapping; - } catch (NetworkModificationException e) { - if (e.getType() == MODIFICATION_GROUP_NOT_FOUND) { // May not exist - return Map.of(); - } - throw e; + } catch (NetworkModificationGroupNotFoundException e) { + return Map.of(); } } @@ -383,7 +360,7 @@ private CompletableFuture> applyModification public CompletableFuture duplicateModifications(@NonNull UUID targetGroupUuid, UUID originGroupUuid, @NonNull List modificationsUuids, @NonNull List applicationContexts) { if (originGroupUuid != null && !modificationsUuids.isEmpty()) { // Duplicate modifications from a group or from a list only - throw new NetworkModificationServerException(DUPLICATION_ARGUMENT_INVALID); + throw new NetworkModificationServerException("Invalid argument for duplication"); } List duplicateModifications = networkModificationRepository.saveDuplicateModifications(targetGroupUuid, originGroupUuid, modificationsUuids); List ids = duplicateModifications.stream().map(ModificationInfos::getUuid).toList(); diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index c5c9c8c9f..1e6a6c6c3 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -19,6 +19,7 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.client.PreloadingStrategy; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; +import com.powsybl.ws.commons.error.BaseExceptionHandler; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.tuple.Pair; import org.gridsuite.modification.NetworkModificationException; @@ -32,6 +33,7 @@ import org.gridsuite.modification.server.elasticsearch.EquipmentInfosRepository; import org.gridsuite.modification.server.elasticsearch.EquipmentInfosService; import org.gridsuite.modification.server.elasticsearch.TombstonedEquipmentInfosRepository; +import org.gridsuite.modification.server.error.NetworkModificationServerException; import org.gridsuite.modification.server.impacts.AbstractBaseImpact; import org.gridsuite.modification.server.impacts.SimpleElementImpact; import org.gridsuite.modification.server.impacts.TestImpactUtils; @@ -51,6 +53,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.bean.override.mockito.MockitoBean; @@ -65,10 +68,8 @@ import java.util.stream.Collectors; import static org.gridsuite.modification.ModificationType.*; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE1; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE2; -import static org.gridsuite.modification.server.NetworkModificationServerException.Type.DUPLICATION_ARGUMENT_INVALID; import static org.gridsuite.modification.server.elasticsearch.EquipmentInfosService.getIndexedEquipmentTypes; import static org.gridsuite.modification.server.impacts.TestImpactUtils.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; @@ -77,8 +78,7 @@ import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -89,6 +89,7 @@ */ @AutoConfigureMockMvc @SpringBootTest +@Import(BaseExceptionHandler.class) @Tag("IntegrationTest") class ModificationControllerTest { @@ -159,7 +160,7 @@ void setUp() { networkWithTeePoint = NetworkWithTeePoint.create(TEST_NETWORK_WITH_TEE_POINT_ID); when(networkStoreService.getNetwork(eq(TEST_NETWORK_WITH_TEE_POINT_ID), nullable(PreloadingStrategy.class))).then((Answer) invocation -> networkWithTeePoint); - when(networkStoreService.getNetwork(eq(NOT_FOUND_NETWORK_ID), nullable(PreloadingStrategy.class))).thenThrow(new PowsyblException()); + when(networkStoreService.getNetwork(eq(NOT_FOUND_NETWORK_ID), nullable(PreloadingStrategy.class))).thenThrow(new PowsyblException("network-not-found-root-cause")); when(networkStoreService.getNetwork(eq(TEST_NETWORK_WITH_FLUSH_ERROR_ID), nullable(PreloadingStrategy.class))).then((Answer) invocation -> NetworkCreation.create(TEST_NETWORK_WITH_FLUSH_ERROR_ID, true)); networkBusBreaker = NetworkCreation.createBusBreaker(TEST_NETWORK_BUS_BREAKER_ID); @@ -167,7 +168,7 @@ void setUp() { when(networkStoreService.getNetwork(eq(TEST_NETWORK_MIXED_TOPOLOGY_ID), nullable(PreloadingStrategy.class))).then((Answer) invocation -> NetworkCreation.createMixedTopology(TEST_NETWORK_MIXED_TOPOLOGY_ID)); - doThrow(new PowsyblException()).when(networkStoreService).flush(argThat(n -> TEST_NETWORK_WITH_FLUSH_ERROR_ID.toString().equals(n.getId()))); + doThrow(new PowsyblException("flush-error-root-cause")).when(networkStoreService).flush(argThat(n -> TEST_NETWORK_WITH_FLUSH_ERROR_ID.toString().equals(n.getId()))); // clean DB modificationRepository.deleteAll(); @@ -200,13 +201,6 @@ private String getJsonBody(List uuids, String variantId) throws JsonProces return TestUtils.getJsonBody(uuids, TEST_NETWORK_ID, variantId); } - @Test - void testModificationException() { - assertEquals(new NetworkModificationException(MODIFICATION_ERROR).getMessage(), MODIFICATION_ERROR.name()); - assertEquals(new NetworkModificationException(MODIFICATION_ERROR, "Error message").getMessage(), MODIFICATION_ERROR.name() + " : Error message"); - assertEquals(new NetworkModificationException(MODIFICATION_ERROR, new IllegalArgumentException("Error message")).getMessage(), MODIFICATION_ERROR.name() + " : Error message"); - } - @Test void testEquipmentIdNonNull() { String errorMessage = "equipmentId is marked non-null but is null"; @@ -222,16 +216,16 @@ void testNetworkNotFound() throws Exception { String body = getJsonBody(LoadCreationInfos.builder().equipmentId("id").build(), NOT_FOUND_NETWORK_ID, NetworkCreation.VARIANT_ID); MvcResult mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(body).contentType(MediaType.APPLICATION_JSON), - status().isNotFound()); - assertEquals(new NetworkModificationException(NETWORK_NOT_FOUND, NOT_FOUND_NETWORK_ID.toString()).getMessage(), mvcResult.getResponse().getContentAsString()); + status().isInternalServerError()); + assertTrue(mvcResult.getResponse().getContentAsString().contains("\"detail\":\"network-not-found-root-cause\"")); } @Test void assertThrowsUpdateModificationNotFound() { UUID modificationUuid = UUID.randomUUID(); ModificationInfos modificationInfos = LoadCreationInfos.builder().equipmentId("id").build(); - String errorMessage = assertThrows(NetworkModificationException.class, () -> networkModificationService.updateNetworkModification(modificationUuid, modificationInfos)).getMessage(); - assertEquals(new NetworkModificationException(MODIFICATION_NOT_FOUND, String.format("%s", modificationUuid)).getMessage(), errorMessage); + String errorMessage = assertThrows(NetworkModificationServerException.class, () -> networkModificationService.updateNetworkModification(modificationUuid, modificationInfos)).getMessage(); + assertEquals("Modification not found: " + modificationUuid, errorMessage); assertThrows(NullPointerException.class, () -> networkModificationService.updateNetworkModification(modificationUuid, null)); } @@ -283,8 +277,13 @@ void testModificationGroups() throws Exception { mockMvc.perform(delete("/v1/groups/{groupUuid}", TEST_GROUP_ID)) .andExpect(status().isOk()); - mockMvc.perform(get("/v1/groups/{groupUuid}/network-modifications?onlyMetadata=true", TEST_GROUP_ID)).andExpectAll(status().isNotFound(), - content().string(new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage())); + mockMvc.perform(get("/v1/groups/{groupUuid}/network-modifications?onlyMetadata=true", TEST_GROUP_ID)) + .andExpect(status().isInternalServerError()) + .andExpect(result -> { + Throwable ex = result.getResolvedException(); + assertNotNull(ex); + assertEquals(String.format("Modification Group not found " + TEST_GROUP_ID), ex.getMessage()); + }); mvcResult = mockMvc.perform(get("/v1/groups/{groupUuid}/network-modifications?onlyMetadata=true&errorOnGroupNotFound=false", TEST_GROUP_ID)).andExpectAll( status().isOk(), @@ -436,7 +435,7 @@ void testDeleteModification() throws Exception { mockMvc.perform(delete(URI_NETWORK_MODIF_BASE) .queryParam("groupUuid", UUID.randomUUID().toString()) .queryParam("uuids", uuidString)) - .andExpect(status().isNotFound()); + .andExpect(status().isInternalServerError()); mockMvc.perform(delete(URI_NETWORK_MODIF_BASE) .queryParam("groupUuid", TEST_GROUP_ID.toString()) @@ -449,9 +448,9 @@ void testDeleteModification() throws Exception { mockMvc.perform(delete(URI_NETWORK_MODIF_BASE) .queryParam("groupUuid", TEST_GROUP_ID.toString()) .queryParam("uuids", uuidString)) - .andExpect(status().isNotFound()); + .andExpect(status().isInternalServerError()); mockMvc.perform(delete("/v1/groups/" + TEST_GROUP_ID)).andExpect(status().isOk()); - mockMvc.perform(delete("/v1/groups/" + TEST_GROUP_ID)).andExpect(status().isNotFound()); + mockMvc.perform(delete("/v1/groups/" + TEST_GROUP_ID)).andExpect(status().isInternalServerError()); mockMvc.perform(delete("/v1/groups/" + TEST_GROUP_ID).queryParam("errorOnGroupNotFound", "false")).andExpect(status().isOk()); } @@ -471,8 +470,8 @@ void testDeleteAllModification() throws Exception { void testDeleteModificationMissingParamError() throws Exception { mockMvc.perform(delete(URI_NETWORK_MODIF_BASE)) .andExpect(status().isInternalServerError()) - .andExpect(result -> assertInstanceOf(NetworkModificationException.class, result.getResolvedException())) - .andExpect(result -> assertEquals("MODIFICATION_DELETION_ERROR : need to specify the group or give a list of UUIDs", result.getResolvedException().getMessage())); + .andExpect(result -> assertInstanceOf(NetworkModificationServerException.class, result.getResolvedException())) + .andExpect(result -> assertEquals("Modification deletion error: need to specify the group or give a list of UUIDs", result.getResolvedException().getMessage())); } @Test @@ -482,8 +481,8 @@ void testNetworkModificationsWithErrorOnNetworkFlush() throws Exception { .script("network.getGenerator('idGenerator').targetP=10\nnetwork.getGenerator('idGenerator').targetP=20\n") .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, TEST_NETWORK_WITH_FLUSH_ERROR_ID, NetworkCreation.VARIANT_ID); - runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON), status().is5xxServerError()); - + MvcResult mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON), status().isInternalServerError()); + assertTrue(mvcResult.getResponse().getContentAsString().contains("\"detail\":\"flush-error-root-cause\"")); assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, true, false).size()); } @@ -574,7 +573,7 @@ void testCopyModification() throws Exception { put("/v1/groups/" + TEST_GROUP_ID + "?action=XXXXXXX") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .andExpect(status().isInternalServerError()); // create 1 modification in another group UUID otherGroupId = UUID.randomUUID(); @@ -613,12 +612,16 @@ void testCopyModification() throws Exception { // Duplicate modifications from a group and from a list : illegal operation bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvc.perform( put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()).andReturn(); - assertEquals(new NetworkModificationServerException(DUPLICATION_ARGUMENT_INVALID).getMessage(), mvcResult.getResponse().getContentAsString()); + .andExpect(status().isInternalServerError()) + .andExpect(result -> { + Throwable ex = result.getResolvedException(); + assertNotNull(ex); + assertEquals("Invalid argument for duplication", ex.getMessage()); + }).andReturn(); } /** @@ -657,7 +660,7 @@ void testCopyModificationOld() throws Exception { put(wrongUrl) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .andExpect(status().isInternalServerError()); // create 1 modification in another group UUID otherGroupId = UUID.randomUUID(); @@ -1432,7 +1435,7 @@ void shouldGetPosition() { ModificationUtils modificationUtils = ModificationUtils.getInstance(); String errorMessage = assertThrows(NetworkModificationException.class, () -> modificationUtils.getPosition("invalidBbsId", network, vl)).getMessage(); - assertEquals(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "invalidBbsId").getMessage(), errorMessage); + assertEquals("Busbar section invalidBbsId does not exist in network", errorMessage); } @Test @@ -1764,8 +1767,8 @@ void testDuplicateCompositeModification() throws Exception { assertEquals(1, groupModifications.size()); assertEquals(modificationUuidList.get(0), groupModifications.get(0).getUuid()); // duplicate has been deleted - assertEquals("MODIFICATION_NOT_FOUND : " + returnedNewId, assertThrows(NetworkModificationException.class, () - -> modificationRepository.getModificationInfo(returnedNewId)).getMessage()); + assertEquals("Modification not found: " + returnedNewId, assertThrows(NetworkModificationServerException.class, () + -> modificationRepository.getModificationInfo(returnedNewId)).getMessage()); } @Test @@ -1808,7 +1811,7 @@ void testUpdateNetworkCompositeModificationWithNonexistentUuid() throws Exceptio mockMvc.perform(put(URI_COMPOSITE_NETWORK_MODIF_BASE + "/" + nonExistentUuid) .content(mapper.writeValueAsString(modificationUuids)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isNotFound()); + .andExpect(status().isInternalServerError()); } @Test @@ -1858,12 +1861,13 @@ void testStandaloneDeletionError() throws Exception { // Try to delete this modification without its group: not allowed mockMvc.perform(delete(URI_NETWORK_MODIF_BASE) - .queryParam("uuids", switchModificationId.toString())) - .andExpectAll( - status().is5xxServerError(), - content().string(new NetworkModificationException(MODIFICATION_DELETION_ERROR, - String.format("%s is owned by group %s", switchModificationId, TEST_GROUP_ID)).getMessage()) - ); + .queryParam("uuids", switchModificationId.toString())) + .andExpect(status().isInternalServerError()) + .andExpect(result -> { + Throwable ex = result.getResolvedException(); + assertNotNull(ex); + assertEquals(String.format("Modification deletion error: %s is owned by group %s", switchModificationId, TEST_GROUP_ID), ex.getMessage()); + }); } @Test @@ -1877,12 +1881,12 @@ void testVerifyModifications() throws Exception { // try to verify unexisting modification mockMvc.perform(get("/v1/groups/{groupId}/network-modifications/verify", TEST_GROUP_ID) .param("uuids", UUID.randomUUID().toString())) - .andExpect(status().isNotFound()); + .andExpect(status().isInternalServerError()); // try to verify invalid modification mockMvc.perform(get("/v1/groups/{groupId}/network-modifications/verify", TEST_GROUP2_ID) .param("uuids", switchModificationId.toString())) - .andExpect(status().isNotFound()); + .andExpect(status().isInternalServerError()); // try to verify valid modification mockMvc.perform(get("/v1/groups/{groupId}/network-modifications/verify", TEST_GROUP_ID) diff --git a/src/test/java/org/gridsuite/modification/server/ServerNameProvider.java b/src/test/java/org/gridsuite/modification/server/ServerNameProvider.java new file mode 100644 index 000000000..47a646e3e --- /dev/null +++ b/src/test/java/org/gridsuite/modification/server/ServerNameProvider.java @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2025, 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.modification.server; + +import org.springframework.stereotype.Component; + +/** + * @author Mohamed Ben-rejeb {@literal } + */ +@Component +public class ServerNameProvider implements com.powsybl.ws.commons.error.ServerNameProvider { + + private final String name = "network-modification-server"; + + public ServerNameProvider() { + } + + @Override + public String serverName() { + return name; + } +} diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java index 2a251dfa0..02de8b74f 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java @@ -16,6 +16,7 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.client.PreloadingStrategy; import com.powsybl.network.store.iidm.impl.NetworkImpl; +import com.powsybl.ws.commons.error.BaseExceptionHandler; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.dto.NetworkModificationResult; import org.gridsuite.modification.server.dto.NetworkModificationsResult; @@ -35,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; @@ -64,6 +66,7 @@ * */ @SpringBootTest +@Import(BaseExceptionHandler.class) @DisableElasticsearch @AutoConfigureMockMvc public abstract class AbstractNetworkModificationTest { diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java index cb237f39d..9a9359413 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java @@ -12,21 +12,17 @@ import com.powsybl.iidm.network.Network; import com.powsybl.loadflow.LoadFlowParameters; import org.gridsuite.modification.dto.*; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.server.dto.NetworkModificationsResult; +import org.gridsuite.modification.server.error.NetworkModificationServerException; import org.gridsuite.modification.server.service.LoadFlowService; -import org.gridsuite.modification.server.NetworkModificationServerException; import org.gridsuite.modification.server.utils.elasticsearch.DisableElasticsearch; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.ResultActions; -import org.springframework.web.client.HttpStatusCodeException; import java.util.List; import java.util.Map; @@ -70,9 +66,7 @@ void setupLoadFlowServiceMock() { // Mock for server error case when(loadFlowService.getLoadFlowParametersInfos(ERROR_LOADFLOW_PARAMETERS_UUID)) - .thenThrow(new NetworkModificationException( - NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR, - "Internal server error")); + .thenThrow(new NetworkModificationServerException("LOAD_FLOW_PARAMETERS_FETCH_ERROR : Internal server error")); } @Override @@ -172,125 +166,14 @@ void testGetLoadFlowParametersInfosNotFound() { */ @Test void testGetLoadFlowParametersInfosServerError() { - NetworkModificationException exception = assertThrows( - NetworkModificationException.class, + NetworkModificationServerException exception = assertThrows( + NetworkModificationServerException.class, () -> loadFlowService.getLoadFlowParametersInfos(ERROR_LOADFLOW_PARAMETERS_UUID) ); - assertEquals(NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR, exception.getType()); assertEquals("LOAD_FLOW_PARAMETERS_FETCH_ERROR : Internal server error", exception.getMessage()); } - /** - * Test NetworkModificationServerException.handleChangeError() method with empty response body - */ - @Test - void testHandleChangeErrorWithEmptyResponseBody() { - HttpStatusCodeException httpException = new HttpStatusCodeException(HttpStatus.INTERNAL_SERVER_ERROR) { - @NotNull - @Override - public String getResponseBodyAsString() { - return ""; - } - }; - - NetworkModificationException result = NetworkModificationServerException.handleChangeError( - httpException, - NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR - ); - - assertEquals(NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR, result.getType()); - assertEquals("LOAD_FLOW_PARAMETERS_FETCH_ERROR : 500 INTERNAL_SERVER_ERROR", result.getMessage()); - } - - /** - * Test NetworkModificationServerException.handleChangeError() method with JSON response body containing message - */ - @Test - void testHandleChangeErrorWithJsonResponseBody() { - HttpStatusCodeException httpException = new HttpStatusCodeException(HttpStatus.BAD_REQUEST) { - @NotNull - @Override - public String getResponseBodyAsString() { - return "{\"message\": \"Invalid parameters provided\", \"code\": 400}"; - } - }; - - NetworkModificationException result = NetworkModificationServerException.handleChangeError( - httpException, - NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR - ); - - assertEquals(NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR, result.getType()); - assertEquals("LOAD_FLOW_PARAMETERS_FETCH_ERROR : Invalid parameters provided", result.getMessage()); - } - - /** - * Test NetworkModificationServerException.handleChangeError() method with plain text response body - */ - @Test - void testHandleChangeErrorWithPlainTextResponseBody() { - HttpStatusCodeException httpException = new HttpStatusCodeException(HttpStatus.NOT_FOUND) { - @NotNull - @Override - public String getResponseBodyAsString() { - return "Resource not found"; - } - }; - - NetworkModificationException result = NetworkModificationServerException.handleChangeError( - httpException, - NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR - ); - - assertEquals(NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR, result.getType()); - assertEquals("LOAD_FLOW_PARAMETERS_FETCH_ERROR : Resource not found", result.getMessage()); - } - - /** - * Test NetworkModificationServerException.handleChangeError() method with invalid JSON response body - */ - @Test - void testHandleChangeErrorWithInvalidJsonResponseBody() { - HttpStatusCodeException httpException = new HttpStatusCodeException(HttpStatus.INTERNAL_SERVER_ERROR) { - @NotNull - @Override - public String getResponseBodyAsString() { - return "{invalid json structure"; - } - }; - - NetworkModificationException result = NetworkModificationServerException.handleChangeError( - httpException, - NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR - ); - - assertEquals(NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR, result.getType()); - assertEquals("LOAD_FLOW_PARAMETERS_FETCH_ERROR : {invalid json structure", result.getMessage()); - } - - /** - * Test NetworkModificationServerException.handleChangeError() method with JSON response body without message field - */ - @Test - void testHandleChangeErrorWithJsonResponseBodyWithoutMessage() { - HttpStatusCodeException httpException = new HttpStatusCodeException(HttpStatus.CONFLICT) { - @NotNull - @Override - public String getResponseBodyAsString() { - return "{\"error\": \"Conflict occurred\", \"timestamp\": \"2025-01-01T10:00:00Z\"}"; - } - }; - - NetworkModificationException result = NetworkModificationServerException.handleChangeError( - httpException, - NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR - ); - - assertEquals(NetworkModificationException.Type.LOAD_FLOW_PARAMETERS_FETCH_ERROR, result.getType()); - assertEquals("LOAD_FLOW_PARAMETERS_FETCH_ERROR : {\"error\": \"Conflict occurred\", \"timestamp\": \"2025-01-01T10:00:00Z\"}", result.getMessage()); - } - @Override protected ModificationInfos buildModificationUpdate() { return BalancesAdjustmentModificationInfos.builder() diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInBusBreakerTest.java index 8065b5e4d..cd7fbe472 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInBusBreakerTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.BatteryCreationInfos; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -24,7 +23,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -116,7 +114,7 @@ void testCreateWithBusbarSectionErrors() throws Exception { String body = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUS_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Bus notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java index fcb35eaa0..50aece287 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.BatteryCreationInfos; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -27,7 +26,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -131,7 +129,7 @@ void testCreateWithErrors() throws Exception { batteryCreationInfosJson = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, "notFoundVoltageLevelId").getMessage(), + assertLogMessage("Voltage level notFoundVoltageLevelId does not exist in network", ERROR_MESSAGE_KEY, reportService); // not found busbar section @@ -140,7 +138,7 @@ void testCreateWithErrors() throws Exception { batteryCreationInfosJson = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "notFoundBusbarSection").getMessage(), + assertLogMessage("Busbar section notFoundBusbarSection does not exist in network", ERROR_MESSAGE_KEY, reportService); // invalid min active power @@ -162,7 +160,7 @@ void testCreateWithErrors() throws Exception { batteryCreationInfosJson = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_BATTERY_ERROR, "Battery 'idBattery1' : minimum reactive power is not set").getMessage(), + assertLogMessage("Battery 'idBattery1' : minimum reactive power is not set", ERROR_MESSAGE_KEY, reportService); batteryCreationInfos = (BatteryCreationInfos) buildModification(); @@ -172,7 +170,7 @@ void testCreateWithErrors() throws Exception { batteryCreationInfosJson = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_BATTERY_ERROR, "Battery 'idBattery1' : maximum reactive power is not set").getMessage(), + assertLogMessage("Battery 'idBattery1' : maximum reactive power is not set", ERROR_MESSAGE_KEY, reportService); batteryCreationInfos = (BatteryCreationInfos) buildModification(); @@ -183,7 +181,7 @@ void testCreateWithErrors() throws Exception { batteryCreationInfosJson = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_BATTERY_ERROR, "Battery 'idBattery1' : maximum reactive power is expected to be greater than or equal to minimum reactive power").getMessage(), + assertLogMessage("Battery 'idBattery1' : maximum reactive power is expected to be greater than or equal to minimum reactive power", ERROR_MESSAGE_KEY, reportService); // invalid reactive capability curve limit @@ -193,7 +191,7 @@ void testCreateWithErrors() throws Exception { batteryCreationInfosJson = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_BATTERY_ERROR, "Battery 'idBattery1' : P is not set in a reactive capability curve limits point").getMessage(), + assertLogMessage("Battery 'idBattery1' : P is not set in a reactive capability curve limits point", ERROR_MESSAGE_KEY, reportService); // try to create an existing battery @@ -202,7 +200,7 @@ void testCreateWithErrors() throws Exception { batteryCreationInfosJson = getJsonBody(batteryCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BATTERY_ALREADY_EXISTS, "v3Battery").getMessage(), + assertLogMessage("Battery already exists: v3Battery", ERROR_MESSAGE_KEY, reportService); batteryCreationInfos.setEquipmentId("idBattery3"); batteryCreationInfos.setEquipmentName("nameBattery3"); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java index da04d9d2a..a090bdb33 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java @@ -310,7 +310,7 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); - assertLogMessage("MODIFY_BATTERY_ERROR : Battery '" + "v3Battery" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", + assertLogMessage("Battery '" + "v3Battery" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); } @@ -357,7 +357,7 @@ void testMinQGreaterThanMaxQ() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); - assertLogMessage("MODIFY_BATTERY_ERROR : Battery '" + "v3Battery" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), + assertLogMessage("Battery '" + "v3Battery" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java index 78798365b..e19f67944 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java @@ -8,7 +8,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.DeleteAttachingLineInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.utils.NetworkWithTeePoint; @@ -21,8 +20,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_ALREADY_EXISTS; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -96,7 +93,7 @@ void createWithInvalidLineIdTest() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "ll").getMessage(), + assertLogMessage("Line not found: ll", ERROR_MESSAGE_KEY, reportService); } @@ -131,7 +128,7 @@ void createNewLineWithExistingIdTest() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l2").getMessage(), + assertLogMessage("Line already exist: l2", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java index d5be334aa..2239a5de5 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java @@ -8,7 +8,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.DeleteVoltageLevelOnLineInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -21,8 +20,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_ALREADY_EXISTS; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -98,7 +95,7 @@ void createWithInvalidLineIdTest() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "ll").getMessage(), + assertLogMessage("Line not found: ll", ERROR_MESSAGE_KEY, reportService); } @@ -112,7 +109,7 @@ void createNewLineWithExistingIdTest() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l2").getMessage(), + assertLogMessage("Line already exists: l2", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java index 626fc3730..388a5aa11 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.IdentifiableType; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.EquipmentAttributeModificationInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -24,7 +23,6 @@ import java.util.Set; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.impacts.TestImpactUtils.testElementModificationImpact; import static org.gridsuite.modification.server.impacts.TestImpactUtils.testEmptyImpacts; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; @@ -32,7 +30,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -66,7 +63,7 @@ void testEquipmentAttributeModificationInfos() throws Exception { // switch opening ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -75,7 +72,7 @@ void testEquipmentAttributeModificationInfos() throws Exception { switchStatusModificationInfos.setEquipmentId("break1Variant"); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, NetworkCreation.VARIANT_ID); mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1Variant")); @@ -101,18 +98,18 @@ private void switchModifications(String extraParams, String switchId1, String sw switchStatusModificationInfos.setEquipmentId(switchNotFoundId); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(EQUIPMENT_NOT_FOUND, switchNotFoundId).getMessage(), - ERROR_MESSAGE_KEY, reportService); + .andExpect(status().isOk()); + assertLogMessage("Equipment not found: " + switchNotFoundId, + ERROR_MESSAGE_KEY, reportService); // switch closing when already closed switchStatusModificationInfos.setEquipmentId(switchId1); switchStatusModificationInfos.setEquipmentAttributeValue(false); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testEmptyImpacts(mapper, mvcResult.getResponse().getContentAsString()); @@ -120,7 +117,7 @@ private void switchModifications(String extraParams, String switchId1, String sw switchStatusModificationInfos.setEquipmentAttributeValue(true); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), substationsIds); @@ -129,7 +126,7 @@ private void switchModifications(String extraParams, String switchId1, String sw switchStatusModificationInfos.setEquipmentAttributeValue(false); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), substationsIds); @@ -138,7 +135,7 @@ private void switchModifications(String extraParams, String switchId1, String sw switchStatusModificationInfos.setEquipmentAttributeValue(true); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), otherSubstationsIds); @@ -157,10 +154,13 @@ void testWithErrors() throws Exception { .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, null); + mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpectAll( - status().isBadRequest(), - content().string(new NetworkModificationException(EQUIPMENT_ATTRIBUTE_NAME_ERROR, "For switch status, the attribute name is only 'open'").getMessage())); + .andExpect(result -> { + Throwable ex = result.getResolvedException(); + assertNotNull(ex); + assertEquals("For switch status, the attribute name is only 'open'", ex.getMessage()); + }); // bad equipment attribute value switchStatusModificationInfos.setEquipmentAttributeName("open"); @@ -168,9 +168,12 @@ void testWithErrors() throws Exception { switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpectAll( - status().isBadRequest(), - content().string(new NetworkModificationException(EQUIPMENT_ATTRIBUTE_VALUE_ERROR, "For switch status, the attribute values are only " + Set.of(true, false)).getMessage())); + .andExpect(status().isInternalServerError()) + .andExpect(result -> { + Throwable ex = result.getResolvedException(); + assertNotNull(ex); + assertEquals("For switch status, the attribute values are only " + Set.of(true, false), ex.getMessage()); + }); } @Override @@ -213,7 +216,8 @@ protected void assertAfterNetworkModificationDeletion() { @Override protected void testCreationModificationMessage(ModificationInfos modificationInfos) throws Exception { assertEquals("EQUIPMENT_ATTRIBUTE_MODIFICATION", modificationInfos.getMessageType()); - Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { + }); assertEquals("open", createdValues.get("equipmentAttributeName")); assertEquals("v1b1", createdValues.get("equipmentId")); assertEquals("true", createdValues.get("equipmentAttributeValue")); @@ -222,7 +226,8 @@ protected void testCreationModificationMessage(ModificationInfos modificationInf @Override protected void testUpdateModificationMessage(ModificationInfos modificationInfos) throws Exception { assertEquals("EQUIPMENT_ATTRIBUTE_MODIFICATION", modificationInfos.getMessageType()); - Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { + }); assertEquals("open", createdValues.get("equipmentAttributeName")); assertEquals("v1b1Edited", createdValues.get("equipmentId")); assertEquals("false", createdValues.get("equipmentAttributeValue")); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java index 9eb84f965..0e226ce2b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java @@ -13,7 +13,6 @@ import com.powsybl.iidm.modification.topology.RemoveSubstationBuilder; import com.powsybl.iidm.network.IdentifiableType; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.EquipmentDeletionInfos; import org.gridsuite.modification.dto.HvdcLccDeletionInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -34,7 +33,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.EQUIPMENT_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -108,7 +106,7 @@ void testCreateWithErrors() throws Exception { String body = getJsonBody(equipmentDeletionInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(EQUIPMENT_NOT_FOUND, "Equipment with id=notFoundLoad not found or of bad type").getMessage(), + assertLogMessage("LOAD with id :notFoundLoad not found or of bad type", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInBusBreakerTest.java index 9761a89ab..ea1c6c2ee 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInBusBreakerTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.EnergySource; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.GeneratorCreationInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -25,8 +24,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND; -import static org.gridsuite.modification.NetworkModificationException.Type.EQUIPMENT_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -142,7 +139,7 @@ void testCreateWithBusbarSectionErrors() throws Exception { String body = getJsonBody(generatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUS_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Bus notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); } @@ -156,7 +153,7 @@ void testCreateWithRegulatedTerminalError() throws Exception { String generatorCreationInfosJson = getJsonBody(generatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(EQUIPMENT_NOT_FOUND, "Equipment with id=titi not found with type LINE").getMessage(), + assertLogMessage("Equipment with id=titi not found with type LINE", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java index df315e5b8..188a984ae 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.EnergySource; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.dto.NetworkModificationsResult; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -22,7 +21,6 @@ import java.util.*; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -152,7 +150,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, "notFoundVoltageLevelId").getMessage(), + assertLogMessage("Voltage level notFoundVoltageLevelId does not exist in network", ERROR_MESSAGE_KEY, reportService); // not found busbar section @@ -162,7 +160,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "notFoundBusbarSection").getMessage(), + assertLogMessage("Busbar section notFoundBusbarSection does not exist in network", ERROR_MESSAGE_KEY, reportService); // invalid min active power @@ -186,7 +184,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_GENERATOR_ERROR, "Generator 'idGenerator1' : minimum reactive power is not set").getMessage(), + assertLogMessage("Generator 'idGenerator1' : minimum reactive power is not set", ERROR_MESSAGE_KEY, reportService); generatorCreationInfos = (GeneratorCreationInfos) buildModification(); @@ -197,7 +195,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_GENERATOR_ERROR, "Generator 'idGenerator1' : maximum reactive power is not set").getMessage(), + assertLogMessage("Generator 'idGenerator1' : maximum reactive power is not set", ERROR_MESSAGE_KEY, reportService); generatorCreationInfos = (GeneratorCreationInfos) buildModification(); @@ -209,7 +207,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_GENERATOR_ERROR, "Generator 'idGenerator1' : maximum reactive power is expected to be greater than or equal to minimum reactive power").getMessage(), + assertLogMessage("Generator 'idGenerator1' : maximum reactive power is expected to be greater than or equal to minimum reactive power", ERROR_MESSAGE_KEY, reportService); // invalid reactive capability curve limit @@ -220,7 +218,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_GENERATOR_ERROR, "Generator 'idGenerator1' : P is not set in a reactive capability curve limits point").getMessage(), + assertLogMessage("Generator 'idGenerator1' : P is not set in a reactive capability curve limits point", ERROR_MESSAGE_KEY, reportService); // try to create an existing generator @@ -230,7 +228,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(GENERATOR_ALREADY_EXISTS, "v5generator").getMessage(), + assertLogMessage("Generator already exists: v5generator", ERROR_MESSAGE_KEY, reportService); // Test create generator on not yet existing variant VARIANT_NOT_EXISTING_ID : diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java index 1162630fa..22b5b7f89 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java @@ -426,7 +426,7 @@ void testMinQGreaterThanMaxQ() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage("MODIFY_GENERATOR_ERROR : Generator '" + "idGenerator" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), + assertLogMessage("Generator '" + "idGenerator" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), ERROR_MESSAGE_KEY, reportService); } @@ -449,7 +449,7 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); - assertLogMessage("MODIFY_GENERATOR_ERROR : Generator '" + "idGenerator" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", + assertLogMessage("Generator '" + "idGenerator" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java index 6213dcf0a..ea889b4f8 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java @@ -231,7 +231,7 @@ void testFilterWithWrongIds() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(generatorScalingInfo.getErrorType().name() + ": There is no valid equipment ID among the provided filter(s)", + assertLogMessage("There is no valid equipment ID among the provided filter(s)", "network.modification.invalidFilters", reportService); wireMockUtils.verifyGetRequest(subWrongId, PATH, handleQueryParams(FILTER_WRONG_ID_1), false); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java index aadb2ec11..0048d5068 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java @@ -7,7 +7,6 @@ package org.gridsuite.modification.server.modifications; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.GroovyScriptInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -20,7 +19,6 @@ import java.util.Set; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.GROOVY_SCRIPT_EMPTY; import static org.gridsuite.modification.server.impacts.TestImpactUtils.testElementModificationImpact; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; @@ -136,14 +134,14 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(getJsonBody(groovyScriptInfos, null)).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(GROOVY_SCRIPT_EMPTY).getMessage(), + assertLogMessage("Groovy script empty", ERROR_MESSAGE_KEY, reportService); groovyScriptInfos.setScript(" "); // apply blank groovy script mockMvc.perform(post(getNetworkModificationUri()).content(getJsonBody(groovyScriptInfos, null)).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(GROOVY_SCRIPT_EMPTY).getMessage(), + assertLogMessage("Groovy script empty", ERROR_MESSAGE_KEY, reportService); groovyScriptInfos.setScript("network.getGenerator('there is no generator').targetP=12\n"); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LccCreationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LccCreationTest.java index 980d8bc58..35d7fb37b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LccCreationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LccCreationTest.java @@ -11,7 +11,6 @@ import com.powsybl.iidm.network.LccConverterStation; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.LccConverterStationCreationInfos; import org.gridsuite.modification.dto.LccCreationInfos; @@ -24,8 +23,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.HVDC_LINE_ALREADY_EXISTS; -import static org.gridsuite.modification.NetworkModificationException.Type.VOLTAGE_LEVEL_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -161,7 +158,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(lccCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, "notFoundVoltageLevelId").getMessage(), + assertLogMessage("Voltage level notFoundVoltageLevelId does not exist in network", ERROR_MESSAGE_KEY, reportService); // try to create an existing lcc @@ -170,7 +167,7 @@ void testCreateWithErrors() throws Exception { lccCreationInfosJson = getJsonBody(lccCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lccCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(HVDC_LINE_ALREADY_EXISTS, "hvdcLine").getMessage(), + assertLogMessage("HVDC line already exists: hvdcLine", ERROR_MESSAGE_KEY, reportService); } } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java index 08d2e7582..9750ecb8a 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java @@ -11,7 +11,6 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.OperationalLimitsGroup; import com.powsybl.iidm.network.SwitchKind; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Tag; @@ -21,7 +20,6 @@ import java.util.*; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -161,7 +159,7 @@ private void tryToCreateLineWithExistingId(LineAttachToVoltageLevelInfos tryWith .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, existingLineId).getMessage(), + assertLogMessage("Line already exists: " + existingLineId, ERROR_MESSAGE_KEY, reportService); } @@ -172,7 +170,7 @@ void testCreateWithErrors() throws Exception { String lineAttachToAbsentLineJson = getJsonBody(lineAttachToAbsentLine, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "absent_line_id").getMessage(), + assertLogMessage("Line not found: absent_line_id", ERROR_MESSAGE_KEY, reportService); testNetworkModificationsCount(getGroupId(), 1); @@ -180,10 +178,12 @@ void testCreateWithErrors() throws Exception { lineMissingLine.setAttachmentLine(null); // we omit a mandatory input data String lineMissingLineJson = getJsonBody(lineMissingLine, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineMissingLineJson).contentType(MediaType.APPLICATION_JSON)) - .andExpectAll( - status().is4xxClientError(), - content().string(new NetworkModificationException(LINE_ATTACH_DESCRIPTION_ERROR, "Missing required attachment line description").getMessage()) - ); + .andExpect(status().isInternalServerError()) + .andExpect(result -> { + Throwable ex = result.getResolvedException(); + assertNotNull(ex); + assertEquals("Failed to map DTO to Entity: Missing required attachment line description", ex.getMessage()); + }); testNetworkModificationsCount(getGroupId(), 1); } @@ -207,7 +207,7 @@ void testCreateWithExistingEquipments() throws Exception { String tryWithExistingLineJson = getJsonBody(tryWithAttachmentPointId, null); mockMvc.perform(post(getNetworkModificationUri()).content(tryWithExistingLineJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_ALREADY_EXISTS, "v5").getMessage(), + assertLogMessage("Voltage level already exists: v5", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java index 0e37a1e35..22d7c0a57 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java @@ -8,7 +8,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Tag; @@ -20,7 +19,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; @@ -42,7 +40,7 @@ void testCreateWithErrors() throws Exception { String lineCreationInfosJson = getJsonBody(lineCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUS_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Bus notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java index 5b62a20db..aab01f433 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java @@ -11,7 +11,6 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.OperationalLimitsGroup; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.dto.NetworkModificationsResult; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -23,7 +22,6 @@ import java.util.*; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; @@ -76,7 +74,7 @@ void testCreateWithErrors() throws Exception { lineCreationInfosJson = getJsonBody(lineCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, "notFoundVoltageLevelId1").getMessage(), + assertLogMessage("Voltage level notFoundVoltageLevelId1 does not exist in network", ERROR_MESSAGE_KEY, reportService); lineCreationInfos.setVoltageLevelId1("v1"); @@ -84,7 +82,7 @@ void testCreateWithErrors() throws Exception { lineCreationInfosJson = getJsonBody(lineCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "notFoundBusbarSection1").getMessage(), + assertLogMessage("Busbar section notFoundBusbarSection1 does not exist in network", ERROR_MESSAGE_KEY, reportService); lineCreationInfos.setVoltageLevelId1("v1"); @@ -107,7 +105,7 @@ void testCreateWithErrors() throws Exception { lineCreationInfosJson = getJsonBody(lineCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "line2").getMessage(), + assertLogMessage("line already exists: line2", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java index d26fe4898..318123018 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java @@ -17,7 +17,6 @@ import com.powsybl.iidm.network.extensions.Measurements; import org.apache.commons.collections4.CollectionUtils; import org.assertj.core.api.Assertions; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.dto.NetworkModificationsResult; import org.gridsuite.modification.server.impacts.AbstractBaseImpact; @@ -36,7 +35,6 @@ import java.util.Optional; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_NOT_FOUND; import static org.gridsuite.modification.dto.AttributeModification.toAttributeModification; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE1; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE2; @@ -250,7 +248,7 @@ void testCreateWithErrors() throws Exception { .content(lineModificationInfosJson) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "Line 'lineNotFound' : does not exist in network").getMessage(), + assertLogMessage("Line 'lineNotFound' : does not exist in network", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithNewVoltageLevelTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithNewVoltageLevelTest.java index 1e26e3f46..04af42da6 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithNewVoltageLevelTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithNewVoltageLevelTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.SwitchKind; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.CouplingDeviceInfos; import org.gridsuite.modification.dto.LineSplitWithVoltageLevelInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -23,7 +22,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -40,7 +38,7 @@ void testCreateWithErrors() throws Exception { String lineSplitAbsentLineJson = getJsonBody(lineSplitAbsentLine, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineSplitAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "absent_line_id").getMessage(), + assertLogMessage("Line not found: absent_line_id", ERROR_MESSAGE_KEY, reportService); testNetworkModificationsCount(getGroupId(), 1); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithVoltageLevelTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithVoltageLevelTest.java index 900fd7eab..d165d9427 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithVoltageLevelTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineSplitWithVoltageLevelTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.SwitchKind; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.CouplingDeviceInfos; import org.gridsuite.modification.dto.LineSplitWithVoltageLevelInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -23,8 +22,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUSBAR_SECTION_NOT_FOUND; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_ALREADY_EXISTS; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -110,7 +107,7 @@ void testCreateWithExistingLines() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(tryWithNewLine1IdJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "line1").getMessage(), + assertLogMessage("Line already exists: line1", ERROR_MESSAGE_KEY, reportService); // same test with "newLine2Id" @@ -120,7 +117,7 @@ void testCreateWithExistingLines() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(tryWithNewLine2IdJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "line1").getMessage(), + assertLogMessage("Line already exists: line1", ERROR_MESSAGE_KEY, reportService); } @@ -133,7 +130,7 @@ void testCreateWithWrongBusBar() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(tryWithBadIdJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "999A").getMessage(), + assertLogMessage("Busbar section 999A does not exist in network", ERROR_MESSAGE_KEY, reportService); // try with a switch, not a busbar @@ -143,7 +140,7 @@ void testCreateWithWrongBusBar() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(tryWithSwitchIdJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "v1d1").getMessage(), + assertLogMessage("Busbar section v1d1 does not exist in network", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LinesAttachToSplitLinesTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LinesAttachToSplitLinesTest.java index 8add2a65b..4c4629260 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LinesAttachToSplitLinesTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LinesAttachToSplitLinesTest.java @@ -8,7 +8,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.LinesAttachToSplitLinesInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.utils.NetworkWithTeePoint; @@ -19,8 +18,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_ALREADY_EXISTS; -import static org.gridsuite.modification.NetworkModificationException.Type.LINE_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -103,7 +100,7 @@ void testCreateWithErrors() throws Exception { String lineAttachToAbsentLineJson = getJsonBody(linesAttachToSplitLinesInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "absent_line_id").getMessage(), + assertLogMessage("Line not found: absent_line_id", ERROR_MESSAGE_KEY, reportService); // try to create an already existing line linesAttachToSplitLinesInfos = (LinesAttachToSplitLinesInfos) buildModification(); @@ -111,7 +108,7 @@ void testCreateWithErrors() throws Exception { lineAttachToAbsentLineJson = getJsonBody(linesAttachToSplitLinesInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l1").getMessage(), + assertLogMessage("Line already exists: l1", ERROR_MESSAGE_KEY, reportService); // same test on 'replacingLine2Id' linesAttachToSplitLinesInfos = (LinesAttachToSplitLinesInfos) buildModification(); @@ -119,7 +116,7 @@ void testCreateWithErrors() throws Exception { lineAttachToAbsentLineJson = getJsonBody(linesAttachToSplitLinesInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l1").getMessage(), + assertLogMessage("Line already exists: l1", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java index b177acd50..a20a27514 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.LoadType; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.LoadCreationInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -26,8 +25,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUSBAR_SECTION_NOT_FOUND; -import static org.gridsuite.modification.NetworkModificationException.Type.VOLTAGE_LEVEL_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -68,7 +65,7 @@ void testCreateWithErrors() throws Exception { loadCreationInfosJson = getJsonBody(loadCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, "notFoundVoltageLevelId").getMessage(), + assertLogMessage("Voltage level notFoundVoltageLevelId does not exist in network", ERROR_MESSAGE_KEY, reportService); testNetworkModificationsCount(getGroupId(), 3); @@ -78,7 +75,7 @@ void testCreateWithErrors() throws Exception { loadCreationInfosJson = getJsonBody(loadCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "notFoundBusbarSection").getMessage(), + assertLogMessage("Busbar section notFoundBusbarSection does not exist in network", ERROR_MESSAGE_KEY, reportService); testNetworkModificationsCount(getGroupId(), 4); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java index c9b1b362d..423cfa241 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java @@ -229,7 +229,7 @@ void testFilterWithWrongIds() throws Exception { .content(body) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(loadScalingInfo.getErrorType().name() + ": There is no valid equipment ID among the provided filter(s)", + assertLogMessage("There is no valid equipment ID among the provided filter(s)", "network.modification.invalidFilters", reportService); wireMockUtils.verifyGetRequest(stubWithWrongId, PATH, handleQueryParams(FILTER_WRONG_ID_1), false); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/ModificationUtilsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/ModificationUtilsTest.java index 9e2fb2722..69e4dd6ef 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/ModificationUtilsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/ModificationUtilsTest.java @@ -7,7 +7,6 @@ package org.gridsuite.modification.server.modifications; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.ReactiveCapabilityCurvePointsInfos; import org.gridsuite.modification.utils.ModificationUtils; import org.junit.jupiter.api.Test; @@ -16,7 +15,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchRuntimeException; -import static org.gridsuite.modification.NetworkModificationException.Type.MODIFY_GENERATOR_ERROR; /** * @author David SARTORI @@ -29,48 +27,39 @@ void testCheckMaxQGreaterThanMinQ() { var point1 = ReactiveCapabilityCurvePointsInfos.builder().minQ(10.0).maxQ(20.0).build(); ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( Collections.singletonList(point1), - MODIFY_GENERATOR_ERROR, "old KO, new OK: No exception should be thrown"); var point2 = ReactiveCapabilityCurvePointsInfos.builder().minQ(20.0).maxQ(10.0).build(); - var exception = (NetworkModificationException) catchRuntimeException(() -> ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( + var exception = catchRuntimeException(() -> ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( Collections.singletonList(point2), - MODIFY_GENERATOR_ERROR, "old OK, new KO: ") ); - assertThat(exception.getType()).isEqualTo(MODIFY_GENERATOR_ERROR); assertThat(exception) .hasMessageEndingWith("old OK, new KO: maximum reactive power 10.0 is expected to be greater than or equal to minimum reactive power 20.0"); var point3 = ReactiveCapabilityCurvePointsInfos.builder().minQ(20.0).maxQ(10.0).build(); - exception = (NetworkModificationException) catchRuntimeException(() -> ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( + exception = catchRuntimeException(() -> ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( Collections.singletonList(point3), - MODIFY_GENERATOR_ERROR, "old null, new KO: ") ); - assertThat(exception.getType()).isEqualTo(MODIFY_GENERATOR_ERROR); assertThat(exception) .hasMessageEndingWith("old null, new KO: maximum reactive power 10.0 is expected to be greater than or equal to minimum reactive power 20.0"); var point4 = ReactiveCapabilityCurvePointsInfos.builder().minQ(10.0).maxQ(20.0).build(); ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( Collections.singletonList(point4), - MODIFY_GENERATOR_ERROR, "old null, new OK: No exception should be thrown"); var point5 = ReactiveCapabilityCurvePointsInfos.builder().minQ(10.0).maxQ(20.0).build(); ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( Collections.singletonList(point5), - MODIFY_GENERATOR_ERROR, "old OK, new null: No exception should be thrown"); var point6 = ReactiveCapabilityCurvePointsInfos.builder().minQ(20.0).maxQ(10.0).build(); - exception = (NetworkModificationException) catchRuntimeException(() -> ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( + exception = catchRuntimeException(() -> ModificationUtils.getInstance().checkMaxQGreaterThanMinQ( Collections.singletonList(point6), - MODIFY_GENERATOR_ERROR, "old KO, new null: ") ); - assertThat(exception.getType()).isEqualTo(MODIFY_GENERATOR_ERROR); assertThat(exception) .hasMessageEndingWith("old KO, new null: maximum reactive power 10.0 is expected to be greater than or equal to minimum reactive power 20.0"); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/MoveVoltageLevelFeederBaysTest.java b/src/test/java/org/gridsuite/modification/server/modifications/MoveVoltageLevelFeederBaysTest.java index a5f7f9671..f08742900 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/MoveVoltageLevelFeederBaysTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/MoveVoltageLevelFeederBaysTest.java @@ -183,7 +183,7 @@ void testGetTerminal() { MoveVoltageLevelFeederBays moveVoltageLevelFeederBays = (MoveVoltageLevelFeederBays) moveVoltageLevelFeederBaysInfos.toModification(); assertEquals("MOVE_VOLTAGE_LEVEL_FEEDER_BAYS", moveVoltageLevelFeederBays.getName()); String message = assertThrows(NetworkModificationException.class, () -> moveVoltageLevelFeederBays.getTerminal(network, connectablePositionModification)).getMessage(); - assertEquals("MOVE_VOLTAGE_LEVEL_FEEDER_BAYS_ERROR : MoveVoltageLevelFeederBays is not implemented for class com.powsybl.network.store.iidm.impl.ThreeWindingsTransformerImpl", message); + assertEquals("MoveVoltageLevelFeederBays is not implemented for class com.powsybl.network.store.iidm.impl.ThreeWindingsTransformerImpl", message); // busbar not found on a branch MoveFeederBayInfos connectablePositionModification2 = MoveFeederBayInfos.builder() .equipmentId("line1") @@ -194,7 +194,7 @@ void testGetTerminal() { .connectionDirection(ConnectablePosition.Direction.TOP) .build(); message = assertThrows(NetworkModificationException.class, () -> moveVoltageLevelFeederBays.getTerminal(network, connectablePositionModification2)).getMessage(); - assertEquals("MOVE_VOLTAGE_LEVEL_FEEDER_BAYS_ERROR : Invalid connection side: THREE for branch line1", message); + assertEquals("Invalid connection side: THREE for branch line1", message); // injection with no error MoveFeederBayInfos connectablePositionModification3 = MoveFeederBayInfos.builder() .equipmentId("v3Battery") diff --git a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideOneLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideOneLineTest.java index 71389c165..6beb7a19f 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideOneLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideOneLineTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Line; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.dto.OperatingStatusModificationInfos; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -20,7 +19,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.OPERATING_STATUS_MODIFICATION_ERROR; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -98,7 +96,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(OPERATING_STATUS_MODIFICATION_ERROR, "Unable to energise equipment end").getMessage(), + assertLogMessage("Unable to energise equipment end", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideTwoLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideTwoLineTest.java index 20ca92b44..010c1f911 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideTwoLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationEnergiseSideTwoLineTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Line; import com.powsybl.iidm.network.Network; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.dto.OperatingStatusModificationInfos; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -20,7 +19,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.OPERATING_STATUS_MODIFICATION_ERROR; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -97,7 +95,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(OPERATING_STATUS_MODIFICATION_ERROR, "Unable to energise equipment end").getMessage(), + assertLogMessage("Unable to energise equipment end", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java index 5cf00ff40..4d8deead0 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java @@ -13,7 +13,6 @@ import com.powsybl.iidm.network.extensions.OperatingStatus; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.dto.OperatingStatusModificationInfos; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -28,14 +27,12 @@ import static com.powsybl.iidm.network.extensions.OperatingStatus.Status.FORCED_OUTAGE; import static com.powsybl.iidm.network.extensions.OperatingStatus.Status.PLANNED_OUTAGE; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.NetworkUtil.createSwitch; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -59,37 +56,37 @@ private Line createLineAndSwitches(SwitchKind switchKind, boolean isFictitious) createSwitch(getNetwork().getVoltageLevel("vl2"), "br22", "br22", switchKind, false, false, isFictitious, 0, 3); return getNetwork().newLine() - .setId("line1") - .setName("line1") - .setVoltageLevel1("vl1") - .setVoltageLevel2("vl2") - .setR(0.1) - .setX(10.0) - .setG1(0.0) - .setG2(0.0) - .setB1(0.0) - .setB2(0.0) - .setNode1(3) - .setNode2(3) - .add(); + .setId("line1") + .setName("line1") + .setVoltageLevel1("vl1") + .setVoltageLevel2("vl2") + .setR(0.1) + .setX(10.0) + .setG1(0.0) + .setG2(0.0) + .setB1(0.0) + .setB2(0.0) + .setNode1(3) + .setNode2(3) + .add(); } @Override protected ModificationInfos buildModification() { return OperatingStatusModificationInfos.builder() - .stashed(false) - .equipmentId(TARGET_LINE_ID) - .energizedVoltageLevelId("energizedVoltageLevelId") - .action(OperatingStatusModificationInfos.ActionType.LOCKOUT).build(); + .stashed(false) + .equipmentId(TARGET_LINE_ID) + .energizedVoltageLevelId("energizedVoltageLevelId") + .action(OperatingStatusModificationInfos.ActionType.LOCKOUT).build(); } @Override protected ModificationInfos buildModificationUpdate() { return OperatingStatusModificationInfos.builder() - .stashed(false) - .equipmentId(UPDATE_BRANCH_ID) - .energizedVoltageLevelId("energizedVoltageLevelId") - .action(OperatingStatusModificationInfos.ActionType.SWITCH_ON).build(); + .stashed(false) + .equipmentId(UPDATE_BRANCH_ID) + .energizedVoltageLevelId("energizedVoltageLevelId") + .action(OperatingStatusModificationInfos.ActionType.SWITCH_ON).build(); } @Override @@ -105,9 +102,9 @@ private void testLockoutLine(String lineID) throws Exception { assertNull(getNetwork().getLine(lineID).getExtension(OperatingStatus.class)); ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); + .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()); TestUtils.assertOperatingStatus(getNetwork(), lineID, TARGET_BRANCH_STATUS); } @@ -169,29 +166,32 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); assertNull(getNetwork().getLine("notFound")); - assertLogMessage(new NetworkModificationException(EQUIPMENT_NOT_FOUND, "notFound").getMessage(), - ERROR_MESSAGE_KEY, reportService); + assertLogMessage("Equipment not found: notFound", + ERROR_MESSAGE_KEY, reportService); // modification action empty modificationInfos.setEquipmentId("line2"); modificationInfos.setAction(null); modificationJson = getJsonBody(modificationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpectAll( - status().isBadRequest(), - content().string(new NetworkModificationException(OPERATING_ACTION_TYPE_EMPTY).getMessage()) - ); + .andExpect(result -> { + Throwable ex = result.getResolvedException(); + assertNotNull(ex); + assertEquals("Empty operating action type", ex.getMessage()); + }); + // modification action not existing // note: should never happen in real mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson.replace("LOCKOUT", "INVALID_ACTION")).contentType(MediaType.APPLICATION_JSON)) - .andExpect( - status().is4xxClientError()); + .andExpect( + status().isInternalServerError()); } @Override protected void testCreationModificationMessage(ModificationInfos modificationInfos) throws Exception { assertEquals("OPERATING_STATUS_MODIFICATION", modificationInfos.getMessageType()); - Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + Map createdValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { + }); assertEquals("energizedVoltageLevelId", createdValues.get("energizedVoltageLevelId")); assertEquals("LOCKOUT", createdValues.get("action")); assertEquals("line2", createdValues.get("equipmentId")); @@ -200,7 +200,8 @@ protected void testCreationModificationMessage(ModificationInfos modificationInf @Override protected void testUpdateModificationMessage(ModificationInfos modificationInfos) throws Exception { assertEquals("OPERATING_STATUS_MODIFICATION", modificationInfos.getMessageType()); - Map updatedValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { }); + Map updatedValues = mapper.readValue(modificationInfos.getMessageValues(), new TypeReference<>() { + }); assertEquals("energizedVoltageLevelId", updatedValues.get("energizedVoltageLevelId")); assertEquals("SWITCH_ON", updatedValues.get("action")); assertEquals("line1", updatedValues.get("equipmentId")); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInBusBreakerTest.java index b8f192b3a..587716dd9 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInBusBreakerTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.dto.ShuntCompensatorCreationInfos; @@ -24,7 +23,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -44,7 +42,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(shuntJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUS_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Bus notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInNodeBreakerTest.java index 437e92e0b..fe92d7c40 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreationInNodeBreakerTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.dto.ShuntCompensatorCreationInfos; @@ -25,7 +24,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; @@ -99,7 +97,7 @@ void testCreateWithError() throws Exception { String modificationToCreateJson = getJsonBody(modificationToCreate, null); mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(SHUNT_COMPENSATOR_ALREADY_EXISTS, "v5shunt").getMessage(), + assertLogMessage("Shunt compensator already exists: v5shunt", ERROR_MESSAGE_KEY, reportService); } @@ -111,7 +109,7 @@ void testCreateWithMaximumSectionCountError() throws Exception { String modificationToCreateJson = getJsonBody(modificationToCreate, null); mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_SHUNT_COMPENSATOR_ERROR, "Maximum section count should be greater or equal to 1").getMessage(), + assertLogMessage("Maximum section count should be greater or equal to 1", ERROR_MESSAGE_KEY, reportService); } @@ -124,7 +122,7 @@ void testCreateWithSectionError() throws Exception { String modificationToCreateJson = getJsonBody(modificationToCreate, null); mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_SHUNT_COMPENSATOR_ERROR, "Section count should be between 0 and Maximum section count (2), actual : 3").getMessage(), + assertLogMessage("Section count should be between 0 and Maximum section count (2), actual : 3", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java index 7143d97e1..3231e65f1 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java @@ -11,7 +11,6 @@ import com.powsybl.iidm.network.ShuntCompensatorLinearModel; import com.powsybl.iidm.network.VoltageLevel; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Test; @@ -22,8 +21,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.MODIFY_SHUNT_COMPENSATOR_ERROR; -import static org.gridsuite.modification.NetworkModificationException.Type.SHUNT_COMPENSATOR_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.NetworkUtil.createShuntCompensator; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; @@ -56,8 +53,7 @@ void testEquipmentWithWrongId() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(SHUNT_COMPENSATOR_NOT_FOUND, - "Shunt compensator wrong id does not exist in network").getMessage(), + assertLogMessage("Shunt compensator wrong id does not exist in network", ERROR_MESSAGE_KEY, reportService); } @@ -74,8 +70,7 @@ void testWrongMaximumSectionCount() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, - String.format("Maximum section count should be greater or equal to 1")).getMessage(), + assertLogMessage("Unable to modify shunt compensator: Maximum section count should be greater or equal to 1", ERROR_MESSAGE_KEY, reportService); } @@ -92,8 +87,7 @@ void testWrongSectionCount() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, - String.format("Section count should be between 0 and Maximum section count (1), actual : 3")).getMessage(), + assertLogMessage("Unable to modify shunt compensator: Section count should be between 0 and Maximum section count (1), actual : 3", ERROR_MESSAGE_KEY, reportService); } @@ -116,8 +110,7 @@ void testWrongSectionCountChangeSectionCount() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, - String.format("Section count should be between 0 and Maximum section count (1), actual : 3")).getMessage(), + assertLogMessage("Unable to modify shunt compensator: Section count should be between 0 and Maximum section count (1), actual : 3", ERROR_MESSAGE_KEY, reportService); } @@ -140,8 +133,7 @@ void testWrongSectionCountChangeMaximumSectionCount() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, - "Section count should be between 0 and Maximum section count (1), actual : -1").getMessage(), + assertLogMessage("Unable to modify shunt compensator: Section count should be between 0 and Maximum section count (1), actual : -1", ERROR_MESSAGE_KEY, reportService); } @@ -158,8 +150,7 @@ void testNegativeQmaxAtNominalV() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, - "Qmax at nominal voltage should be greater or equal to 0").getMessage(), + assertLogMessage("Unable to modify shunt compensator: Qmax at nominal voltage should be greater or equal to 0", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInBusBreakerTest.java index cf0d21e85..30777352e 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInBusBreakerTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.StaticVarCompensator; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.dto.StaticVarCompensatorCreationInfos; @@ -24,8 +23,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND; -import static org.gridsuite.modification.NetworkModificationException.Type.EQUIPMENT_NOT_FOUND; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -113,7 +110,7 @@ void testCreateWithBusBarSectionErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUS_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Bus notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); } @@ -128,7 +125,7 @@ void testCreateWithRegulatedTerminalError() throws Exception { String staticVarCompensatorInfosJson = getJsonBody(staticVarCompensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(staticVarCompensatorInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(EQUIPMENT_NOT_FOUND, "Equipment with id=test not found with type STATIC_VAR_COMPENSATOR").getMessage(), + assertLogMessage("Equipment with id=test not found with type STATIC_VAR_COMPENSATOR", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java index 2d3de2f87..4f1b1866d 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.StaticVarCompensator; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.dto.NetworkModificationsResult; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -25,7 +24,6 @@ import java.util.UUID; import static com.powsybl.iidm.network.StaticVarCompensator.RegulationMode.VOLTAGE; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -126,7 +124,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(STATIC_VAR_COMPENSATOR_ALREADY_EXISTS, "v5Compensator").getMessage(), + assertLogMessage("static var compensator already exists: v5Compensator", ERROR_MESSAGE_KEY, reportService); // not found voltage level @@ -135,7 +133,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, "notFoundVoltageLevelId").getMessage(), + assertLogMessage("Voltage level notFoundVoltageLevelId does not exist in network", ERROR_MESSAGE_KEY, reportService); // not found busbar section @@ -144,7 +142,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUSBAR_SECTION_NOT_FOUND, "notFoundBusbarSection").getMessage(), + assertLogMessage("Busbar section notFoundBusbarSection does not exist in network", ERROR_MESSAGE_KEY, reportService); // invalid min susceptance @@ -156,7 +154,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : StaticVarCompensator 'idStaticVarCompensator2' : minimum susceptance is not set", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : minimum susceptance is not set", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setMinSusceptance(200.0); compensatorCreationInfos.setMaxSusceptance(null); @@ -165,8 +163,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : maximum susceptance is not set", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : maximum susceptance is not set", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setMaxSusceptance(100.0); @@ -176,8 +173,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : maximum susceptance is expected to be greater than or equal to minimum susceptance", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : maximum susceptance is expected to be greater than or equal to minimum susceptance", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setMaxSusceptance(null); compensatorCreationInfos.setMinSusceptance(null); @@ -186,8 +182,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : maximum Q at nominal voltage is expected to be greater than or equal to minimum Q", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : maximum Q at nominal voltage is expected to be greater than or equal to minimum Q", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setMaxQAtNominalV(200.0); compensatorCreationInfos.setMinQAtNominalV(100.0); @@ -196,8 +191,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : Reactive power setpoint is not set", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : Reactive power setpoint is not set", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE); @@ -205,8 +199,7 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : Voltage setpoint is not set", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : Voltage setpoint is not set", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setEquipmentId("idStaticVarCompensator3"); compensatorCreationInfos.setEquipmentName("nameStaticVarCompensator3"); @@ -279,8 +272,7 @@ void testCreateWithStandbyAutomatonErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : q0 must be within the range of minimum Q and maximum Q", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : q0 must be within the range of minimum Q and maximum Q", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setMinQAtNominalV(null); compensatorCreationInfos.setMaxQAtNominalV(null); @@ -291,8 +283,7 @@ void testCreateWithStandbyAutomatonErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : b0 must be within the range of minimum susceptance and maximum susceptance", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : b0 must be within the range of minimum susceptance and maximum susceptance", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setRegulating(false); compensatorCreationInfos.setB0(250.0); @@ -302,8 +293,7 @@ void testCreateWithStandbyAutomatonErrors() throws Exception { compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("CREATE_STATIC_VAR_COMPENSATOR_ERROR : " + - "StaticVarCompensator 'idStaticVarCompensator2' : Standby is only supported in Voltage Regulation mode", + assertLogMessage("StaticVarCompensator 'idStaticVarCompensator2' : Standby is only supported in Voltage Regulation mode", ERROR_MESSAGE_KEY, reportService); compensatorCreationInfos.setRegulationMode(VOLTAGE); compensatorCreationInfos.setB0(null); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/SubstationModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/SubstationModificationTest.java index 6f35b171c..3eebbfa81 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/SubstationModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/SubstationModificationTest.java @@ -99,7 +99,7 @@ void testCreateWithErrors() throws Exception { String infosJson = getJsonBody(infos, null); mockMvc.perform(post(getNetworkModificationUri()).content(infosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage("SUBSTATION_NOT_FOUND : Substation unknown does not exist in network", ERROR_MESSAGE_KEY, reportService); + assertLogMessage("Substation unknown does not exist in network", ERROR_MESSAGE_KEY, reportService); } @Override diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java index a71225796..0c7baa5c1 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.PhaseTapChanger; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Tag; @@ -25,7 +24,6 @@ import java.util.Set; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*; import static org.gridsuite.modification.server.impacts.TestImpactUtils.testBranchCreationImpacts; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; @@ -295,7 +293,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(BUS_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Bus notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java index 2865af5f1..95368b20e 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.PhaseTapChanger; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Tag; @@ -304,7 +303,7 @@ void testCreateWithErrors() throws Exception { twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(NetworkModificationException.Type.BUSBAR_SECTION_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Busbar section notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java index 7d56d97c9..fc62cff1b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java @@ -12,7 +12,6 @@ import com.powsybl.iidm.network.PhaseTapChanger; import com.powsybl.iidm.network.TwoWindingsTransformer; import com.powsybl.iidm.network.extensions.ConnectablePosition; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.dto.NetworkModificationsResult; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -27,7 +26,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.TWO_WINDINGS_TRANSFORMER_ALREADY_EXISTS; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*; import static org.gridsuite.modification.server.impacts.TestImpactUtils.testBranchCreationImpacts; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; @@ -535,7 +533,7 @@ void testCreateWithErrors() throws Exception { twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(NetworkModificationException.Type.BUSBAR_SECTION_NOT_FOUND, "notFoundBus").getMessage(), + assertLogMessage("Busbar section notFoundBus does not exist in network", ERROR_MESSAGE_KEY, reportService); testNetworkModificationsCount(getGroupId(), 2); @@ -561,7 +559,7 @@ void testCreateWithErrors() throws Exception { twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(TWO_WINDINGS_TRANSFORMER_ALREADY_EXISTS, "trf1").getMessage(), + assertLogMessage("Two winding transformer already exists: trf1", ERROR_MESSAGE_KEY, reportService); testNetworkModificationsCount(getGroupId(), 4); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java index 4149f9c88..f57182a51 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java @@ -24,8 +24,6 @@ import java.util.*; -import static org.gridsuite.modification.NetworkModificationException.Type.MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR; -import static org.gridsuite.modification.NetworkModificationException.Type.TWO_WINDINGS_TRANSFORMER_NOT_FOUND; import static org.gridsuite.modification.dto.AttributeModification.toAttributeModification; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE1; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE2; @@ -319,7 +317,7 @@ void testCreateWithErrors() throws Exception { .content(modificationInfosJson) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(TWO_WINDINGS_TRANSFORMER_NOT_FOUND, "Two windings transformer '2wt_not_existing' : it does not exist in the network").getMessage(), + assertLogMessage("Two windings transformer '2wt_not_existing' : it does not exist in the network", ERROR_MESSAGE_KEY, reportService); } @@ -717,7 +715,7 @@ void testPhaseTapChangerRegulationModification2() throws Exception { // modification 1 assert runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToModifyJson1).contentType(MediaType.APPLICATION_JSON), status().isOk()); - assertLogMessage(new NetworkModificationException(MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation value is missing when modifying, phase tap changer can not regulate").getMessage(), + assertLogMessage("Two winding transformer modification error: Regulation value is missing when modifying, phase tap changer can not regulate", ERROR_MESSAGE_KEY, reportService); } @@ -767,7 +765,7 @@ private void changeConnectionState(TwoWindingsTransformer existingEquipment, Two // change not applied assertThat(terminal.isConnected()).isNotEqualTo(expectedState); assertEquals(NetworkModificationResult.ApplicationStatus.WITH_ERRORS, extractApplicationStatus(networkModificationsResult).getFirst()); - assertLogMessage("BRANCH_MODIFICATION_ERROR : " + errorMessage, ERROR_MESSAGE_KEY, reportService); + assertLogMessage(errorMessage, ERROR_MESSAGE_KEY, reportService); } else { // connection state has changed as expected assertThat(terminal.isConnected()).isEqualTo(expectedState); @@ -835,12 +833,12 @@ void testProcessPhaseTapChangerCreation() { AttributeModification regulatingModification = new AttributeModification<>(true, OperationType.SET); String message = assertThrows(NetworkModificationException.class, () -> processPhaseTapRegulation(null, adder, false, null, regulationValueModification, null, regulatingModification, regulationReports)).getMessage(); - assertEquals("CREATE_TWO_WINDINGS_TRANSFORMER_ERROR : Regulation mode is missing when creating tap phase changer with regulation enabled", message); + assertEquals("Two winding transformer creation error: Regulation mode is missing when creating tap phase changer with regulation enabled", message); AttributeModification regulationModeModification = new AttributeModification<>(PhaseTapChanger.RegulationMode.CURRENT_LIMITER, OperationType.SET); String message2 = assertThrows(NetworkModificationException.class, () -> processPhaseTapRegulation(null, adder, false, regulationModeModification, null, null, regulatingModification, regulationReports)).getMessage(); - assertEquals("CREATE_TWO_WINDINGS_TRANSFORMER_ERROR : Regulation value is missing when creating tap phase changer with regulation enabled", message2); + assertEquals("Two winding transformer creation error: Regulation value is missing when creating tap phase changer with regulation enabled", message2); processPhaseTapRegulation(null, adder, false, new AttributeModification<>(PhaseTapChanger.RegulationMode.CURRENT_LIMITER, OperationType.SET), null, null, null, regulationReports); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java index 7fe831cd4..0e9842e16 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java @@ -9,7 +9,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.SwitchKind; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.CouplingDeviceInfos; import org.gridsuite.modification.dto.FreePropertyInfos; import org.gridsuite.modification.dto.ModificationInfos; @@ -26,7 +25,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -105,7 +103,7 @@ void testCreateWithErrors() throws Exception { String vliJson = getJsonBody(vli, null); mockMvc.perform(post(getNetworkModificationUri()).content(vliJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(SUBSTATION_NOT_FOUND, "absent_station").getMessage(), + assertLogMessage("Substation absent_station does not exist in network", ERROR_MESSAGE_KEY, reportService); vli = (VoltageLevelCreationInfos) buildModification(); @@ -115,7 +113,7 @@ void testCreateWithErrors() throws Exception { mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_VOLTAGE_LEVEL_ERROR, "Coupling between same bus bar section is not allowed").getMessage(), + assertLogMessage("Coupling between same bus bar section is not allowed", ERROR_MESSAGE_KEY, reportService); vli = (VoltageLevelCreationInfos) buildModification(); @@ -124,7 +122,7 @@ void testCreateWithErrors() throws Exception { vliJsonObject = getJsonBody(vli, null); mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_VOLTAGE_LEVEL_ERROR, "IpMax is required").getMessage(), + assertLogMessage("IpMax is required", ERROR_MESSAGE_KEY, reportService); vli = (VoltageLevelCreationInfos) buildModificationUpdate(); @@ -141,7 +139,7 @@ void testCreateWithErrors() throws Exception { vliJsonObject = getJsonBody(vli, null); mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_ALREADY_EXISTS, "v1").getMessage(), + assertLogMessage("Voltage level v1 already exists", ERROR_MESSAGE_KEY, reportService); } @@ -206,7 +204,7 @@ private void testIccWithError(Double ipMin, Double ipMax, String reportError) th .andExpect(status().isOk()); // VL could not have been created assertNull(getNetwork().getVoltageLevel("vl_ko")); - assertLogMessage(new NetworkModificationException(CREATE_VOLTAGE_LEVEL_ERROR, reportError).getMessage(), ERROR_MESSAGE_KEY, reportService); + assertLogMessage(reportError, ERROR_MESSAGE_KEY, reportService); } @Test diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java index 85f0f5653..397f502d3 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java @@ -11,7 +11,6 @@ import com.powsybl.iidm.network.VoltageLevel; import com.powsybl.iidm.network.extensions.IdentifiableShortCircuit; import com.powsybl.iidm.network.extensions.IdentifiableShortCircuitAdder; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Tag; @@ -23,7 +22,6 @@ import java.util.Map; import java.util.UUID; -import static org.gridsuite.modification.NetworkModificationException.Type.MODIFY_VOLTAGE_LEVEL_ERROR; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; @@ -153,7 +151,7 @@ private void testIpMinIpMaxNotChanged(Double ipMin, Double ipMax, String reportE assertNotNull(identifiableShortCircuit1); assertEquals(beforeUpdateIpMin, identifiableShortCircuit1.getIpMin(), 0); assertEquals(beforeUpdateIpMax, identifiableShortCircuit1.getIpMax(), 0); - assertLogMessage(new NetworkModificationException(MODIFY_VOLTAGE_LEVEL_ERROR, reportError).getMessage(), ERROR_MESSAGE_KEY, reportService); + assertLogMessage(reportError, ERROR_MESSAGE_KEY, reportService); } @Test @@ -218,7 +216,7 @@ void testSetIpMinOnEquipmentWithoutExtension() throws Exception { VoltageLevel voltageLevelUpdated = getNetwork().getVoltageLevel(vlWithNoIcc); assertNotNull(voltageLevelUpdated); assertNull(voltageLevelUpdated.getExtension(IdentifiableShortCircuit.class)); - assertLogMessage(new NetworkModificationException(MODIFY_VOLTAGE_LEVEL_ERROR, "IpMax is required").getMessage(), ERROR_MESSAGE_KEY, reportService); + assertLogMessage("IpMax is required", ERROR_MESSAGE_KEY, reportService); } @Test diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java index d58048b0d..4f3a5418d 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java @@ -11,7 +11,6 @@ import com.powsybl.iidm.network.extensions.ConnectablePosition; import com.powsybl.iidm.network.extensions.HvdcAngleDroopActivePowerControl; import com.powsybl.iidm.network.extensions.HvdcOperatorActivePowerRange; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Test; @@ -23,7 +22,6 @@ import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.modifications.VscModification.ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; @@ -231,7 +229,7 @@ void testCreateWithErrors() throws Exception { vscCreationInfosJson = getJsonBody(vscCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, "notFoundVoltageLevelId").getMessage(), + assertLogMessage("Voltage level notFoundVoltageLevelId does not exist in network", ERROR_MESSAGE_KEY, reportService); // invalid min max reactive limit @@ -245,7 +243,7 @@ void testCreateWithErrors() throws Exception { vscCreationInfosJson = getJsonBody(vscCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_VSC_ERROR, "Vsc 'vsc1' : minimum reactive power is not set").getMessage(), + assertLogMessage("Vsc 'vsc1' : minimum reactive power is not set", ERROR_MESSAGE_KEY, reportService); vscCreationInfos = (VscCreationInfos) buildModification(); @@ -258,7 +256,7 @@ void testCreateWithErrors() throws Exception { vscCreationInfosJson = getJsonBody(vscCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_VSC_ERROR, "Vsc 'vsc1' : maximum reactive power is not set").getMessage(), + assertLogMessage("Vsc 'vsc1' : maximum reactive power is not set", ERROR_MESSAGE_KEY, reportService); vscCreationInfos = (VscCreationInfos) buildModification(); @@ -272,7 +270,7 @@ void testCreateWithErrors() throws Exception { vscCreationInfosJson = getJsonBody(vscCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_VSC_ERROR, "Vsc 'vsc1' : maximum reactive power is expected to be greater than or equal to minimum reactive power").getMessage(), + assertLogMessage("Vsc 'vsc1' : maximum reactive power is expected to be greater than or equal to minimum reactive power", ERROR_MESSAGE_KEY, reportService); // invalid reactive capability curve limit @@ -285,7 +283,7 @@ void testCreateWithErrors() throws Exception { vscCreationInfosJson = getJsonBody(vscCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(CREATE_VSC_ERROR, "Vsc 'vsc1' : P is not set in a reactive capability curve limits point").getMessage(), + assertLogMessage("Vsc 'vsc1' : P is not set in a reactive capability curve limits point", ERROR_MESSAGE_KEY, reportService); // try to create an existing vsc @@ -294,7 +292,7 @@ void testCreateWithErrors() throws Exception { vscCreationInfosJson = getJsonBody(vscCreationInfos, null); mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(HVDC_LINE_ALREADY_EXISTS, "hvdcLine").getMessage(), + assertLogMessage("HVDC line already exists: hvdcLine", ERROR_MESSAGE_KEY, reportService); } @@ -372,8 +370,7 @@ private void checkDroopWithAbsentInfos(VscCreationInfos vscCreationInfos) throws .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(new NetworkModificationException(WRONG_HVDC_ANGLE_DROOP_ACTIVE_POWER_CONTROL, - ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG).getMessage(), + assertLogMessage(ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG, ERROR_MESSAGE_KEY, reportService); } } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VscModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VscModificationTest.java index 8ff2ee58b..b80a21cc2 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VscModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VscModificationTest.java @@ -26,7 +26,6 @@ import java.util.stream.IntStream; import static org.assertj.core.api.Assertions.assertThat; -import static org.gridsuite.modification.NetworkModificationException.Type.WRONG_HVDC_ANGLE_DROOP_ACTIVE_POWER_CONTROL; import static org.gridsuite.modification.modifications.VscModification.ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG; import static org.junit.jupiter.api.Assertions.*; /** @@ -276,8 +275,7 @@ private static void checkDroopWithAbsentInfos(VscModificationInfos modificationI String message = assertThrows(NetworkModificationException.class, () -> vscModification.check(networkWithoutExt)) .getMessage(); - assertThat(message).isEqualTo(WRONG_HVDC_ANGLE_DROOP_ACTIVE_POWER_CONTROL.name() + " : " - + ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG); + assertEquals(ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG, message); } @Test diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java index 5ee834c23..1665695f0 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java @@ -89,7 +89,7 @@ public void specificSetUp() { public void testByModificationError() throws Exception { //Test with modification = null mockMvc.perform(post(getNetworkModificationUri()).content(mapper.writeValueAsString(null)).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + .andExpect(status().isInternalServerError()); // Test with empty list of assignment checkCreationApplicationStatus(List.of(), NetworkModificationResult.ApplicationStatus.WITH_ERRORS); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java index 4995538c9..224513739 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java @@ -133,7 +133,7 @@ void testCreateAllFiltersWrong() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()); - assertLogMessage(byFilterDeletionInfos.getErrorType().name() + ": There is no valid equipment ID among the provided filter(s)", + assertLogMessage("There is no valid equipment ID among the provided filter(s)", "network.modification.invalidFilters", reportService); wireMockUtils.verifyGetRequest(stubId, PATH, handleQueryParams(filters.stream().map(AbstractFilter::getId).collect(Collectors.toList())), false); } diff --git a/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java b/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java index e9ed0f7fd..12b30e2ae 100644 --- a/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java +++ b/src/test/java/org/gridsuite/modification/server/service/EquipmentInfosServiceTests.java @@ -271,7 +271,7 @@ void testUnsupportedHybridHvdc() { Network network = NetworkCreation.create(NETWORK_UUID, true); HvdcLine hvdcLine = network.getHvdcLine("hvdcLine"); String errorMessage = assertThrows(NetworkModificationException.class, () -> EquipmentInfos.getEquipmentTypeName(hvdcLine)).getMessage(); - assertEquals(NetworkModificationException.createHybridHvdcUnsupported(hvdcLine.getId()).getMessage(), errorMessage); + assertEquals("The hybrid Hvdc line hvdcLine is unsupported", errorMessage); } @Test diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java index 747fa11eb..4006137eb 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java @@ -10,7 +10,6 @@ import com.powsybl.iidm.network.extensions.ConnectablePosition; import com.vladmihalcea.sql.SQLStatementCountValidator; import org.gridsuite.modification.ModificationType; -import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.*; import org.gridsuite.modification.dto.tabular.TabularModificationInfos; import org.gridsuite.modification.server.entities.ModificationEntity; @@ -20,6 +19,8 @@ import org.gridsuite.modification.server.entities.equipment.modification.attribute.DoubleModificationEmbedded; import org.gridsuite.modification.server.entities.equipment.modification.attribute.EnumModificationEmbedded; import org.gridsuite.modification.server.entities.equipment.modification.attribute.IAttributeModificationEmbeddable; +import org.gridsuite.modification.server.error.NetworkModificationGroupNotFoundException; +import org.gridsuite.modification.server.error.NetworkModificationServerException; import org.gridsuite.modification.server.repositories.ModificationGroupRepository; import org.gridsuite.modification.server.repositories.ModificationRepository; import org.gridsuite.modification.server.repositories.NetworkModificationRepository; @@ -34,7 +35,6 @@ import java.util.stream.Collectors; import static com.powsybl.iidm.network.StaticVarCompensator.RegulationMode.VOLTAGE; -import static org.gridsuite.modification.NetworkModificationException.Type.*; import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*; import static org.gridsuite.modification.dto.VoltageRegulationType.DISTANT; import static org.gridsuite.modification.server.utils.TestUtils.assertRequestsCount; @@ -127,8 +127,8 @@ private VoltageInitModificationInfos getVoltageInitModification(UUID modificatio @Test void test() { assertEquals(List.of(), this.networkModificationRepository.getModificationGroupsUuids()); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); assertEquals(0, networkModificationRepository.getModifications(TEST_GROUP_ID, true, false).size()); var nullModifEntity = ModificationEntity.fromDTO(EquipmentAttributeModificationInfos.builder().equipmentId("id0").equipmentAttributeName("attribute").equipmentAttributeValue(null).equipmentType(IdentifiableType.VOLTAGE_LEVEL).build()); @@ -169,8 +169,8 @@ void test() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertEquals(0, modificationRepository.findAll().size()); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -210,8 +210,8 @@ void testGetModificationQueryCount() { assertRequestsCount(1, 0, 0, 0); // Non-existent modification uuid - assertThrows(NetworkModificationException.class, () -> getEquipmentAttributeModification(TEST_GROUP_ID), - new NetworkModificationException(MODIFICATION_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationServerException exception = assertThrows(NetworkModificationServerException.class, () -> getEquipmentAttributeModification(TEST_GROUP_ID)); + assertEquals("Modification not found: 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -229,8 +229,9 @@ void testDeleteModificationQueryCount() { assertRequestsCount(5, 0, 1, 3); // Non-existent group modification uuid - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); + } @Test @@ -267,8 +268,8 @@ void testLoadCreation() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(5, 0, 1, 3); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -348,8 +349,8 @@ void testGeneratorCreation() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(5, 0, 1, 4); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -398,8 +399,8 @@ void testShuntCompensatorCreation() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(5, 0, 1, 3); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -478,8 +479,8 @@ void testLineCreation() { // https://github.com/jdbc-observations/datasource-proxy/issues/123 assertRequestsCount(10, 0, 1); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -663,8 +664,8 @@ void testMoveModificationsBetweenMoreThanTwoGroups() { SQLStatementCountValidator.reset(); List modificationsToMoveUuid2 = List.of(groovyScriptEntity2.getId()); UUID referenceNodeUuid = groovyScriptEntity2.getId(); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.moveModifications(TEST_GROUP_ID_2, TEST_GROUP_ID, modificationsToMoveUuid2, referenceNodeUuid), - new NetworkModificationException(MOVE_MODIFICATION_ERROR).getMessage()); + NetworkModificationServerException exception = assertThrows(NetworkModificationServerException.class, () -> networkModificationRepository.moveModifications(TEST_GROUP_ID_2, TEST_GROUP_ID, modificationsToMoveUuid2, referenceNodeUuid)); + assertEquals("Insert modification error", exception.getMessage()); assertRequestsCount(5, 0, 0, 0); var modification1 = networkModificationRepository.getModifications(TEST_GROUP_ID, true, true); @@ -717,8 +718,8 @@ void testGroovyScript() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(4, 0, 1, 3); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -770,8 +771,8 @@ void testSubstationCreation() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(5, 0, 1, 4); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -806,8 +807,8 @@ void testVoltageLevelCreation() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(2, 0, 0, 1); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } private static VoltageLevelCreationInfos makeAVoltageLevelInfos() { @@ -911,8 +912,8 @@ void testLineSplitWithVoltageLevel() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(2, 0, 0, 1); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -973,8 +974,8 @@ void testLineAttachToVoltageLevel() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(2, 0, 0, 1); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -1023,8 +1024,8 @@ void testLinesAttachToSplitLines() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(2, 0, 0, 1); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -1091,8 +1092,8 @@ void testDeleteAttachingLine() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(2, 0, 0, 1); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test @@ -1133,8 +1134,8 @@ void testDeleteVoltageLevelOnLine() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(2, 0, 0, 1); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } private static void testModificationEmbedded(IAttributeModificationEmbeddable modification, T val) { @@ -1392,8 +1393,8 @@ void testStaticVarCompensatorCreation() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); assertRequestsCount(5, 0, 1, 3); - assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), - new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); + NetworkModificationGroupNotFoundException exception = assertThrows(NetworkModificationGroupNotFoundException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true)); + assertEquals("Modification Group not found 7928181c-7977-4592-ba19-88027e4254e4", exception.getMessage()); } @Test