| margaretha | 99470ce | 2024-07-17 13:52:37 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.web.controller.usergroup; |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 2 | |
| 3 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 4 | import static org.junit.jupiter.api.Assertions.assertTrue; |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 5 | |
| 6 | import org.junit.jupiter.api.Test; |
| 7 | |
| 8 | import com.fasterxml.jackson.databind.JsonNode; |
| 9 | import com.google.common.net.HttpHeaders; |
| 10 | |
| 11 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| 12 | import de.ids_mannheim.korap.exceptions.StatusCodes; |
| 13 | import de.ids_mannheim.korap.utils.JsonUtils; |
| 14 | import jakarta.ws.rs.core.Response; |
| 15 | import jakarta.ws.rs.core.Response.Status; |
| 16 | |
| 17 | public class UserGroupListTest extends UserGroupTestBase{ |
| 18 | |
| 19 | @Test |
| 20 | public void testListDoryGroups () throws KustvaktException { |
| 21 | createDoryGroup(); |
| margaretha | 0483671 | 2024-08-16 13:03:56 +0200 | [diff] [blame] | 22 | addMember(doryGroupName, "marlin", "dory"); |
| 23 | addMember(doryGroupName, "nemo", "dory"); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 24 | |
| margaretha | 99470ce | 2024-07-17 13:52:37 +0200 | [diff] [blame] | 25 | JsonNode node = listUserGroups("dory"); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 26 | JsonNode group = node.get(0); |
| Marc Kupietz | 5c9e0cc | 2025-09-24 14:49:26 +0200 | [diff] [blame] | 27 | assertEquals("dory-group", group.at("/name").asText()); |
| 28 | assertEquals("dory", group.at("/owner").asText()); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 29 | assertEquals(3, group.at("/members").size()); |
| 30 | |
| Marc Kupietz | 5c9e0cc | 2025-09-24 14:49:26 +0200 | [diff] [blame] | 31 | 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()); |
| margaretha | 987a051 | 2024-10-23 11:19:29 +0200 | [diff] [blame] | 35 | |
| Marc Kupietz | 5c9e0cc | 2025-09-24 14:49:26 +0200 | [diff] [blame] | 36 | 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()); |
| margaretha | 987a051 | 2024-10-23 11:19:29 +0200 | [diff] [blame] | 39 | |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 40 | testListNemoGroups(); |
| 41 | testListMarlinGroups(); |
| margaretha | 99470ce | 2024-07-17 13:52:37 +0200 | [diff] [blame] | 42 | |
| 43 | deleteGroupByName(doryGroupName,"dory"); |
| 44 | deleteGroupByName(marlinGroupName, "marlin"); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 45 | } |
| 46 | |
| 47 | public void testListNemoGroups () throws KustvaktException { |
| margaretha | 99470ce | 2024-07-17 13:52:37 +0200 | [diff] [blame] | 48 | JsonNode node = listUserGroups("nemo"); |
| Marc Kupietz | 5c9e0cc | 2025-09-24 14:49:26 +0200 | [diff] [blame] | 49 | assertEquals("dory-group", node.at("/0/name").asText()); |
| 50 | assertEquals("dory", node.at("/0/owner").asText()); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 51 | // group members are not allowed to see other members |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 52 | assertTrue(node.at("/0/members").isMissingNode()); |
| margaretha | 090d629 | 2024-08-09 18:35:05 +0200 | [diff] [blame] | 53 | // System.out.println(node.toPrettyString()); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 54 | } |
| 55 | |
| 56 | // marlin has 2 groups |
| 57 | public void testListMarlinGroups () throws KustvaktException { |
| 58 | createMarlinGroup(); |
| margaretha | 99470ce | 2024-07-17 13:52:37 +0200 | [diff] [blame] | 59 | JsonNode node = listUserGroups("marlin"); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 60 | 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 Kupietz | 5c9e0cc | 2025-09-24 14:49:26 +0200 | [diff] [blame] | 72 | assertEquals("Unauthorized operation for user: guest", |
| 73 | node.at("/errors/0/1").asText()); |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 74 | } |
| margaretha | 57103a0 | 2024-07-17 12:39:50 +0200 | [diff] [blame] | 75 | } |