Skip to content
Snippets Groups Projects
Commit 2f085290 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Group with dot in name escape bugfix

parent 27bf0c93
No related branches found
No related tags found
No related merge requests found
Pipeline #1251 passed
......@@ -261,7 +261,7 @@ public class JWTWebServiceController {
if (userId.isPresent()) {
try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) {
for (UserPermission userPermission : searchService.getUserPermission(groupEntity, userId.get(), permissionsManager.getCurrentUserPermissions(groupEntity))) {
String group = String.join(".", userPermission.getGroupCompleteName());
String group = groupNameService.getCompleteName(userPermission.getGroupCompleteName());
pw.println(group + " " + userPermission.getPermission());
}
}
......
......@@ -125,7 +125,7 @@ public class PermissionsController {
if (userId.isPresent()) {
try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) {
for (UserPermission userPermission : searchService.getUserPermission(groupEntity, userId.get(), permissionsManager.getCurrentUserPermissions(groupEntity))) {
String group = String.join(".", userPermission.getGroupCompleteName());
String group = groupNameService.getCompleteName(userPermission.getGroupCompleteName());
pw.println(group + " " + userPermission.getPermission());
}
}
......
......@@ -83,7 +83,9 @@ public class GroupNameService {
}
private List<String> splitNames(String completeGroupName) {
return Arrays.asList(completeGroupName.split("(?<!\\\\)\\."));
return Arrays.stream(completeGroupName.split("(?<!\\\\)\\."))
.map(name -> name.replace("\\.", "."))
.collect(Collectors.toList());
}
public String getShortGroupName(String completeGroupName, Optional<String> groupPrefix) {
......
......@@ -7,11 +7,14 @@ import it.inaf.ia2.gms.manager.PermissionsManager;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.model.RapUserPermission;
import it.inaf.ia2.gms.model.request.AddPermissionRequest;
import it.inaf.ia2.gms.model.response.UserPermission;
import it.inaf.ia2.gms.persistence.GroupsDAO;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.persistence.model.PermissionEntity;
import it.inaf.ia2.gms.service.GroupNameService;
import it.inaf.ia2.gms.service.SearchService;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
......@@ -45,6 +48,9 @@ public class PermissionsControllerTest {
@Mock
private PermissionsManager permissionsManager;
@Mock
private SearchService searchService;
@Mock
private GroupsDAO groupsDAO;
......@@ -137,6 +143,26 @@ public class PermissionsControllerTest {
.andExpect(content().string("rap_user ADMIN\n"));
}
@Test
public void testGetUserPermissions() throws Exception {
when(groupsDAO.findGroupByParentAndName("", "people")).thenReturn(Optional.of(getPeopleGroup()));
when(groupsDAO.findGroupByParentAndName("people_id", "name.surname")).thenReturn(Optional.of(getNameSurnameGroup()));
List<UserPermission> permissions = new ArrayList<>();
UserPermission up = new UserPermission();
up.setGroupCompleteName(Arrays.asList("people", "name.surname"));
up.setPermission(Permission.VIEW_MEMBERS);
permissions.add(up);
when(searchService.getUserPermission(any(), any(), any())).thenReturn(permissions);
mockMvc.perform(get("/permission?group=people.name\\.surname&user_id=id").principal(getPrincipal())
.accept(MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andExpect(content().string("people.name\\.surname VIEW_MEMBERS\n"));
}
@Test
public void testAddPermission() throws Exception {
......
......@@ -50,7 +50,7 @@ public class GroupNameServiceTest {
assertEquals(1, names.size());
assertEquals(2, names.get("def").size());
assertEquals("Parent_group", names.get("def").get(0));
assertEquals("Child\\.withDot", names.get("def").get(1));
assertEquals("Child.withDot", names.get("def").get(1));
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment