1
0
mirror of https://github.com/sismics/docs.git synced 2025-12-13 17:56:20 +00:00

Closes #68: Add contributors list on documents

This commit is contained in:
jendib
2016-02-21 23:43:35 +01:00
parent 2824878065
commit 943465a390
10 changed files with 279 additions and 16 deletions

View File

@@ -40,12 +40,14 @@ import com.google.common.io.ByteStreams;
import com.sismics.docs.core.constant.Constants;
import com.sismics.docs.core.constant.PermType;
import com.sismics.docs.core.dao.jpa.AclDao;
import com.sismics.docs.core.dao.jpa.ContributorDao;
import com.sismics.docs.core.dao.jpa.DocumentDao;
import com.sismics.docs.core.dao.jpa.FileDao;
import com.sismics.docs.core.dao.jpa.TagDao;
import com.sismics.docs.core.dao.jpa.UserDao;
import com.sismics.docs.core.dao.jpa.criteria.DocumentCriteria;
import com.sismics.docs.core.dao.jpa.dto.AclDto;
import com.sismics.docs.core.dao.jpa.dto.ContributorDto;
import com.sismics.docs.core.dao.jpa.dto.DocumentDto;
import com.sismics.docs.core.dao.jpa.dto.TagDto;
import com.sismics.docs.core.event.DocumentCreatedAsyncEvent;
@@ -159,6 +161,17 @@ public class DocumentResource extends BaseResource {
document.add("acls", aclList)
.add("writable", writable);
// Add contributors
ContributorDao contributorDao = new ContributorDao();
List<ContributorDto> contributorDtoList = contributorDao.getByDocumentId(documentId);
JsonArrayBuilder contributorList = Json.createArrayBuilder();
for (ContributorDto contributorDto : contributorDtoList) {
contributorList.add(Json.createObjectBuilder()
.add("username", contributorDto.getUsername())
.add("email", contributorDto.getEmail()));
}
document.add("contributors", contributorList);
return Response.ok().entity(document.build()).build();
}

View File

@@ -100,20 +100,36 @@ public class TestAclResource extends BaseJerseyTest {
acls = json.getJsonArray("acls");
Assert.assertEquals(4, acls.size());
// Update the document as acl2
json = target().path("/document/" + document1Id).request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, acl2Token)
.post(Entity.form(new Form()
.param("title", "My new super document 1")), JsonObject.class);
Assert.assertEquals(document1Id, json.getString("id"));
// Get the document as acl2
json = target().path("/document/" + document1Id).request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, acl2Token)
.get(JsonObject.class);
Assert.assertEquals(document1Id, json.getString("id"));
JsonArray contributors = json.getJsonArray("contributors");
Assert.assertEquals(2, contributors.size());
// Delete the ACL WRITE for acl2 with acl2
target().path("/acl/" + document1Id + "/WRITE/" + acl2Id).request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, acl2Token)
.delete();
.delete(JsonObject.class);
// Delete the ACL READ for acl2 with acl2
target().path("/acl/" + document1Id + "/READ/" + acl2Id).request()
// Delete the ACL READ for acl2 with acl2 (not authorized)
response = target().path("/acl/" + document1Id + "/READ/" + acl2Id).request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, acl2Token)
.delete();
Assert.assertEquals(Status.FORBIDDEN, Status.fromStatusCode(response.getStatus()));
// Delete the ACL READ for acl2 with acl1
target().path("/acl/" + document1Id + "/READ/" + acl2Id).request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, acl1Token)
.delete();
.delete(JsonObject.class);
// Get the document as acl1
json = target().path("/document/" + document1Id).request()

View File

@@ -222,6 +222,9 @@ public class TestDocumentResource extends BaseJerseyTest {
tags = json.getJsonArray("tags");
Assert.assertEquals(1, tags.size());
Assert.assertEquals(tag1Id, tags.getJsonObject(0).getString("id"));
JsonArray contributors = json.getJsonArray("contributors");
Assert.assertEquals(1, contributors.size());
Assert.assertEquals("document1", contributors.getJsonObject(0).getString("username"));
// Export a document in PDF format
Response response = target().path("/document/" + document1Id).request()
@@ -279,6 +282,9 @@ public class TestDocumentResource extends BaseJerseyTest {
tags = json.getJsonArray("tags");
Assert.assertEquals(1, tags.size());
Assert.assertEquals(tag2Id, tags.getJsonObject(0).getString("id"));
contributors = json.getJsonArray("contributors");
Assert.assertEquals(1, contributors.size());
Assert.assertEquals("document1", contributors.getJsonObject(0).getString("username"));
// Deletes a document
json = target().path("/document/" + document1Id).request()