From e9be2eb523cbf1bebae7ab981ecb44b52126581b Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Fri, 10 Apr 2020 14:42:32 +0200 Subject: [PATCH] Bugfix group creation --- .../ia2/gms/controller/GroupsController.java | 8 ++++++-- .../it/inaf/ia2/gms/manager/GroupsManager.java | 15 ++++++--------- .../controller/JWTWebServiceControllerTest.java | 17 ++++++++++++++--- 3 files changed, 26 insertions(+), 14 deletions(-) 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 ab97ed1..2ec1d28 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 @@ -55,7 +55,9 @@ public class GroupsController { @PostMapping(value = "/group", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<PaginatedData<GroupNode>> createGroup(@Valid @RequestBody AddGroupRequest request) { - GroupEntity parent = groupsManager.createGroup(request.getParentGroupId(), request.getNewGroupName(), request.isLeaf()); + GroupEntity parent = groupsManager.getGroupById(request.getParentGroupId()); + + groupsManager.createGroup(parent, request.getNewGroupName(), request.isLeaf()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent, request); @@ -65,7 +67,9 @@ public class GroupsController { @PutMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<PaginatedData<GroupNode>> updateGroup(@PathVariable("groupId") String groupId, @Valid @RequestBody RenameGroupRequest request) { - GroupEntity parent = groupsManager.updateGroup(groupId, request.getNewGroupName(), request.isLeaf()); + GroupEntity updatedGroup = groupsManager.updateGroup(groupId, request.getNewGroupName(), request.isLeaf()); + + GroupEntity parent = groupsManager.getGroupByPath(updatedGroup.getParentPath()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent, request); diff --git a/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java b/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java index 4d7ae82..5b36337 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java +++ b/gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java @@ -31,9 +31,10 @@ public class GroupsManager { return group; } - public GroupEntity createGroup(String parentGroupId, String childGroupName, boolean leaf) { - GroupEntity parent = groupsService.getGroupById(parentGroupId); - return createGroup(parent, childGroupName, leaf); + public GroupEntity getGroupByPath(String path) { + GroupEntity group = groupsService.getGroupByPath(path); + verifyUserCanReadGroup(group); + return group; } public GroupEntity createGroup(GroupEntity parent, String childGroupName, boolean leaf) { @@ -44,9 +45,7 @@ public class GroupsManager { verifyUserCanManageGroup(parent); - groupsService.addGroup(parent, childGroupName, leaf); - - return parent; + return groupsService.addGroup(parent, childGroupName, leaf); } public GroupEntity updateGroup(String groupId, String newGroupName, boolean leaf) { @@ -54,9 +53,7 @@ public class GroupsManager { GroupEntity group = groupsService.getGroupById(groupId); verifyUserCanManageGroup(group); - GroupEntity updatedGroup = groupsService.updateGroup(group, newGroupName, leaf); - - return groupsService.getGroupByPath(updatedGroup.getParentPath()); + return groupsService.updateGroup(group, newGroupName, leaf); } public GroupEntity deleteGroup(String groupId) { diff --git a/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java b/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java index 257fd5f..a665c24 100644 --- a/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java +++ b/gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java @@ -19,7 +19,8 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import org.mockito.InjectMocks; import org.mockito.Mock; @@ -122,11 +123,21 @@ public class JWTWebServiceControllerTest { public void testCreateGroup() throws Exception { when(groupsManager.getRoot()).thenReturn(root); + when(groupsManager.createGroup(any(GroupEntity.class), eq("LBT"), eq(false))).thenReturn(lbt); + when(groupsManager.createGroup(any(GroupEntity.class), eq("INAF"), eq(true))).thenReturn(inaf); - mockMvc.perform(post("/ws/jwt/group") - .param("leaf", "false") + mockMvc.perform(post("/ws/jwt/LBT.INAF") + .param("leaf", "true") .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andExpect(status().isCreated()); + + verify(groupsService, times(2)).findGroupByParentAndName(any(GroupEntity.class), any()); + verify(groupsManager, times(1)).createGroup(argGroupIdEq(GroupsService.ROOT), eq("LBT"), eq(false)); + verify(groupsManager, times(1)).createGroup(argGroupIdEq("lbt_id"), eq("INAF"), eq(true)); + } + + private GroupEntity argGroupIdEq(String groupId) { + return argThat(g -> g.getId().equals(groupId)); } @Test -- GitLab