| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.web.controller.usergroup; |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 2 | |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 3 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 4 | |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 5 | import org.junit.jupiter.api.Test; |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 6 | |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 7 | import com.fasterxml.jackson.databind.JsonNode; |
| 8 | import com.google.common.net.HttpHeaders; |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 9 | |
| 10 | import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler; |
| 11 | import de.ids_mannheim.korap.config.Attributes; |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 12 | import de.ids_mannheim.korap.constant.PredefinedRole; |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 13 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 14 | import de.ids_mannheim.korap.exceptions.StatusCodes; |
| 15 | import de.ids_mannheim.korap.service.UserGroupService; |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 16 | import de.ids_mannheim.korap.utils.JsonUtils; |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 17 | import jakarta.ws.rs.ProcessingException; |
| 18 | import jakarta.ws.rs.client.Entity; |
| 19 | import jakarta.ws.rs.core.Form; |
| 20 | import jakarta.ws.rs.core.MediaType; |
| 21 | import jakarta.ws.rs.core.Response; |
| 22 | import jakarta.ws.rs.core.Response.Status; |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 23 | |
| margaretha | a048627 | 2018-04-12 19:59:31 +0200 | [diff] [blame] | 24 | /** |
| 25 | * @author margaretha |
| margaretha | a048627 | 2018-04-12 19:59:31 +0200 | [diff] [blame] | 26 | */ |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 27 | public class UserGroupControllerAdminTest extends UserGroupTestBase { |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 28 | |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 29 | private String testUser = "group-admin"; |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 30 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 31 | private JsonNode listGroup (String username) |
| 32 | throws ProcessingException, KustvaktException { |
| 33 | Response response = target().path(API_VERSION).path("group").request() |
| 34 | .header(Attributes.AUTHORIZATION, HttpAuthorizationHandler |
| 35 | .createBasicAuthorizationHeaderValue(testUser, "pass")) |
| 36 | .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").get(); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 37 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 38 | String entity = response.readEntity(String.class); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 39 | JsonNode node = JsonUtils.readTree(entity); |
| 40 | return node; |
| 41 | } |
| 42 | |
| 43 | @Test |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 44 | public void testListUserGroupsUsingAdminToken () throws KustvaktException { |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 45 | createDoryGroup(); |
| 46 | |
| 47 | createMarlinGroup(); |
| 48 | inviteMember(marlinGroupName, "marlin", "dory"); |
| 49 | subscribe(marlinGroupName, "dory"); |
| 50 | |
| 51 | String testGroup = "test-group"; |
| 52 | createUserGroup("test-group", "Test group to be deleted.", "marlin"); |
| 53 | inviteMember(testGroup, "marlin", "dory"); |
| 54 | subscribe(testGroup, "dory"); |
| 55 | deleteGroupByName("test-group", "marlin"); |
| 56 | |
| 57 | |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 58 | Form f = new Form(); |
| 59 | f.param("username", "dory"); |
| 60 | f.param("token", "secret"); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 61 | Response response = target().path(API_VERSION).path("admin") |
| 62 | .path("group").path("list").request() |
| 63 | .header(HttpHeaders.CONTENT_TYPE, |
| 64 | MediaType.APPLICATION_FORM_URLENCODED) |
| 65 | .post(Entity.form(f)); |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 66 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 67 | String entity = response.readEntity(String.class); |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 68 | JsonNode node = JsonUtils.readTree(entity); |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 69 | assertEquals(2, node.size()); |
| 70 | |
| 71 | testListUserGroupsWithStatus(); |
| 72 | |
| 73 | deleteGroupByName(doryGroupName, "dory"); |
| 74 | deleteGroupByName(marlinGroupName, "marlin"); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 75 | } |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 76 | |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 77 | /** |
| 78 | * Cannot use admin token |
| 79 | * see |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 80 | * {@link UserGroupService#retrieveUserGroupByStatus(String, |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 81 | * String, de.ids_mannheim.korap.constant.UserGroupStatus)} |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 82 | * |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 83 | * @throws KustvaktException |
| 84 | */ |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 85 | // @Test |
| 86 | // public void testListUserGroupsWithAdminToken () throws KustvaktException { |
| 87 | // Response response = target().path(API_VERSION).path("group") |
| 88 | // .path("list").path("system-admin") |
| 89 | // .queryParam("username", "dory") |
| 90 | // .queryParam("token", "secret") |
| 91 | // .request() |
| 92 | // .get(); |
| 93 | // |
| 94 | // assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| 95 | // String entity = response.readEntity(String.class); |
| 96 | // JsonNode node = JsonUtils.readTree(entity); |
| 97 | // assertEquals(3, node.size()); |
| 98 | // } |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 99 | @Test |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 100 | public void testListUserGroupsUnauthorized () throws KustvaktException { |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 101 | Form f = new Form(); |
| 102 | f.param("username", "dory"); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 103 | Response response = target().path(API_VERSION).path("admin") |
| 104 | .path("group").path("list").request() |
| 105 | .header(Attributes.AUTHORIZATION, HttpAuthorizationHandler |
| 106 | .createBasicAuthorizationHeaderValue(testUser, "pass")) |
| 107 | .header(HttpHeaders.CONTENT_TYPE, |
| 108 | MediaType.APPLICATION_FORM_URLENCODED) |
| 109 | .post(Entity.form(f)); |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 110 | assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus()); |
| 111 | String entity = response.readEntity(String.class); |
| 112 | JsonNode node = JsonUtils.readTree(entity); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 113 | assertEquals(StatusCodes.AUTHORIZATION_FAILED, |
| 114 | node.at("/errors/0/0").asInt()); |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 115 | } |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 116 | |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 117 | private void testListUserGroupsWithStatus () throws KustvaktException { |
| margaretha | bdde7f4 | 2023-02-10 08:24:03 +0100 | [diff] [blame] | 118 | Form f = new Form(); |
| 119 | f.param("username", "dory"); |
| 120 | f.param("status", "ACTIVE"); |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 121 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 122 | Response response = target().path(API_VERSION).path("admin") |
| 123 | .path("group").path("list").queryParam("username", "dory") |
| 124 | .queryParam("status", "ACTIVE").request() |
| 125 | .header(Attributes.AUTHORIZATION, |
| 126 | HttpAuthorizationHandler |
| 127 | .createBasicAuthorizationHeaderValue( |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 128 | admin, "pass")) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 129 | .header(HttpHeaders.CONTENT_TYPE, |
| 130 | MediaType.APPLICATION_FORM_URLENCODED) |
| 131 | .post(Entity.form(f)); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 132 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 133 | String entity = response.readEntity(String.class); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 134 | JsonNode node = JsonUtils.readTree(entity); |
| 135 | assertEquals(2, node.size()); |
| 136 | } |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 137 | |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 138 | // same as list user-groups of the admin |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 139 | @Test |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 140 | public void testListWithoutUsername () |
| 141 | throws ProcessingException, KustvaktException { |
| 142 | Response response = target().path(API_VERSION).path("group").request() |
| 143 | .header(Attributes.AUTHORIZATION, |
| 144 | HttpAuthorizationHandler |
| 145 | .createBasicAuthorizationHeaderValue( |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 146 | admin, "pass")) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 147 | .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").get(); |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 148 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 149 | String entity = response.readEntity(String.class); |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 150 | assertEquals(entity, "[]"); |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 151 | } |
| 152 | |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 153 | @Test |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 154 | public void testListByStatusAll () |
| 155 | throws ProcessingException, KustvaktException { |
| 156 | Response response = target().path(API_VERSION).path("admin") |
| 157 | .path("group").path("list").request() |
| 158 | .header(Attributes.AUTHORIZATION, |
| 159 | HttpAuthorizationHandler |
| 160 | .createBasicAuthorizationHeaderValue( |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 161 | admin, "pass")) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 162 | .header(HttpHeaders.CONTENT_TYPE, |
| 163 | MediaType.APPLICATION_FORM_URLENCODED) |
| 164 | .post(null); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 165 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 166 | String entity = response.readEntity(String.class); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 167 | JsonNode node = JsonUtils.readTree(entity); |
| margaretha | b1081b1 | 2018-07-03 23:35:01 +0200 | [diff] [blame] | 168 | boolean containsHiddenStatus = false; |
| 169 | for (int i = 0; i < node.size(); i++) { |
| 170 | if (node.get(i).at("/status").asText().equals("HIDDEN")) { |
| 171 | containsHiddenStatus = true; |
| 172 | } |
| 173 | } |
| 174 | assertEquals(true, containsHiddenStatus); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 175 | } |
| 176 | |
| 177 | @Test |
| margaretha | 7568f78 | 2024-07-25 09:55:39 +0200 | [diff] [blame] | 178 | public void testListHiddenGroups () |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 179 | throws ProcessingException, KustvaktException { |
| margaretha | 7568f78 | 2024-07-25 09:55:39 +0200 | [diff] [blame] | 180 | JsonNode node = listHiddenGroup(); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 181 | assertEquals(1, node.size()); |
| margaretha | 293ee03 | 2018-03-20 20:11:52 +0100 | [diff] [blame] | 182 | } |
| 183 | |
| 184 | @Test |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 185 | public void testUserGroupAdmin () |
| 186 | throws ProcessingException, KustvaktException { |
| margaretha | da5a6ab | 2019-11-08 10:06:05 +0100 | [diff] [blame] | 187 | String groupName = "admin-test-group"; |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 188 | Response response = createUserGroup(groupName, "test group", testUser); |
| margaretha | ca7cff8 | 2019-11-12 12:06:37 +0100 | [diff] [blame] | 189 | assertEquals(Status.CREATED.getStatusCode(), response.getStatus()); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 190 | // list user group |
| margaretha | 03b195a | 2019-11-12 14:57:15 +0100 | [diff] [blame] | 191 | JsonNode node = listGroup(testUser); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 192 | assertEquals(1, node.size()); |
| 193 | node = node.get(0); |
| margaretha | da5a6ab | 2019-11-08 10:06:05 +0100 | [diff] [blame] | 194 | assertEquals(groupName, node.get("name").asText()); |
| margaretha | a18ab2b | 2019-11-11 12:55:26 +0100 | [diff] [blame] | 195 | testInviteMember(groupName); |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 196 | subscribe(groupName, "marlin"); |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 197 | testAddAdminRole(groupName, "marlin"); |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 198 | testDeleteMemberRoles(groupName, "marlin"); |
| margaretha | a18ab2b | 2019-11-11 12:55:26 +0100 | [diff] [blame] | 199 | testDeleteMember(groupName); |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 200 | |
| 201 | // delete group |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 202 | deleteGroupByName(groupName, admin); |
| margaretha | 845f22f | 2024-07-18 12:33:00 +0200 | [diff] [blame] | 203 | // check group |
| 204 | node = listGroup(testUser); |
| 205 | assertEquals(0, node.size()); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 206 | } |
| 207 | |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 208 | |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 209 | private void testAddAdminRole (String groupName, String memberUsername) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 210 | throws ProcessingException, KustvaktException { |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 211 | Response response = addAdminRole(groupName, memberUsername, admin); |
| 212 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| 213 | |
| margaretha | a18ab2b | 2019-11-11 12:55:26 +0100 | [diff] [blame] | 214 | JsonNode node = retrieveGroup(groupName).at("/members"); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 215 | JsonNode member; |
| 216 | for (int i = 0; i < node.size(); i++) { |
| 217 | member = node.get(i); |
| 218 | if (member.at("/userId").asText().equals(memberUsername)) { |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 219 | assertEquals(6, member.at("/privileges").size()); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 220 | break; |
| 221 | } |
| 222 | } |
| 223 | } |
| 224 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 225 | private void testDeleteMemberRoles (String groupName, String memberUsername) |
| 226 | throws ProcessingException, KustvaktException { |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 227 | Form form = new Form(); |
| 228 | form.param("memberUsername", memberUsername); |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 229 | // USER_GROUP_ADMIN |
| margaretha | 777ef10 | 2024-07-22 10:10:50 +0200 | [diff] [blame] | 230 | form.param("role", PredefinedRole.GROUP_ADMIN.name()); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 231 | Response response = target().path(API_VERSION).path("group") |
| 232 | .path("@" + groupName).path("role").path("delete").request() |
| 233 | .header(Attributes.AUTHORIZATION, |
| 234 | HttpAuthorizationHandler |
| 235 | .createBasicAuthorizationHeaderValue( |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 236 | admin, "password")) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 237 | .post(Entity.form(form)); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 238 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| margaretha | a18ab2b | 2019-11-11 12:55:26 +0100 | [diff] [blame] | 239 | JsonNode node = retrieveGroup(groupName).at("/members"); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 240 | JsonNode member; |
| 241 | for (int i = 0; i < node.size(); i++) { |
| 242 | member = node.get(i); |
| 243 | if (member.at("/userId").asText().equals(memberUsername)) { |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 244 | assertEquals(1, member.at("/privileges").size()); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 245 | break; |
| 246 | } |
| 247 | } |
| 248 | } |
| 249 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 250 | private JsonNode retrieveGroup (String groupName) |
| 251 | throws ProcessingException, KustvaktException { |
| 252 | Response response = target().path(API_VERSION).path("admin") |
| 253 | .path("group").path("@" + groupName).request() |
| 254 | .header(Attributes.AUTHORIZATION, |
| 255 | HttpAuthorizationHandler |
| 256 | .createBasicAuthorizationHeaderValue( |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 257 | admin, "pass")) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 258 | .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").post(null); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 259 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 260 | String entity = response.readEntity(String.class); |
| margaretha | 18533fd | 2018-03-28 16:01:06 +0200 | [diff] [blame] | 261 | JsonNode node = JsonUtils.readTree(entity); |
| 262 | return node; |
| 263 | } |
| 264 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 265 | private void testDeleteMember (String groupName) |
| 266 | throws ProcessingException, KustvaktException { |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 267 | // delete marlin from group |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 268 | Response response = target().path(API_VERSION).path("group") |
| 269 | .path("@" + groupName).path("~marlin").request() |
| 270 | .header(Attributes.AUTHORIZATION, |
| 271 | HttpAuthorizationHandler |
| 272 | .createBasicAuthorizationHeaderValue( |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 273 | admin, "pass")) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 274 | .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").delete(); |
| margaretha | e68021a | 2018-04-09 16:13:12 +0200 | [diff] [blame] | 275 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 276 | // check group member |
| margaretha | 03b195a | 2019-11-12 14:57:15 +0100 | [diff] [blame] | 277 | JsonNode node = listGroup(testUser); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 278 | node = node.get(0); |
| 279 | assertEquals(3, node.get("members").size()); |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 280 | assertEquals(node.at("/members/1/userId").asText(), "nemo"); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 281 | } |
| 282 | |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 283 | private void testInviteMember (String groupName) |
| 284 | throws ProcessingException, KustvaktException { |
| abcpro1 | 73fe8f2 | 2022-11-08 19:56:52 +0000 | [diff] [blame] | 285 | Form form = new Form(); |
| 286 | form.param("members", "marlin,nemo,darla"); |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 287 | Response response = target().path(API_VERSION).path("group") |
| 288 | .path("@" + groupName).path("invite").request() |
| 289 | .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32") |
| 290 | .header(Attributes.AUTHORIZATION, |
| 291 | HttpAuthorizationHandler |
| 292 | .createBasicAuthorizationHeaderValue( |
| margaretha | 5899529 | 2024-07-31 12:02:45 +0200 | [diff] [blame] | 293 | admin, "pass")) |
| margaretha | 35e1ca2 | 2023-11-16 22:00:01 +0100 | [diff] [blame] | 294 | .post(Entity.form(form)); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 295 | assertEquals(Status.OK.getStatusCode(), response.getStatus()); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 296 | // list group |
| margaretha | 03b195a | 2019-11-12 14:57:15 +0100 | [diff] [blame] | 297 | JsonNode node = listGroup(testUser); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 298 | node = node.get(0); |
| 299 | assertEquals(4, node.get("members").size()); |
| Marc Kupietz | d43a98d | 2023-09-22 17:11:46 +0200 | [diff] [blame] | 300 | assertEquals(node.at("/members/3/userId").asText(), "darla"); |
| margaretha | 2b53330 | 2024-07-31 13:49:15 +0200 | [diff] [blame] | 301 | assertEquals(0, node.at("/members/1/privileges").size()); |
| margaretha | cf4b26f | 2018-03-19 21:42:06 +0100 | [diff] [blame] | 302 | } |
| margaretha | 4edc70e | 2018-03-14 22:34:29 +0100 | [diff] [blame] | 303 | } |