blob: 82568c015ddd62a1480948c318aa829697e3edb0 [file] [log] [blame]
package de.ids_mannheim.korap.web.controller.usergroup;
import static org.junit.jupiter.api.Assertions.assertEquals;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.net.HttpHeaders;
import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.constant.PredefinedRole;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.utils.JsonUtils;
import de.ids_mannheim.korap.web.controller.OAuth2TestBase;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.core.Form;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
public abstract class UserGroupTestBase extends OAuth2TestBase {
protected String doryGroupName = "dory-group";
protected String marlinGroupName = "marlin-group";
protected String admin = "admin";
protected Response createUserGroup (String groupName, String description,
String username) throws KustvaktException {
Form form = new Form();
form.param("description", description);
Response response = target().path(API_VERSION).path("group")
.path("@" + groupName).request()
.header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue(username, "pass"))
.put(Entity.form(form));
return response;
}
protected Response deleteGroupByName (String groupName,String username)
throws KustvaktException {
Response response = target().path(API_VERSION).path("group")
.path("@" + groupName).request()
.header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue(username, "pass"))
.delete();
// assertEquals(Status.OK.getStatusCode(), response.getStatus());
return response;
}
protected JsonNode listUserGroups (String username)
throws KustvaktException {
Response response = target().path(API_VERSION).path("group").request()
.header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue(username, "pass"))
.get();
assertEquals(Status.OK.getStatusCode(), response.getStatus());
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
return node;
}
protected Response addMember (String groupName, String memberUsername,
String username) throws KustvaktException {
Form form = new Form();
form.param("members", memberUsername);
Response response = target().path(API_VERSION).path("group")
.path("@" + groupName).path("member").request()
.header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
.header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue(username, "pass"))
.put(Entity.form(form));
// assertEquals(Status.OK.getStatusCode(), response.getStatus());
return response;
}
protected void testAddMember (String groupName, String username,
String memberUsername)
throws KustvaktException {
Response response = addMember(groupName, memberUsername, username);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
// list group
JsonNode node = listUserGroups(username);
node = node.get(0);
assertEquals(2, node.get("members").size());
assertEquals(node.at("/members/1/userId").asText(), memberUsername);
assertEquals(1, node.at("/members/1/privileges").size());
}
protected Response addAdminRole (String groupName, String memberName,
String addedBy) throws KustvaktException {
Form form = new Form();
form.param("member", memberName);
form.param("role", PredefinedRole.GROUP_ADMIN.name());
Response response = target().path(API_VERSION).path("group")
.path("@" + groupName).path("role").path("add").path("admin")
.request()
.header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue(addedBy, "pass"))
.post(Entity.form(form));
return response;
}
protected Response deleteMember (String groupName, String memberName,
String deletedBy) throws KustvaktException {
Response response = target().path(API_VERSION).path("group")
.path("@" + groupName).path("~"+memberName).request()
.header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue(deletedBy, "pass"))
.delete();
// assertEquals(Status.OK.getStatusCode(), response.getStatus());
return response;
}
protected JsonNode createDoryGroup () throws KustvaktException {
Response response = createUserGroup(doryGroupName,
"This is dory-group.", "dory");
assertEquals(Status.CREATED.getStatusCode(), response.getStatus());
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
return node;
}
protected JsonNode createMarlinGroup () throws KustvaktException {
Response response = createUserGroup(marlinGroupName,
"This is marlin-group.", "marlin");
assertEquals(Status.CREATED.getStatusCode(), response.getStatus());
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
return node;
}
protected JsonNode getHiddenGroup (String queryName)
throws KustvaktException {
Form f = new Form();
f.param("queryName", queryName);
Response response = target().path(API_VERSION).path("admin")
.path("group").path("hidden").request()
.header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue("admin", "pass"))
.header(HttpHeaders.CONTENT_TYPE,
MediaType.APPLICATION_FORM_URLENCODED)
.post(Entity.form(f));
// assertEquals(Status.OK.getStatusCode(), response.getStatus());
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
return node;
}
protected JsonNode listHiddenGroup () throws KustvaktException {
Form f = new Form();
f.param("status", "HIDDEN");
Response response = target().path(API_VERSION).path("admin")
.path("group").path("list")
.request()
.header(Attributes.AUTHORIZATION,
HttpAuthorizationHandler
.createBasicAuthorizationHeaderValue(
"admin", "pass"))
.header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
.header(HttpHeaders.CONTENT_TYPE,
MediaType.APPLICATION_FORM_URLENCODED)
.post(Entity.form(f));
assertEquals(Status.OK.getStatusCode(), response.getStatus());
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
return node;
}
}