mirror of
https://github.com/sismics/docs.git
synced 2025-04-19 01:56:24 +02:00
130 lines
4.9 KiB
Java
130 lines
4.9 KiB
Java
package com.sismics.docs.rest;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import javax.json.JsonArray;
|
|
import javax.json.JsonObject;
|
|
import javax.ws.rs.client.Entity;
|
|
import javax.ws.rs.core.Form;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
|
|
import com.sismics.util.filter.TokenBasedSecurityFilter;
|
|
|
|
|
|
/**
|
|
* Test the group resource.
|
|
*
|
|
* @author bgamard
|
|
*/
|
|
public class TestGroupResource extends BaseJerseyTest {
|
|
/**
|
|
* Test the group resource.
|
|
*
|
|
* @throws JSONException
|
|
*/
|
|
@Test
|
|
public void testGroupResource() {
|
|
// Login admin
|
|
String adminToken = clientUtil.login("admin", "admin", false);
|
|
|
|
// Create group hierarchy
|
|
clientUtil.createGroup("g1");
|
|
clientUtil.createGroup("g11", "g1");
|
|
clientUtil.createGroup("g12", "g1");
|
|
clientUtil.createGroup("g111", "g11");
|
|
clientUtil.createGroup("g112", "g11");
|
|
|
|
// Login group1
|
|
clientUtil.createUser("group1", "g112", "g12");
|
|
String group1Token = clientUtil.login("group1");
|
|
|
|
// Get all groups
|
|
JsonObject json = target().path("/group")
|
|
.queryParam("sort_column", "1")
|
|
.queryParam("asc", "true")
|
|
.request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
|
.get(JsonObject.class);
|
|
JsonArray groups = json.getJsonArray("groups");
|
|
Assert.assertEquals(6, groups.size());
|
|
JsonObject groupG11 = groups.getJsonObject(2);
|
|
Assert.assertEquals("g11", groupG11.getString("name"));
|
|
Assert.assertEquals("g1", groupG11.getString("parent"));
|
|
|
|
// Check admin groups (all computed groups)
|
|
json = target().path("/user").request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
|
.get(JsonObject.class);
|
|
groups = json.getJsonArray("groups");
|
|
Assert.assertEquals(1, groups.size());
|
|
Assert.assertEquals("administrators", groups.getString(0));
|
|
|
|
// Check group1 groups (all computed groups)
|
|
json = target().path("/user").request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, group1Token)
|
|
.get(JsonObject.class);
|
|
groups = json.getJsonArray("groups");
|
|
List<String> groupList = new ArrayList<>();
|
|
for (int i = 0; i < groups.size(); i++) {
|
|
groupList.add(groups.getString(i));
|
|
}
|
|
Assert.assertEquals(4, groups.size());
|
|
Assert.assertTrue(groupList.contains("g1"));
|
|
Assert.assertTrue(groupList.contains("g12"));
|
|
Assert.assertTrue(groupList.contains("g11"));
|
|
Assert.assertTrue(groupList.contains("g112"));
|
|
|
|
// Check group1 groups with admin (only direct groups)
|
|
json = target().path("/user/group1").request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
|
.get(JsonObject.class);
|
|
groups = json.getJsonArray("groups");
|
|
Assert.assertEquals(2, groups.size());
|
|
Assert.assertEquals("g112", groups.getString(0));
|
|
Assert.assertEquals("g12", groups.getString(1));
|
|
|
|
// List all users in group1
|
|
json = target().path("/user/list")
|
|
.queryParam("group", "g112")
|
|
.request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
|
.get(JsonObject.class);
|
|
JsonArray users = json.getJsonArray("users");
|
|
Assert.assertEquals(1, users.size());
|
|
|
|
// Add group1 to g112 (again)
|
|
json = target().path("/group/g112").request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
|
.put(Entity.form(new Form()
|
|
.param("username", "group1")), JsonObject.class);
|
|
|
|
// Check group1 groups (all computed groups)
|
|
json = target().path("/user").request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, group1Token)
|
|
.get(JsonObject.class);
|
|
groups = json.getJsonArray("groups");
|
|
Assert.assertEquals(4, groups.size());
|
|
|
|
// Remove group1 from g12
|
|
json = target().path("/group/g12/group1").request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
|
.delete(JsonObject.class);
|
|
|
|
// Check group1 groups (all computed groups)
|
|
json = target().path("/user").request()
|
|
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, group1Token)
|
|
.get(JsonObject.class);
|
|
groups = json.getJsonArray("groups");
|
|
groupList = new ArrayList<>();
|
|
for (int i = 0; i < groups.size(); i++) {
|
|
groupList.add(groups.getString(i));
|
|
}
|
|
Assert.assertEquals(3, groups.size());
|
|
Assert.assertTrue(groupList.contains("g1"));
|
|
Assert.assertTrue(groupList.contains("g11"));
|
|
Assert.assertTrue(groupList.contains("g112"));
|
|
}
|
|
} |