From 032148ba5be47a1995d0615f907d42fa09c27947 Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Tue, 16 Jul 2019 16:43:56 +0200 Subject: [PATCH] Minor changes --- .../it/inaf/ia2/gms/authn/OAuth2Config.java | 2 - .../it/inaf/ia2/gms/authn/SecurityConfig.java | 7 ++- .../ia2/gms/controller/GroupsController.java | 1 + .../it/inaf/ia2/gms/model/PaginatedData.java | 2 +- .../inaf/ia2/gms/service/GroupsService.java | 5 +- gms/src/main/resources/application.properties | 1 + .../inaf/ia2/gms/model/PaginatedDataTest.java | 58 +++++++++++++++++++ 7 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 gms/src/test/java/it/inaf/ia2/gms/model/PaginatedDataTest.java diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java b/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java index 9b45d30..4fd68b5 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java +++ b/gms/src/main/java/it/inaf/ia2/gms/authn/OAuth2Config.java @@ -3,7 +3,6 @@ package it.inaf.ia2.gms.authn; import java.util.List; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.boot.autoconfigure.security.oauth2.resource.DefaultUserInfoRestTemplateFactory; import org.springframework.boot.autoconfigure.security.oauth2.resource.UserInfoRestTemplateCustomizer; import org.springframework.boot.autoconfigure.security.oauth2.resource.UserInfoRestTemplateFactory; @@ -22,7 +21,6 @@ import org.springframework.security.oauth2.provider.token.RemoteTokenServices; * Boot ResourceServerTokenServicesConfiguration. */ @Configuration -@EnableOAuth2Sso public class OAuth2Config extends AuthorizationServerEndpointsConfiguration { @Value("${security.oauth2.resource.jwk.key-set-uri}") diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java b/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java index 130505e..ea8e317 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java +++ b/gms/src/main/java/it/inaf/ia2/gms/authn/SecurityConfig.java @@ -1,16 +1,17 @@ package it.inaf.ia2.gms.authn; +import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.Order; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration -@Order(1000) +@EnableOAuth2Sso public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override - protected void configure(HttpSecurity http) throws Exception { + public void configure(HttpSecurity http) throws Exception { + super.configure(http); http.csrf().disable(); } } diff --git a/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java b/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java index 7586fd8..c1fb662 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java +++ b/gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java @@ -25,6 +25,7 @@ public class GroupsController { @Autowired private SessionData session; + @Autowired private UsersService usersService; @Autowired diff --git a/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java b/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java index 5ea07f7..0e61eb1 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java +++ b/gms/src/main/java/it/inaf/ia2/gms/model/PaginatedData.java @@ -30,7 +30,7 @@ public class PaginatedData<T> { } else { int firstElementIndex = (currentPage - 1) * pageSize; int lastElementIndex = Math.min(currentPage * pageSize - 1, totalItems - 1); - items = new ArrayList<>(allItems.subList(firstElementIndex, lastElementIndex)); + items = new ArrayList<>(allItems.subList(firstElementIndex, lastElementIndex + 1)); } links = new ArrayList<>(); diff --git a/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java b/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java index 9a25817..4be39d1 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java +++ b/gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.springframework.transaction.annotation.Transactional; @Service public class GroupsService { @@ -47,6 +48,7 @@ public class GroupsService { } } + @Transactional public Group addGroup(String parentId, String groupName, User user) { Group parent = getGroupById(parentId); @@ -70,6 +72,7 @@ public class GroupsService { return group; } + @Transactional public List<GroupNode> getSubgroups(Group parent, User user) { List<UserGroupPermission> permissions = getAllPermissions(user); @@ -97,7 +100,7 @@ public class GroupsService { GroupNode groupNode = nodesMap.get(group.getId()); if (groupNode == null) { - return null; + return new ArrayList<>(); } return groupNode.getPermissions(); } diff --git a/gms/src/main/resources/application.properties b/gms/src/main/resources/application.properties index 4685461..0893bb1 100644 --- a/gms/src/main/resources/application.properties +++ b/gms/src/main/resources/application.properties @@ -15,3 +15,4 @@ spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect spring.datasource.url=jdbc:mysql://localhost:3306/gms?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC spring.datasource.username=gms spring.datasource.password=gms +#spring.jpa.open-in-view=false diff --git a/gms/src/test/java/it/inaf/ia2/gms/model/PaginatedDataTest.java b/gms/src/test/java/it/inaf/ia2/gms/model/PaginatedDataTest.java new file mode 100644 index 0000000..79f2d9b --- /dev/null +++ b/gms/src/test/java/it/inaf/ia2/gms/model/PaginatedDataTest.java @@ -0,0 +1,58 @@ +package it.inaf.ia2.gms.model; + +import java.util.ArrayList; +import java.util.List; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +public class PaginatedDataTest { + + @Test + public void testPagination() { + + List<Integer> allItems = new ArrayList<>(); + for (int i = 1; i <= 30; i++) { + allItems.add(i); + } + + PaginatedData<Integer> paginatedData = new PaginatedData<>(allItems, 2, 10); + + assertEquals(10, paginatedData.getItems().size()); + assertEquals(11, (int) paginatedData.getItems().get(0)); + assertEquals(20, (int) paginatedData.getItems().get(9)); + assertEquals(30, paginatedData.getTotalItems()); + assertEquals(3, paginatedData.getTotalPages()); + assertFalse(paginatedData.isHasPreviousPages()); + assertFalse(paginatedData.isHasFollowingPages()); + assertEquals(10, paginatedData.getPageSize()); + assertEquals(3, paginatedData.getLinks().size()); + assertEquals(1, (int) paginatedData.getLinks().get(0)); + assertEquals(2, (int) paginatedData.getLinks().get(1)); + assertEquals(3, (int) paginatedData.getLinks().get(2)); + } + + @Test + public void testLotOfPages() { + + List<Integer> allItems = new ArrayList<>(); + for (int i = 1; i <= 200; i++) { + allItems.add(i); + } + + PaginatedData<Integer> paginatedData = new PaginatedData<>(allItems, 8, 10); + + assertEquals(10, paginatedData.getItems().size()); + assertEquals(71, (int) paginatedData.getItems().get(0)); + assertEquals(80, (int) paginatedData.getItems().get(9)); + assertEquals(200, paginatedData.getTotalItems()); + assertEquals(20, paginatedData.getTotalPages()); + assertTrue(paginatedData.isHasPreviousPages()); + assertTrue(paginatedData.isHasFollowingPages()); + assertEquals(10, paginatedData.getPageSize()); + assertEquals(5, paginatedData.getLinks().size()); + assertEquals(6, (int) paginatedData.getLinks().get(0)); + assertEquals(10, (int) paginatedData.getLinks().get(4)); + } +} -- GitLab