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);