Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<parent>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-parent-ws</artifactId>
<version>26.1</version>
<version>28</version>
<relativePath/>
</parent>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ public UserProfileController(UserProfileService userService) {
@Operation(summary = "get all the user profiles")
@ApiResponse(responseCode = "200", description = "The profiles list")
public ResponseEntity<List<UserProfile>> getProfiles(@RequestHeader("userId") String userId,
@Parameter(description = "To check if parameters and spreadsheet config collection links are still valid") @RequestParam(name = "checkLinksValidity", required = false, defaultValue = "true") boolean checkLinksValidity) {
@Parameter(description = "To check if parameters and spreadsheet config collection links are still valid") @RequestParam(name =
"checkLinksValidity", required = false, defaultValue = "true") boolean checkLinksValidity) {
return ResponseEntity.ok().body(service.getProfiles(userId, checkLinksValidity));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import static org.gridsuite.useradmin.server.Utils.getCurrentUserRoles;

/**
* @author David Braquart <david.braquart at rte-france.com
* @author David Braquart <david.braquart at rte-france.com>
*/
@Service
public class AdminRightService {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@
package org.gridsuite.useradmin.server.service;

import lombok.AllArgsConstructor;
import org.gridsuite.useradmin.server.error.UserAdminException;
import org.gridsuite.useradmin.server.dto.Announcement;
import org.gridsuite.useradmin.server.entity.AnnouncementEntity;
import org.gridsuite.useradmin.server.entity.AnnouncementSeverity;
import org.gridsuite.useradmin.server.error.UserAdminException;
import org.gridsuite.useradmin.server.repository.AnnouncementRepository;
import org.springframework.stereotype.Service;

import java.time.Instant;
import java.util.List;
import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/
package org.gridsuite.useradmin.server.service;

import org.gridsuite.useradmin.server.dto.ElementAttributes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
Expand All @@ -18,8 +19,6 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import org.gridsuite.useradmin.server.dto.ElementAttributes;

import java.util.List;
import java.util.Set;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import org.springframework.stereotype.Service;

/**
* @author Abdelsalem Hedhili <abdelsalem.hedhili at rte-france.com
* @author Abdelsalem Hedhili <abdelsalem.hedhili at rte-france.com>
*/
@Service
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,15 @@
package org.gridsuite.useradmin.server.service;

import jakarta.annotation.Nullable;
import org.gridsuite.useradmin.server.error.UserAdminException;
import org.gridsuite.useradmin.server.dto.UserGroup;
import org.gridsuite.useradmin.server.entity.GroupInfosEntity;
import org.gridsuite.useradmin.server.entity.UserInfosEntity;
import org.gridsuite.useradmin.server.error.UserAdminException;
import org.gridsuite.useradmin.server.repository.UserGroupRepository;
import org.gridsuite.useradmin.server.repository.UserInfosRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;

import java.util.*;
import java.util.stream.Collectors;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@
import com.google.common.collect.Sets;
import org.apache.commons.lang3.BooleanUtils;
import org.gridsuite.useradmin.server.UserAdminApplicationProps;
import org.gridsuite.useradmin.server.error.UserAdminException;
import org.gridsuite.useradmin.server.dto.UserProfile;
import org.gridsuite.useradmin.server.entity.UserProfileEntity;
import org.gridsuite.useradmin.server.error.UserAdminException;
import org.gridsuite.useradmin.server.repository.UserProfileRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand All @@ -41,6 +40,7 @@ public UserProfileService(final UserProfileRepository userProfileRepository,
}

@Transactional(readOnly = true)
@SuppressWarnings("checkstyle:LambdaBodyLength")
public List<UserProfile> getProfiles(String userId, boolean checkLinksValidity) {
adminRightService.assertIsAdmin();
List<UserProfileEntity> profiles = userProfileRepository.findAll().stream().toList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,6 @@
private void assertQueuesEmptyThenClear(List<String> destinations, OutputDestination output) {
try {
destinations.forEach(destination -> assertNull(output.receive(TIMEOUT, destination), "Should not be any messages in queue " + destination + " : "));
} catch (NullPointerException e) {
// Ignoring
} finally {
output.clear(); // purge in order to not fail the other tests
}
Expand Down Expand Up @@ -144,7 +142,8 @@
.andExpect(status().isInternalServerError())
.andReturn();

assertTrue(result.getResponse().getContentAsString().contains("Failed to convert value of type 'java.lang.String' to required type 'org.gridsuite.useradmin.server.entity.AnnouncementSeverity'"));
assertTrue(result.getResponse().getContentAsString().contains(
"Failed to convert value of type 'java.lang.String' to required type 'org.gridsuite.useradmin.server.entity.AnnouncementSeverity'"));

// Should be ok because user is admin
result = mockMvc.perform(put("/" + UserAdminApi.API_VERSION + "/announcements")
Expand Down Expand Up @@ -193,7 +192,7 @@

@Test
void testDeleteAnnouncement() throws Exception {
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);

Check warning on line 195 in src/test/java/org/gridsuite/useradmin/server/AnnouncementTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xIqQy2UojgGW4LN&open=AZ6S6xIqQy2UojgGW4LN&pullRequest=101
AnnouncementEntity announcementToBeCreated = new AnnouncementEntity(now, now.plus(2, ChronoUnit.DAYS), "Test message", AnnouncementSeverity.INFO);
announcementRepository.save(announcementToBeCreated);
assertEquals(1, announcementRepository.findAll().size());
Expand Down Expand Up @@ -245,7 +244,7 @@
@Test
void testGetAnnouncements() throws Exception {

Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);

Check warning on line 247 in src/test/java/org/gridsuite/useradmin/server/AnnouncementTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xIqQy2UojgGW4LO&open=AZ6S6xIqQy2UojgGW4LO&pullRequest=101
assertEquals(0, announcementRepository.findAll().size());

// Not allowed because not admin
Expand Down Expand Up @@ -290,7 +289,7 @@

@Test
void testGetCurrentAnnouncement() throws Exception {
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);

Check warning on line 292 in src/test/java/org/gridsuite/useradmin/server/AnnouncementTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xIqQy2UojgGW4LP&open=AZ6S6xIqQy2UojgGW4LP&pullRequest=101
assertEquals(0, announcementRepository.findAll().size());

// insert a list of announcement
Expand All @@ -317,7 +316,7 @@

@Test
void testGetCurrentAnnouncementWithNoResult() throws Exception {
Instant now = Instant.now().truncatedTo(ChronoUnit.SECONDS);

Check warning on line 319 in src/test/java/org/gridsuite/useradmin/server/AnnouncementTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xIqQy2UojgGW4LQ&open=AZ6S6xIqQy2UojgGW4LQ&pullRequest=101
assertEquals(0, announcementRepository.findAll().size());

// insert a list of announcement
Expand Down
7 changes: 2 additions & 5 deletions src/test/java/org/gridsuite/useradmin/server/NoQuotaTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@
import org.gridsuite.useradmin.server.entity.UserProfileEntity;
import org.gridsuite.useradmin.server.repository.UserInfosRepository;
import org.gridsuite.useradmin.server.repository.UserProfileRepository;

import static org.gridsuite.useradmin.server.Utils.ROLES_HEADER;
import static org.gridsuite.useradmin.server.utils.TestConstants.*;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -25,9 +22,9 @@
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;

import java.util.Optional;

import static org.gridsuite.useradmin.server.Utils.ROLES_HEADER;
import static org.gridsuite.useradmin.server.utils.TestConstants.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@
package org.gridsuite.useradmin.server;

import com.powsybl.ws.commons.error.PowsyblWsProblemDetail;
import org.gridsuite.useradmin.server.error.UserAdminExceptionHandler;
import org.gridsuite.useradmin.server.error.UserAdminException;
import org.gridsuite.useradmin.server.error.UserAdminExceptionHandler;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.mock.web.MockHttpServletRequest;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,16 @@
import org.springframework.http.MediaType;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.servlet.MockMvc;

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
import java.util.Set;

import static org.gridsuite.useradmin.server.Utils.ROLES_HEADER;
import static org.gridsuite.useradmin.server.utils.TestConstants.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.gridsuite.useradmin.server.utils.TestConstants.*;

/**
* @author Etienne Homer <etienne.homer at rte-france.com>
Expand Down Expand Up @@ -319,9 +317,9 @@

assertEquals(2, connectionEntities.size());

connectionRepository.save(new ConnectionEntity(USER_SUB, LocalDateTime.now(), LocalDateTime.now(), true));

Check warning on line 320 in src/test/java/org/gridsuite/useradmin/server/UserAdminTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xJRQy2UojgGW4LR&open=AZ6S6xJRQy2UojgGW4LR&pullRequest=101

Check warning on line 320 in src/test/java/org/gridsuite/useradmin/server/UserAdminTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xJRQy2UojgGW4LS&open=AZ6S6xJRQy2UojgGW4LS&pullRequest=101
connectionRepository.save(new ConnectionEntity(USER_SUB, LocalDateTime.now().minusSeconds(5), LocalDateTime.now(), true));

Check warning on line 321 in src/test/java/org/gridsuite/useradmin/server/UserAdminTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xJRQy2UojgGW4LT&open=AZ6S6xJRQy2UojgGW4LT&pullRequest=101

Check warning on line 321 in src/test/java/org/gridsuite/useradmin/server/UserAdminTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xJRQy2UojgGW4LU&open=AZ6S6xJRQy2UojgGW4LU&pullRequest=101
connectionRepository.save(new ConnectionEntity(USER_SUB2, LocalDateTime.now(), LocalDateTime.now(), false));

Check warning on line 322 in src/test/java/org/gridsuite/useradmin/server/UserAdminTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xJRQy2UojgGW4LV&open=AZ6S6xJRQy2UojgGW4LV&pullRequest=101

Check warning on line 322 in src/test/java/org/gridsuite/useradmin/server/UserAdminTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xJRQy2UojgGW4LW&open=AZ6S6xJRQy2UojgGW4LW&pullRequest=101

connectionEntities = objectMapper.readValue(
mockMvc.perform(get("/" + UserAdminApi.API_VERSION + "/connections")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,8 @@ private void updateProfile(boolean validParameters) throws Exception {
UUID networkVisualizationParametersUuid = UUID.fromString("88888888-9594-4e55-8ec7-07ea965d24eb");
UUID diagramConfigUuid = UUID.fromString("9999999-9594-4e55-8ec7-07ea965d24eb");
List<UUID> elementsUuids = List.of(loadFlowParametersUuid, securityAnalysisParametersUuid,
sensitivityAnalysisParametersUuid, shortcircuitParametersUuid, pccminParametersUuid, voltageInitParametersUuid, spreadsheetConfigCollectionUuid, networkVisualizationParametersUuid, diagramConfigUuid);
sensitivityAnalysisParametersUuid, shortcircuitParametersUuid, pccminParametersUuid, voltageInitParametersUuid,
spreadsheetConfigCollectionUuid, networkVisualizationParametersUuid, diagramConfigUuid);

// stub for parameters and spreadsheet config collection elements existence check
final String urlPath = "/v1/elements";
Expand All @@ -276,7 +277,8 @@ private void updateProfile(boolean validParameters) throws Exception {

// udpate the profile: change name and set its parameters, maxAllowedCases, maxAllowedBuilds and spreadsheet config collection
UserProfile userProfile = new UserProfile(profileUuid, PROFILE_2, loadFlowParametersUuid, securityAnalysisParametersUuid,
sensitivityAnalysisParametersUuid, shortcircuitParametersUuid, pccminParametersUuid, voltageInitParametersUuid, null, 10, 11, spreadsheetConfigCollectionUuid, networkVisualizationParametersUuid, diagramConfigUuid);
sensitivityAnalysisParametersUuid, shortcircuitParametersUuid, pccminParametersUuid, voltageInitParametersUuid, null,
10, 11, spreadsheetConfigCollectionUuid, networkVisualizationParametersUuid, diagramConfigUuid);
updateProfile(userProfile, ADMIN_USER, USER_ADMIN_ROLE, HttpStatus.OK);

// profiles list (with validity flag)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,22 @@
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultMatcher;

import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;

import static org.gridsuite.useradmin.server.Utils.ROLES_HEADER;
import static org.gridsuite.useradmin.server.utils.TestConstants.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.when;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.gridsuite.useradmin.server.utils.TestConstants.*;

/**
* @author Franck Lecuyer <franck.lecuyer at rte-france.com>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@

@Test
void testSendScheduledAnnouncement() {
Instant now = Instant.now();

Check warning on line 59 in src/test/java/org/gridsuite/useradmin/server/schedule/ScheduledAnnouncementCheckerTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xFXQy2UojgGW4LI&open=AZ6S6xFXQy2UojgGW4LI&pullRequest=101
String payload = "Test message";
AnnouncementEntity announcement1 = new AnnouncementEntity(now.minus(1, ChronoUnit.DAYS), now.plus(1, ChronoUnit.DAYS), payload, AnnouncementSeverity.WARN);
AnnouncementEntity announcement2 = new AnnouncementEntity(now.minus(6, ChronoUnit.DAYS), now.minus(5, ChronoUnit.DAYS), "Test message 2", AnnouncementSeverity.WARN);
Expand All @@ -67,19 +67,19 @@

scheduledAnnouncement.sendNotificationIfAnnouncements();

assertAnnouncementMessageSent(payload, Duration.between(Instant.now(), announcement1.getEndDate()).toMillis(), announcement1.getSeverity());

Check warning on line 70 in src/test/java/org/gridsuite/useradmin/server/schedule/ScheduledAnnouncementCheckerTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xFXQy2UojgGW4LJ&open=AZ6S6xFXQy2UojgGW4LJ&pullRequest=101
}

@Test
void testSendScheduledAnnouncementShouldNotSendNotificationTwice() {
Instant now = Instant.now();

Check warning on line 75 in src/test/java/org/gridsuite/useradmin/server/schedule/ScheduledAnnouncementCheckerTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xFXQy2UojgGW4LK&open=AZ6S6xFXQy2UojgGW4LK&pullRequest=101
String payload = "Test message";
AnnouncementEntity announcement1 = new AnnouncementEntity(now.minus(1, ChronoUnit.DAYS), now.plus(1, ChronoUnit.DAYS), payload, AnnouncementSeverity.WARN);

announcementRepository.save(announcement1);

scheduledAnnouncement.sendNotificationIfAnnouncements();
assertAnnouncementMessageSent(payload, Duration.between(Instant.now(), announcement1.getEndDate()).toMillis(), announcement1.getSeverity());

Check warning on line 82 in src/test/java/org/gridsuite/useradmin/server/schedule/ScheduledAnnouncementCheckerTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xFXQy2UojgGW4LL&open=AZ6S6xFXQy2UojgGW4LL&pullRequest=101

scheduledAnnouncement.sendNotificationIfAnnouncements();
assertNull(output.receive(TIMEOUT, ANNOUNCEMENT_DESTINATION));
Expand All @@ -87,7 +87,7 @@

@Test
void testSendScheduledAnnouncementShouldDoNothing() {
Instant now = Instant.now();

Check warning on line 90 in src/test/java/org/gridsuite/useradmin/server/schedule/ScheduledAnnouncementCheckerTest.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Do not use the system clock in tests.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Auser-admin-server&issues=AZ6S6xFXQy2UojgGW4LM&open=AZ6S6xFXQy2UojgGW4LM&pullRequest=101
AnnouncementEntity announcement1 = new AnnouncementEntity(now.plus(1, ChronoUnit.DAYS), now.plus(2, ChronoUnit.DAYS), "Test message", AnnouncementSeverity.WARN);

announcementRepository.save(announcement1);
Expand All @@ -110,8 +110,6 @@
private static void assertQueuesEmptyThenClear(List<String> destinations, OutputDestination output) {
try {
destinations.forEach(destination -> assertNull(output.receive(TIMEOUT, destination), "Should not be any messages in queue " + destination + " : "));
} catch (NullPointerException e) {
// Ignoring
} finally {
output.clear(); // purge in order to not fail the other tests
}
Expand Down
Loading