From 4eca07afc6f3c53a572ecbb785bed41ff408cab2 Mon Sep 17 00:00:00 2001 From: Franck LECUYER Date: Fri, 13 Feb 2026 17:45:23 +0100 Subject: [PATCH] Add owner, creation date, last modification date and last modification user to the process configs Signed-off-by: Franck LECUYER --- monitor-commons/pom.xml | 7 ++ .../commons/AbstractProcessConfig.java | 45 +++++++++++++ .../gridsuite/monitor/commons/Constants.java | 18 +++++ .../monitor/commons/ProcessConfig.java | 16 ++++- .../commons/SecurityAnalysisConfig.java | 33 ++++++++-- .../commons/SecurityAnalysisConfigTest.java | 51 ++++++++++++++ .../server/controllers/MonitorController.java | 4 +- .../controllers/ProcessConfigController.java | 13 ++-- .../entities/AbstractProcessConfigEntity.java | 15 +++++ .../SecurityAnalysisConfigEntity.java | 2 + .../mapper/SecurityAnalysisConfigMapper.java | 31 +++++++-- .../server/services/ProcessConfigService.java | 9 +-- .../changesets/changelog_20260216T104242Z.xml | 31 +++++++++ .../db/changelog/db.changelog-master.yaml | 4 +- .../server/MonitorIntegrationTest.java | 24 +++++-- .../controllers/MonitorControllerTest.java | 8 ++- .../ProcessConfigControllerTest.java | 30 ++++++--- .../ProcessConfigRepositoryTest.java | 66 +++++++++++++++++++ .../server/services/MonitorServiceTest.java | 3 +- .../services/NotificationServiceTest.java | 4 +- .../services/ProcessConfigServiceTest.java | 48 ++++++++++---- .../commons/steps/ApplyModificationsStep.java | 2 +- .../SecurityAnalysisRunComputationStep.java | 4 +- .../steps/ApplyModificationsStepTest.java | 2 +- ...ecurityAnalysisRunComputationStepTest.java | 4 +- 25 files changed, 409 insertions(+), 65 deletions(-) create mode 100644 monitor-commons/src/main/java/org/gridsuite/monitor/commons/AbstractProcessConfig.java create mode 100644 monitor-commons/src/main/java/org/gridsuite/monitor/commons/Constants.java create mode 100644 monitor-commons/src/test/java/org/gridsuite/monitor/commons/SecurityAnalysisConfigTest.java create mode 100644 monitor-server/src/main/resources/db/changelog/changesets/changelog_20260216T104242Z.xml create mode 100644 monitor-server/src/test/java/org/gridsuite/monitor/server/repositories/ProcessConfigRepositoryTest.java diff --git a/monitor-commons/pom.xml b/monitor-commons/pom.xml index a09e1147..2c279db6 100644 --- a/monitor-commons/pom.xml +++ b/monitor-commons/pom.xml @@ -23,5 +23,12 @@ com.fasterxml.jackson.core jackson-annotations + + + + org.springframework.boot + spring-boot-starter-test + test + diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/AbstractProcessConfig.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/AbstractProcessConfig.java new file mode 100644 index 00000000..c6714ed8 --- /dev/null +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/AbstractProcessConfig.java @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2026, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.monitor.commons; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; + +import java.time.Instant; +import java.util.List; +import java.util.UUID; + +/** + * @author Franck Lecuyer + */ +@Getter +public abstract class AbstractProcessConfig implements ProcessConfig { + @JsonProperty(required = true) + private final List modificationUuids; + + private final String owner; + + private final Instant creationDate; + + private final Instant lastModificationDate; + + private final String lastModifiedBy; + + protected AbstractProcessConfig( + List modificationUuids, + String owner, + Instant creationDate, + Instant lastModificationDate, + String lastModifiedBy + ) { + this.modificationUuids = modificationUuids != null ? List.copyOf(modificationUuids) : null; + this.owner = owner; + this.creationDate = creationDate; + this.lastModificationDate = lastModificationDate; + this.lastModifiedBy = lastModifiedBy; + } +} diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/Constants.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/Constants.java new file mode 100644 index 00000000..10e3ffe7 --- /dev/null +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/Constants.java @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2026, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.monitor.commons; + +/** + * @author Franck Lecuyer + */ +public final class Constants { + + private Constants() { + } + + public static final String HEADER_USER_ID = "userId"; +} diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java index 419e426f..7c16b39b 100644 --- a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java @@ -6,9 +6,11 @@ */ package org.gridsuite.monitor.commons; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; +import java.time.Instant; import java.util.List; import java.util.UUID; @@ -25,5 +27,17 @@ public interface ProcessConfig { ProcessType processType(); - List modificationUuids(); + List getModificationUuids(); + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + String getOwner(); + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + Instant getCreationDate(); + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + Instant getLastModificationDate(); + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + String getLastModifiedBy(); } diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java index 6e405e8c..983736e9 100644 --- a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java @@ -6,20 +6,43 @@ */ package org.gridsuite.monitor.commons; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.EqualsAndHashCode; +import lombok.Getter; + +import java.time.Instant; import java.util.List; import java.util.UUID; /** * @author Antoine Bouhours */ -public record SecurityAnalysisConfig( - UUID parametersUuid, - List contingencies, - List modificationUuids -) implements ProcessConfig { +@Getter +@EqualsAndHashCode(callSuper = true) +public class SecurityAnalysisConfig extends AbstractProcessConfig { + @JsonProperty(required = true) + private final UUID parametersUuid; + + @JsonProperty(required = true) + private final List contingencies; + + public SecurityAnalysisConfig( + UUID parametersUuid, + List contingencies, + List modificationUuids, + String owner, + Instant creationDate, + Instant lastModificationDate, + String lastModifiedBy + ) { + super(modificationUuids, owner, creationDate, lastModificationDate, lastModifiedBy); + this.parametersUuid = parametersUuid; + this.contingencies = contingencies != null ? List.copyOf(contingencies) : null; + } @Override public ProcessType processType() { return ProcessType.SECURITY_ANALYSIS; } } + diff --git a/monitor-commons/src/test/java/org/gridsuite/monitor/commons/SecurityAnalysisConfigTest.java b/monitor-commons/src/test/java/org/gridsuite/monitor/commons/SecurityAnalysisConfigTest.java new file mode 100644 index 00000000..e5684439 --- /dev/null +++ b/monitor-commons/src/test/java/org/gridsuite/monitor/commons/SecurityAnalysisConfigTest.java @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2026, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.monitor.commons; + +import org.junit.jupiter.api.Test; + +import java.time.Instant; +import java.util.List; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Franck Lecuyer + */ +class SecurityAnalysisConfigTest { + + @Test + void createSecurityAnalysisConfig() { + UUID parametersUuid = UUID.randomUUID(); + UUID modificationUuid = UUID.randomUUID(); + List contingencies = List.of("contingency1", "contingency2"); + String owner = "user1"; + Instant creationDate = Instant.now(); + Instant lastModificationDate = Instant.now().plusSeconds(60); + String lastModifiedBy = "user2"; + + SecurityAnalysisConfig config = new SecurityAnalysisConfig( + parametersUuid, + contingencies, + List.of(modificationUuid), + owner, + creationDate, + lastModificationDate, + lastModifiedBy + ); + + assertThat(config.getParametersUuid()).isEqualTo(parametersUuid); + assertThat(config.getContingencies()).isEqualTo(contingencies); + assertThat(config.getModificationUuids()).containsExactly(modificationUuid); + assertThat(config.getOwner()).isEqualTo(owner); + assertThat(config.getCreationDate()).isEqualTo(creationDate); + assertThat(config.getLastModificationDate()).isEqualTo(lastModificationDate); + assertThat(config.getLastModifiedBy()).isEqualTo(lastModifiedBy); + assertThat(config.processType()).isEqualTo(ProcessType.SECURITY_ANALYSIS); + } +} diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java index 65ec8bc0..f6f643d5 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java @@ -23,6 +23,8 @@ import java.util.List; import java.util.UUID; +import static org.gridsuite.monitor.commons.Constants.HEADER_USER_ID; + /** * @author Antoine Bouhours */ @@ -33,8 +35,6 @@ public class MonitorController { private final MonitorService monitorService; - public static final String HEADER_USER_ID = "userId"; - public MonitorController(MonitorService monitorService) { this.monitorService = monitorService; } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java index 2b4e9c3e..e211b1b2 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/ProcessConfigController.java @@ -21,12 +21,15 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Optional; import java.util.UUID; +import static org.gridsuite.monitor.commons.Constants.HEADER_USER_ID; + /** * @author Franck Lecuyer */ @@ -46,8 +49,9 @@ public ProcessConfigController(ProcessConfigService processConfigService) { @Operation(summary = "Create process config") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "process config was created")}) - public ResponseEntity createProcessConfig(@RequestBody ProcessConfig processConfig) { - return ResponseEntity.ok().body(processConfigService.createProcessConfig(processConfig)); + public ResponseEntity createProcessConfig(@RequestBody ProcessConfig processConfig, + @RequestHeader(HEADER_USER_ID) String userId) { + return ResponseEntity.ok().body(processConfigService.createProcessConfig(processConfig, userId)); } @GetMapping(value = "/{uuid}", produces = MediaType.APPLICATION_JSON_VALUE) @@ -68,8 +72,9 @@ public ResponseEntity getProcessConfig( @ApiResponse(responseCode = "404", description = "process config was not found")}) public ResponseEntity updateProcessConfig( @Parameter(description = "process config UUID") @PathVariable("uuid") UUID processConfigUuid, - @RequestBody ProcessConfig processConfig) { - return processConfigService.updateProcessConfig(processConfigUuid, processConfig) ? + @RequestBody ProcessConfig processConfig, + @RequestHeader(HEADER_USER_ID) String userId) { + return processConfigService.updateProcessConfig(processConfigUuid, processConfig, userId) ? ResponseEntity.ok().build() : ResponseEntity.notFound().build(); } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/AbstractProcessConfigEntity.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/AbstractProcessConfigEntity.java index 0a4e6f3c..c189abf5 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/AbstractProcessConfigEntity.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/AbstractProcessConfigEntity.java @@ -25,10 +25,12 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.experimental.SuperBuilder; import org.gridsuite.monitor.commons.ProcessType; import java.util.List; import java.util.UUID; +import java.time.Instant; import static jakarta.persistence.DiscriminatorType.STRING; @@ -43,6 +45,7 @@ @AllArgsConstructor @Getter @Setter +@SuperBuilder public abstract class AbstractProcessConfigEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) @@ -57,6 +60,18 @@ public abstract class AbstractProcessConfigEntity { @OrderColumn(name = "pos_modifications") private List modificationUuids; + @Column(name = "owner", length = 80, nullable = false) + private String owner; + + @Column(name = "creation_date", nullable = false) + private Instant creationDate; + + @Column(name = "last_modification_date", nullable = false) + private Instant lastModificationDate; + + @Column(name = "last_modified_by", length = 80, nullable = false) + private String lastModifiedBy; + public abstract ProcessType getType(); } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/SecurityAnalysisConfigEntity.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/SecurityAnalysisConfigEntity.java index 59b924d8..78bd1ad6 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/SecurityAnalysisConfigEntity.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/SecurityAnalysisConfigEntity.java @@ -21,6 +21,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.experimental.SuperBuilder; import org.gridsuite.monitor.commons.ProcessType; import java.util.List; @@ -37,6 +38,7 @@ @AllArgsConstructor @Getter @Setter +@SuperBuilder public class SecurityAnalysisConfigEntity extends AbstractProcessConfigEntity { @Column(name = "parameters_uuid") private UUID parametersUuid; diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/SecurityAnalysisConfigMapper.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/SecurityAnalysisConfigMapper.java index 0330f74d..b03b8dc7 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/SecurityAnalysisConfigMapper.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/SecurityAnalysisConfigMapper.java @@ -9,14 +9,24 @@ import org.gridsuite.monitor.commons.SecurityAnalysisConfig; import org.gridsuite.monitor.server.entities.SecurityAnalysisConfigEntity; +import java.time.Instant; + /** * @author Franck Lecuyer */ @SuppressWarnings("checkstyle:HideUtilityClassConstructor") public class SecurityAnalysisConfigMapper { - public static SecurityAnalysisConfigEntity toEntity(SecurityAnalysisConfig dto) { + public static SecurityAnalysisConfigEntity toEntity(SecurityAnalysisConfig dto, String owner) { SecurityAnalysisConfigEntity entity = new SecurityAnalysisConfigEntity(); - update(entity, dto); + entity.setOwner(owner); + entity.setLastModifiedBy(owner); + Instant now = Instant.now(); + entity.setCreationDate(now); + + entity.setLastModificationDate(now); + entity.setParametersUuid(dto.getParametersUuid()); + entity.setContingencies(dto.getContingencies()); + entity.setModificationUuids(dto.getModificationUuids()); return entity; } @@ -24,13 +34,20 @@ public static SecurityAnalysisConfig toDto(SecurityAnalysisConfigEntity entity) return new SecurityAnalysisConfig( entity.getParametersUuid(), entity.getContingencies(), - entity.getModificationUuids() + entity.getModificationUuids(), + entity.getOwner(), + entity.getCreationDate(), + entity.getLastModificationDate(), + entity.getLastModifiedBy() ); } - public static void update(SecurityAnalysisConfigEntity entity, SecurityAnalysisConfig dto) { - entity.setParametersUuid(dto.parametersUuid()); - entity.setContingencies(dto.contingencies()); - entity.setModificationUuids(dto.modificationUuids()); + public static void update(SecurityAnalysisConfigEntity entity, SecurityAnalysisConfig dto, String userId) { + entity.setLastModifiedBy(userId); + entity.setLastModificationDate(Instant.now()); + + entity.setParametersUuid(dto.getParametersUuid()); + entity.setContingencies(dto.getContingencies()); + entity.setModificationUuids(dto.getModificationUuids()); } } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/ProcessConfigService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/ProcessConfigService.java index 22ea3a7e..d5f048cb 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/ProcessConfigService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/ProcessConfigService.java @@ -30,9 +30,9 @@ public ProcessConfigService(ProcessConfigRepository processConfigRepository) { } @Transactional - public UUID createProcessConfig(ProcessConfig processConfig) { + public UUID createProcessConfig(ProcessConfig processConfig, String userId) { AbstractProcessConfigEntity entity = switch (processConfig) { - case SecurityAnalysisConfig sac -> SecurityAnalysisConfigMapper.toEntity(sac); + case SecurityAnalysisConfig sac -> SecurityAnalysisConfigMapper.toEntity(sac, userId); default -> throw new IllegalArgumentException("Unsupported process config type: " + processConfig.processType()); }; return processConfigRepository.save(entity).getId(); @@ -48,15 +48,16 @@ public Optional getProcessConfig(UUID processConfigUuid) { } @Transactional - public boolean updateProcessConfig(UUID processConfigUuid, ProcessConfig processConfig) { + public boolean updateProcessConfig(UUID processConfigUuid, ProcessConfig processConfig, String userId) { return processConfigRepository.findById(processConfigUuid) .map(entity -> { if (entity.getType() != processConfig.processType()) { throw new IllegalArgumentException("Process config type mismatch : " + entity.getType()); } + switch (processConfig) { case SecurityAnalysisConfig sac -> - SecurityAnalysisConfigMapper.update((SecurityAnalysisConfigEntity) entity, sac); + SecurityAnalysisConfigMapper.update((SecurityAnalysisConfigEntity) entity, sac, userId); default -> throw new IllegalArgumentException("Unsupported process config type: " + processConfig.processType()); } return true; diff --git a/monitor-server/src/main/resources/db/changelog/changesets/changelog_20260216T104242Z.xml b/monitor-server/src/main/resources/db/changelog/changesets/changelog_20260216T104242Z.xml new file mode 100644 index 00000000..91e527ef --- /dev/null +++ b/monitor-server/src/main/resources/db/changelog/changesets/changelog_20260216T104242Z.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml b/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml index 44dd6086..2e91f2da 100644 --- a/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml @@ -8,4 +8,6 @@ databaseChangeLog: - include: file: changesets/changelog_20260130T160426Z.xml relativeToChangelogFile: true - + - include: + file: changesets/changelog_20260216T104242Z.xml + relativeToChangelogFile: true diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/MonitorIntegrationTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/MonitorIntegrationTest.java index 3111c7c3..12f0463a 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/MonitorIntegrationTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/MonitorIntegrationTest.java @@ -101,7 +101,8 @@ void securityAnalysisProcessIT() throws Exception { SecurityAnalysisConfig securityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID())); + List.of(UUID.randomUUID()), + null, null, null, null); UUID executionId = monitorService.executeProcess(caseUuid, userId, securityAnalysisConfig); // Verify message was published @@ -150,6 +151,7 @@ void securityAnalysisProcessIT() throws Exception { // Verify both steps were added to database with correct data execution = executionRepository.findById(executionId).orElse(null); + assertThat(execution).isNotNull(); assertThat(execution.getSteps()).hasSize(2); assertThat(execution.getSteps().get(0).getId()).isEqualTo(stepId0); assertThat(execution.getSteps().get(0).getStatus()).isEqualTo(StepStatus.COMPLETED); @@ -172,6 +174,7 @@ void securityAnalysisProcessIT() throws Exception { // Verify final state persisted execution = executionRepository.findById(executionId).orElse(null); + assertThat(execution).isNotNull(); assertThat(execution.getStatus()).isEqualTo(ProcessStatus.COMPLETED); assertThat(execution.getExecutionEnvName()).isEqualTo("test-env"); assertThat(execution.getStartedAt().truncatedTo(ChronoUnit.MILLIS)).isEqualTo(startedAt.truncatedTo(ChronoUnit.MILLIS)); @@ -240,27 +243,34 @@ void processConfigIT() { SecurityAnalysisConfig securityAnalysisConfig = new SecurityAnalysisConfig( parametersUuid, List.of("contingency1", "contingency2"), - List.of(modificationUuid) + List.of(modificationUuid), + null, null, null, null ); - UUID configId = configService.createProcessConfig(securityAnalysisConfig); + UUID configId = configService.createProcessConfig(securityAnalysisConfig, "user1"); assertThat(processConfigRepository.findById(configId)).isNotEmpty(); Optional config = configService.getProcessConfig(configId); assertThat(config).isNotEmpty(); - assertThat(config.get()).usingRecursiveComparison().isEqualTo(securityAnalysisConfig); + assertThat(config.get().getOwner()).isEqualTo("user1"); + assertThat(config.get().getLastModifiedBy()).isEqualTo("user1"); + assertThat(config.get().getCreationDate()).isNotNull(); + assertThat(config.get().getLastModificationDate()).isNotNull(); UUID updatedParametersUuid = UUID.randomUUID(); UUID updatedModificationUuid = UUID.randomUUID(); SecurityAnalysisConfig updatedSecurityAnalysisConfig = new SecurityAnalysisConfig( updatedParametersUuid, List.of("contingency3", "contingency4"), - List.of(updatedModificationUuid) + List.of(updatedModificationUuid), + null, null, null, null ); - boolean updated = configService.updateProcessConfig(configId, updatedSecurityAnalysisConfig); + boolean updated = configService.updateProcessConfig(configId, updatedSecurityAnalysisConfig, "user2"); assertThat(updated).isTrue(); Optional updatedConfig = configService.getProcessConfig(configId); assertThat(updatedConfig).isNotEmpty(); - assertThat(updatedConfig.get()).usingRecursiveComparison().isEqualTo(updatedSecurityAnalysisConfig); + assertThat(updatedConfig.get().getOwner()).isEqualTo("user1"); + assertThat(updatedConfig.get().getLastModifiedBy()).isEqualTo("user2"); + assertThat(updatedConfig.get().getLastModificationDate()).isNotNull(); boolean deleted = configService.deleteProcessConfig(configId); assertThat(deleted).isTrue(); diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java index 18c6a10d..42e7e9d0 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java @@ -7,6 +7,7 @@ package org.gridsuite.monitor.server.controllers; import com.fasterxml.jackson.databind.ObjectMapper; +import org.gridsuite.monitor.commons.Constants; import org.gridsuite.monitor.commons.ProcessExecutionStep; import org.gridsuite.monitor.commons.SecurityAnalysisConfig; import org.gridsuite.monitor.commons.StepStatus; @@ -63,7 +64,8 @@ void executeSecurityAnalysisShouldReturnExecutionId() throws Exception { SecurityAnalysisConfig config = new SecurityAnalysisConfig( parametersUuid, List.of("contingency1", "contingency2"), - List.of(modificationUuid) + List.of(modificationUuid), + "user1", Instant.now(), null, null ); when(monitorService.executeProcess(any(UUID.class), any(String.class), any(SecurityAnalysisConfig.class))) @@ -71,7 +73,7 @@ void executeSecurityAnalysisShouldReturnExecutionId() throws Exception { mockMvc.perform(post("/v1/execute/security-analysis") .param("caseUuid", caseUuid.toString()) - .header("userId", "user1") + .header(Constants.HEADER_USER_ID, "user1") .contentType(MediaType.APPLICATION_JSON) .content(objectMapper.writeValueAsString(config))) .andExpect(status().isOk()) @@ -146,7 +148,7 @@ void getLaunchedProcesses() throws Exception { when(monitorService.getLaunchedProcesses(ProcessType.SECURITY_ANALYSIS)).thenReturn(processExecutionList); - mockMvc.perform(get("/v1/executions?processType=SECURITY_ANALYSIS").accept(MediaType.APPLICATION_JSON_VALUE).header("userId", "user1,user2,user3")) + mockMvc.perform(get("/v1/executions?processType=SECURITY_ANALYSIS").accept(MediaType.APPLICATION_JSON_VALUE).header(Constants.HEADER_USER_ID, "user1,user2,user3")) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("$", hasSize(3))) diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java index a7a80bfd..6e851b44 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/ProcessConfigControllerTest.java @@ -7,6 +7,7 @@ package org.gridsuite.monitor.server.controllers; import com.fasterxml.jackson.databind.ObjectMapper; +import org.gridsuite.monitor.commons.Constants; import org.gridsuite.monitor.commons.ProcessConfig; import org.gridsuite.monitor.commons.SecurityAnalysisConfig; import org.gridsuite.monitor.server.services.ProcessConfigService; @@ -17,11 +18,13 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; +import java.time.Instant; import java.util.List; import java.util.Optional; import java.util.UUID; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; @@ -53,20 +56,22 @@ void createSecurityAnalysisConfig() throws Exception { SecurityAnalysisConfig securityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID(), UUID.randomUUID()) + List.of(UUID.randomUUID(), UUID.randomUUID()), + null, null, null, null ); - when(processConfigService.createProcessConfig(any(ProcessConfig.class))) + when(processConfigService.createProcessConfig(any(ProcessConfig.class), any(String.class))) .thenReturn(processConfigId); mockMvc.perform(post("/v1/process-configs") .contentType(MediaType.APPLICATION_JSON) + .header(Constants.HEADER_USER_ID, "user1") .content(objectMapper.writeValueAsString(securityAnalysisConfig))) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("$").value(processConfigId.toString())); - verify(processConfigService).createProcessConfig(any(SecurityAnalysisConfig.class)); + verify(processConfigService).createProcessConfig(any(SecurityAnalysisConfig.class), eq("user1")); } @Test @@ -75,7 +80,8 @@ void getSecurityAnalysisConfig() throws Exception { SecurityAnalysisConfig securityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID(), UUID.randomUUID()) + List.of(UUID.randomUUID(), UUID.randomUUID()), + "user1", Instant.now().minusSeconds(120), Instant.now(), "user2" ); String expectedJson = objectMapper.writeValueAsString(securityAnalysisConfig); @@ -111,18 +117,20 @@ void updateSecurityAnalysisConfig() throws Exception { SecurityAnalysisConfig securityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID(), UUID.randomUUID()) + List.of(UUID.randomUUID(), UUID.randomUUID()), + null, null, null, null ); - when(processConfigService.updateProcessConfig(any(UUID.class), any(ProcessConfig.class))) + when(processConfigService.updateProcessConfig(any(UUID.class), any(ProcessConfig.class), any(String.class))) .thenReturn(Boolean.TRUE); mockMvc.perform(put("/v1/process-configs/{uuid}", processConfigId) .contentType(MediaType.APPLICATION_JSON) + .header(Constants.HEADER_USER_ID, "user2") .content(objectMapper.writeValueAsString(securityAnalysisConfig))) .andExpect(status().isOk()); - verify(processConfigService).updateProcessConfig(any(UUID.class), any(ProcessConfig.class)); + verify(processConfigService).updateProcessConfig(any(UUID.class), any(ProcessConfig.class), eq("user2")); } @Test @@ -131,18 +139,20 @@ void updateSecurityAnalysisConfigNotFound() throws Exception { SecurityAnalysisConfig securityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID(), UUID.randomUUID()) + List.of(UUID.randomUUID(), UUID.randomUUID()), + null, null, null, null ); - when(processConfigService.updateProcessConfig(any(UUID.class), any(ProcessConfig.class))) + when(processConfigService.updateProcessConfig(any(UUID.class), any(ProcessConfig.class), any(String.class))) .thenReturn(Boolean.FALSE); mockMvc.perform(put("/v1/process-configs/{uuid}", processConfigId) .contentType(MediaType.APPLICATION_JSON) + .header(Constants.HEADER_USER_ID, "user2") .content(objectMapper.writeValueAsString(securityAnalysisConfig))) .andExpect(status().isNotFound()); - verify(processConfigService).updateProcessConfig(any(UUID.class), any(ProcessConfig.class)); + verify(processConfigService).updateProcessConfig(any(UUID.class), any(ProcessConfig.class), any(String.class)); } @Test diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/repositories/ProcessConfigRepositoryTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/repositories/ProcessConfigRepositoryTest.java new file mode 100644 index 00000000..75c19026 --- /dev/null +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/repositories/ProcessConfigRepositoryTest.java @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2026, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.monitor.server.repositories; + +import org.gridsuite.monitor.server.entities.SecurityAnalysisConfigEntity; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; + +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Franck Lecuyer + */ +@DataJpaTest +class ProcessConfigRepositoryTest { + + @Autowired + private TestEntityManager entityManager; + + @Autowired + private ProcessConfigRepository processConfigRepository; + + @Test + void saveSecurityAnalysisConfig() { + UUID parametersUuid = UUID.randomUUID(); + List contingencies = List.of("contingency1", "contingency2"); + List modificationUuids = List.of(UUID.randomUUID(), UUID.randomUUID()); + Instant creationDate = Instant.now().minusSeconds(60); + Instant lastModificationDate = Instant.now(); + + SecurityAnalysisConfigEntity securityAnalysisConfig = SecurityAnalysisConfigEntity.builder() + .parametersUuid(parametersUuid) + .contingencies(contingencies) + .modificationUuids(modificationUuids) + .owner("user1") + .creationDate(creationDate) + .lastModificationDate(lastModificationDate) + .lastModifiedBy("user2") + .build(); + + processConfigRepository.save(securityAnalysisConfig); + // Force DB write and reload + entityManager.flush(); + entityManager.clear(); + + SecurityAnalysisConfigEntity retrieved = (SecurityAnalysisConfigEntity) processConfigRepository.findById(securityAnalysisConfig.getId()).orElseThrow(); + assertThat(retrieved.getParametersUuid()).isEqualTo(parametersUuid); + assertThat(retrieved.getContingencies()).isEqualTo(contingencies); + assertThat(retrieved.getModificationUuids()).isEqualTo(modificationUuids); + assertThat(retrieved.getOwner()).isEqualTo("user1"); + assertThat(retrieved.getCreationDate().truncatedTo(ChronoUnit.MILLIS)).isEqualTo(creationDate.truncatedTo(ChronoUnit.MILLIS)); + assertThat(retrieved.getLastModificationDate().truncatedTo(ChronoUnit.MILLIS)).isEqualTo(lastModificationDate.truncatedTo(ChronoUnit.MILLIS)); + assertThat(retrieved.getLastModifiedBy()).isEqualTo("user2"); + } +} diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java index fd1c7129..bc32c442 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java @@ -65,7 +65,8 @@ void setUp() { securityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID()) + List.of(UUID.randomUUID()), + "user1", Instant.now().minusSeconds(120), Instant.now(), "user2" ); } diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/NotificationServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/NotificationServiceTest.java index daed2612..ca388b56 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/NotificationServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/NotificationServiceTest.java @@ -16,6 +16,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.cloud.stream.function.StreamBridge; +import java.time.Instant; import java.util.List; import java.util.UUID; @@ -49,7 +50,8 @@ void setUp() { securityAnalysisConfig = new SecurityAnalysisConfig( parametersUuid, List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID(), UUID.randomUUID()) + List.of(UUID.randomUUID(), UUID.randomUUID()), + "user1", Instant.now().minusSeconds(120), Instant.now(), "user2" ); } diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/ProcessConfigServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/ProcessConfigServiceTest.java index 284fd0f8..5711b1f3 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/ProcessConfigServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/ProcessConfigServiceTest.java @@ -50,7 +50,8 @@ void setUp() { securityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1", "contingency2"), - List.of(UUID.randomUUID()) + List.of(UUID.randomUUID()), + null, null, null, null ); } @@ -64,7 +65,7 @@ void createSecurityAnalysisConfig() { return entity; }); - UUID result = processConfigService.createProcessConfig(securityAnalysisConfig); + UUID result = processConfigService.createProcessConfig(securityAnalysisConfig, "user1"); assertThat(result).isEqualTo(expectedProcessConfigId); ArgumentCaptor captor = ArgumentCaptor.forClass(SecurityAnalysisConfigEntity.class); @@ -73,22 +74,34 @@ void createSecurityAnalysisConfig() { SecurityAnalysisConfigEntity savedEntity = captor.getValue(); assertThat(savedEntity.getId()).isEqualTo(expectedProcessConfigId); assertThat(savedEntity.getType()).isEqualTo(ProcessType.SECURITY_ANALYSIS); - assertThat(savedEntity.getParametersUuid()).isEqualTo(securityAnalysisConfig.parametersUuid()); - assertThat(savedEntity.getContingencies()).isEqualTo(securityAnalysisConfig.contingencies()); - assertThat(savedEntity.getModificationUuids()).isEqualTo(securityAnalysisConfig.modificationUuids()); + assertThat(savedEntity.getParametersUuid()).isEqualTo(securityAnalysisConfig.getParametersUuid()); + assertThat(savedEntity.getContingencies()).isEqualTo(securityAnalysisConfig.getContingencies()); + assertThat(savedEntity.getModificationUuids()).isEqualTo(securityAnalysisConfig.getModificationUuids()); + assertThat(savedEntity.getOwner()).isEqualTo("user1"); + assertThat(savedEntity.getCreationDate()).isNotNull(); + assertThat(savedEntity.getLastModificationDate()).isNotNull(); + assertThat(savedEntity.getLastModifiedBy()).isEqualTo("user1"); } @Test void getSecurityAnalysisConfig() { UUID processConfigId = UUID.randomUUID(); - SecurityAnalysisConfigEntity securityAnalysisConfigEntity = SecurityAnalysisConfigMapper.toEntity(securityAnalysisConfig); + SecurityAnalysisConfigEntity securityAnalysisConfigEntity = SecurityAnalysisConfigMapper.toEntity(securityAnalysisConfig, "user1"); when(processConfigRepository.findById(processConfigId)).thenReturn(Optional.of(securityAnalysisConfigEntity)); Optional processConfig = processConfigService.getProcessConfig(processConfigId); verify(processConfigRepository).findById(processConfigId); assertThat(processConfig).isPresent(); - assertThat(processConfig.get()).usingRecursiveComparison().isEqualTo(securityAnalysisConfig); + assertThat(processConfig.get().processType()).isEqualTo(ProcessType.SECURITY_ANALYSIS); + SecurityAnalysisConfig resSecurityAnalysisConfig = (SecurityAnalysisConfig) processConfig.get(); + assertThat(resSecurityAnalysisConfig.getParametersUuid()).isEqualTo(securityAnalysisConfig.getParametersUuid()); + assertThat(resSecurityAnalysisConfig.getContingencies()).isEqualTo(securityAnalysisConfig.getContingencies()); + assertThat(resSecurityAnalysisConfig.getModificationUuids()).isEqualTo(securityAnalysisConfig.getModificationUuids()); + assertThat(resSecurityAnalysisConfig.getOwner()).isEqualTo("user1"); + assertThat(resSecurityAnalysisConfig.getCreationDate()).isNotNull(); + assertThat(resSecurityAnalysisConfig.getLastModificationDate()).isNotNull(); + assertThat(resSecurityAnalysisConfig.getLastModifiedBy()).isEqualTo("user1"); } @Test @@ -105,24 +118,32 @@ void getSecurityAnalysisConfigNotFound() { @Test void updateSecurityAnalysisConfig() { UUID processConfigId = UUID.randomUUID(); - SecurityAnalysisConfigEntity securityAnalysisConfigEntity = SecurityAnalysisConfigMapper.toEntity(securityAnalysisConfig); + SecurityAnalysisConfigEntity securityAnalysisConfigEntity = SecurityAnalysisConfigMapper.toEntity(securityAnalysisConfig, "user1"); SecurityAnalysisConfig newSecurityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency3", "contingency4", "contingency5"), - List.of(UUID.randomUUID()) + List.of(UUID.randomUUID()), + null, null, null, null ); when(processConfigRepository.findById(processConfigId)).thenReturn(Optional.of(securityAnalysisConfigEntity)); - boolean done = processConfigService.updateProcessConfig(processConfigId, newSecurityAnalysisConfig); + boolean done = processConfigService.updateProcessConfig(processConfigId, newSecurityAnalysisConfig, "user2"); assertThat(done).isTrue(); verify(processConfigRepository).findById(processConfigId); Optional processConfigUpdated = processConfigService.getProcessConfig(processConfigId); assertThat(processConfigUpdated).isPresent(); - assertThat(processConfigUpdated.get()).usingRecursiveComparison().isEqualTo(newSecurityAnalysisConfig); + SecurityAnalysisConfig updatedSecurityAnalysisConfig = (SecurityAnalysisConfig) processConfigUpdated.get(); + assertThat(updatedSecurityAnalysisConfig.getParametersUuid()).isEqualTo(newSecurityAnalysisConfig.getParametersUuid()); + assertThat(updatedSecurityAnalysisConfig.getContingencies()).isEqualTo(newSecurityAnalysisConfig.getContingencies()); + assertThat(updatedSecurityAnalysisConfig.getModificationUuids()).isEqualTo(newSecurityAnalysisConfig.getModificationUuids()); + assertThat(updatedSecurityAnalysisConfig.getOwner()).isEqualTo("user1"); + assertThat(updatedSecurityAnalysisConfig.getCreationDate()).isNotNull(); + assertThat(updatedSecurityAnalysisConfig.getLastModificationDate()).isNotNull(); + assertThat(updatedSecurityAnalysisConfig.getLastModifiedBy()).isEqualTo("user2"); } @Test @@ -134,9 +155,10 @@ void updateSecurityAnalysisConfigNotFound() { SecurityAnalysisConfig newSecurityAnalysisConfig = new SecurityAnalysisConfig( UUID.randomUUID(), List.of("contingency1"), - List.of(UUID.randomUUID()) + List.of(UUID.randomUUID()), + null, null, null, null ); - boolean done = processConfigService.updateProcessConfig(processConfigId, newSecurityAnalysisConfig); + boolean done = processConfigService.updateProcessConfig(processConfigId, newSecurityAnalysisConfig, "user3"); assertThat(done).isFalse(); verify(processConfigRepository).findById(processConfigId); diff --git a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java index 8c09d9a6..2c62b6f7 100644 --- a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java +++ b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java @@ -42,7 +42,7 @@ public ApplyModificationsStep(NetworkModificationService networkModificationServ @Override public void execute(ProcessStepExecutionContext context) { - List modificationIds = context.getConfig().modificationUuids(); + List modificationIds = context.getConfig().getModificationUuids(); Network network = context.getNetwork(); if (CollectionUtils.isNotEmpty(modificationIds)) { applyModifications(modificationIds, network, context.getReportInfos().reportNode()); diff --git a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStep.java b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStep.java index 6b64466e..fd8ae07d 100644 --- a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStep.java +++ b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStep.java @@ -41,8 +41,8 @@ public SecurityAnalysisRunComputationStep(SecurityAnalysisService securityAnalys public void execute(ProcessStepExecutionContext context) { Objects.requireNonNull(context.getNetwork()); // FIXME use params from computation server - UUID params = context.getConfig().parametersUuid(); - List contingencies = context.getConfig().contingencies(); + UUID params = context.getConfig().getParametersUuid(); + List contingencies = context.getConfig().getContingencies(); // FIXME get contingencies List contingencyList = contingencies.stream().map(id -> new Contingency(id, new LineContingency(id))).toList(); SecurityAnalysisRunParameters runParameters = new SecurityAnalysisRunParameters() diff --git a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java index 1316d04c..a8c61681 100644 --- a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java +++ b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java @@ -63,7 +63,7 @@ class ApplyModificationsStepTest { @BeforeEach void setUp() { applyModificationsStep = new ApplyModificationsStep<>(networkModificationService, networkModificationRestService, filterService); - when(config.modificationUuids()).thenReturn(List.of(MODIFICATION_UUID)); + when(config.getModificationUuids()).thenReturn(List.of(MODIFICATION_UUID)); when(stepContext.getConfig()).thenReturn(config); ReportInfos reportInfos = new ReportInfos(REPORT_UUID, ReportNode.newRootReportNode() .withResourceBundles("i18n.reports") diff --git a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStepTest.java b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStepTest.java index fd07eb36..a5f0bf57 100644 --- a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStepTest.java +++ b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/securityanalysis/steps/SecurityAnalysisRunComputationStepTest.java @@ -55,7 +55,7 @@ void setUp() { runComputationStep = new SecurityAnalysisRunComputationStep(securityAnalysisService); when(stepContext.getConfig()).thenReturn(config); - when(config.parametersUuid()).thenReturn(PARAMS_UUID); + when(config.getParametersUuid()).thenReturn(PARAMS_UUID); ReportInfos reportInfos = new ReportInfos(REPORT_UUID, ReportNode.newRootReportNode() .withResourceBundles("i18n.reports") @@ -68,7 +68,7 @@ void setUp() { void executeRunSecurityAnalysis() { Network network = EurostagTutorialExample1Factory.create(); when(stepContext.getNetwork()).thenReturn(network); - when(config.contingencies()).thenReturn(List.of("NHV1_NHV2_1", "NHV1_NHV2_2")); + when(config.getContingencies()).thenReturn(List.of("NHV1_NHV2_1", "NHV1_NHV2_2")); runComputationStep.execute(stepContext);