blob: 1dc4270789deb3c0111d42591b930e909d3a602d [file] [log] [blame]
margaretha99470ce2024-07-17 13:52:37 +02001package de.ids_mannheim.korap.web.controller.usergroup;
margaretha57103a02024-07-17 12:39:50 +02002
3import static org.junit.jupiter.api.Assertions.assertEquals;
margaretha2b533302024-07-31 13:49:15 +02004import static org.junit.jupiter.api.Assertions.assertTrue;
margaretha57103a02024-07-17 12:39:50 +02005
6import org.junit.jupiter.api.Test;
7
8import com.fasterxml.jackson.databind.JsonNode;
9import com.google.common.net.HttpHeaders;
10
11import de.ids_mannheim.korap.exceptions.KustvaktException;
12import de.ids_mannheim.korap.exceptions.StatusCodes;
13import de.ids_mannheim.korap.utils.JsonUtils;
14import jakarta.ws.rs.core.Response;
15import jakarta.ws.rs.core.Response.Status;
16
17public class UserGroupListTest extends UserGroupTestBase{
18
19 @Test
20 public void testListDoryGroups () throws KustvaktException {
21 createDoryGroup();
margaretha04836712024-08-16 13:03:56 +020022 addMember(doryGroupName, "marlin", "dory");
23 addMember(doryGroupName, "nemo", "dory");
margaretha57103a02024-07-17 12:39:50 +020024
margaretha99470ce2024-07-17 13:52:37 +020025 JsonNode node = listUserGroups("dory");
margaretha57103a02024-07-17 12:39:50 +020026 JsonNode group = node.get(0);
Marc Kupietz5c9e0cc2025-09-24 14:49:26 +020027 assertEquals("dory-group", group.at("/name").asText());
28 assertEquals("dory", group.at("/owner").asText());
margaretha57103a02024-07-17 12:39:50 +020029 assertEquals(3, group.at("/members").size());
30
Marc Kupietz5c9e0cc2025-09-24 14:49:26 +020031 assertEquals("dory", group.at("/members/0/userId").asText());
32 assertEquals(1, group.at("/members/0/roles").size());
33 assertEquals("GROUP_ADMIN", group.at("/members/0/roles/0").asText());
34 assertEquals(5, group.at("/members/0/privileges").size());
margaretha987a0512024-10-23 11:19:29 +020035
Marc Kupietz5c9e0cc2025-09-24 14:49:26 +020036 assertEquals("marlin", group.at("/members/1/userId").asText());
37 assertEquals(1, group.at("/members/1/roles").size());
38 assertEquals("GROUP_MEMBER", group.at("/members/1/roles/0").asText());
margaretha987a0512024-10-23 11:19:29 +020039
margaretha57103a02024-07-17 12:39:50 +020040 testListNemoGroups();
41 testListMarlinGroups();
margaretha99470ce2024-07-17 13:52:37 +020042
43 deleteGroupByName(doryGroupName,"dory");
44 deleteGroupByName(marlinGroupName, "marlin");
margaretha57103a02024-07-17 12:39:50 +020045 }
46
47 public void testListNemoGroups () throws KustvaktException {
margaretha99470ce2024-07-17 13:52:37 +020048 JsonNode node = listUserGroups("nemo");
Marc Kupietz5c9e0cc2025-09-24 14:49:26 +020049 assertEquals("dory-group", node.at("/0/name").asText());
50 assertEquals("dory", node.at("/0/owner").asText());
margaretha57103a02024-07-17 12:39:50 +020051 // group members are not allowed to see other members
margaretha2b533302024-07-31 13:49:15 +020052 assertTrue(node.at("/0/members").isMissingNode());
margaretha090d6292024-08-09 18:35:05 +020053// System.out.println(node.toPrettyString());
margaretha57103a02024-07-17 12:39:50 +020054 }
55
56 // marlin has 2 groups
57 public void testListMarlinGroups () throws KustvaktException {
58 createMarlinGroup();
margaretha99470ce2024-07-17 13:52:37 +020059 JsonNode node = listUserGroups("marlin");
margaretha57103a02024-07-17 12:39:50 +020060 assertEquals(2, node.size());
61 }
62
63 @Test
64 public void testListGroupGuest () throws KustvaktException {
65 Response response = target().path(API_VERSION).path("group").request()
66 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").get();
67 String entity = response.readEntity(String.class);
68 JsonNode node = JsonUtils.readTree(entity);
69 assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
70 assertEquals(StatusCodes.AUTHORIZATION_FAILED,
71 node.at("/errors/0/0").asInt());
Marc Kupietz5c9e0cc2025-09-24 14:49:26 +020072 assertEquals("Unauthorized operation for user: guest",
73 node.at("/errors/0/1").asText());
margaretha57103a02024-07-17 12:39:50 +020074 }
margaretha57103a02024-07-17 12:39:50 +020075}