Commit 6e84490a authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Added membership endpoint

parent 4d153a80
Loading
Loading
Loading
Loading
+17 −0
Original line number Original line Diff line number Diff line
@@ -11,9 +11,12 @@ import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.service.GroupNameService;
import it.inaf.ia2.gms.service.GroupNameService;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.rap.data.RapUser;
import it.inaf.ia2.rap.data.RapUser;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.Collections;
import java.util.List;
import java.util.List;
import java.util.Optional;
import java.util.Optional;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatus;
@@ -84,6 +87,20 @@ public class MembersController {
        return new PaginatedData<>(members, request.getPaginatorPage(), request.getPaginatorPageSize());
        return new PaginatedData<>(members, request.getPaginatorPage(), request.getPaginatorPageSize());
    }
    }


    @GetMapping(value = "/membership", produces = MediaType.TEXT_PLAIN_VALUE)
    public void getMembership(@RequestParam("group") Optional<String> groupNames, @RequestParam("user_id") String userId, HttpServletResponse response) throws IOException {

        GroupEntity parent = groupNameService.getGroupFromNames(groupNames);

        List<GroupEntity> groups = membershipManager.getUserGroups(parent, userId);

        try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) {
            for (String groupName : groupNameService.getGroupsNames(groups)) {
                pw.println(groupNameService.getShortGroupName(groupName, groupNames));
            }
        }
    }

    @PostMapping(value = "/membership", produces = MediaType.TEXT_PLAIN_VALUE, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    @PostMapping(value = "/membership", produces = MediaType.TEXT_PLAIN_VALUE, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public void addMember(@RequestParam("group") Optional<String> groupNames,
    public void addMember(@RequestParam("group") Optional<String> groupNames,
            @RequestParam("user_id") String targetUserId) {
            @RequestParam("user_id") String targetUserId) {
+13 −0
Original line number Original line Diff line number Diff line
@@ -12,6 +12,7 @@ import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.persistence.model.MembershipEntity;
import it.inaf.ia2.gms.persistence.model.MembershipEntity;
import it.inaf.ia2.gms.service.GroupNameService;
import it.inaf.ia2.gms.service.GroupNameService;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.service.GroupsService;
import java.util.ArrayList;
import java.util.Optional;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.is;
import org.junit.Before;
import org.junit.Before;
@@ -28,6 +29,7 @@ import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.http.MediaType;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
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.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -128,4 +130,15 @@ public class MembersControllerTest {


        verify(membershipManager, times(1)).removeMember(eq(inaf), eq("userId"));
        verify(membershipManager, times(1)).removeMember(eq(inaf), eq("userId"));
    }
    }

    @Test
    public void testGetMembers() throws Exception {

        when(membershipManager.getUserGroups(any(), eq("userId"))).thenReturn(new ArrayList<>());

        mockMvc.perform(get("/membership?group=LBT&user_id=userId"))
                .andExpect(status().isOk());

        verify(membershipManager, times(1)).getUserGroups(any(), eq("userId"));
    }
}
}