Commit 2f085290 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Group with dot in name escape bugfix

parent 27bf0c93
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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());
                }
            }
+1 −1
Original line number Diff line number Diff line
@@ -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());
                }
            }
+3 −1
Original line number Diff line number Diff line
@@ -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) {
+26 −0
Original line number Diff line number Diff line
@@ -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 {

+1 −1
Original line number Diff line number Diff line
@@ -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