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

Added membership endpoint

parent 4d153a80
No related branches found
No related tags found
No related merge requests found
......@@ -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.GroupsService;
import it.inaf.ia2.rap.data.RapUser;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
......@@ -84,6 +87,20 @@ public class MembersController {
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)
public void addMember(@RequestParam("group") Optional<String> groupNames,
@RequestParam("user_id") String targetUserId) {
......
......@@ -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.service.GroupNameService;
import it.inaf.ia2.gms.service.GroupsService;
import java.util.ArrayList;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
import org.junit.Before;
......@@ -28,6 +29,7 @@ import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.http.MediaType;
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.get;
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.status;
......@@ -128,4 +130,15 @@ public class MembersControllerTest {
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"));
}
}
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