Implement community feedback

This commit is contained in:
Mykhaylo
2020-03-12 22:21:17 +01:00
parent 46e532218c
commit 5d98bcd911
2 changed files with 44 additions and 9 deletions

View File

@@ -18,7 +18,6 @@ import org.dspace.content.WorkspaceItem;
import org.dspace.content.service.WorkspaceItemService;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.service.EPersonService;
import org.dspace.services.RequestService;
import org.dspace.services.model.Request;
import org.slf4j.Logger;
@@ -40,9 +39,6 @@ public class WorkspaceItemRestPermissionEvaluatorPlugin extends RestObjectPermis
@Autowired
private RequestService requestService;
@Autowired
private EPersonService ePersonService;
@Autowired
WorkspaceItemService wis;
@@ -66,7 +62,7 @@ public class WorkspaceItemRestPermissionEvaluatorPlugin extends RestObjectPermis
EPerson ePerson = null;
WorkspaceItem witem = null;
try {
ePerson = ePersonService.findByEmail(context, (String) authentication.getPrincipal());
ePerson = context.getCurrentUser();
Integer dsoId = Integer.parseInt(targetId.toString());
// anonymous user

View File

@@ -563,7 +563,7 @@ public class WorkspaceItemRestRepositoryIT extends AbstractControllerIntegration
.build();
Collection col1 = CollectionBuilder.createCollection(context, parentCommunity)
.withName("Collection 1")
.withSubmitterGroup(submitter1)
.withSubmitterGroup(submitter1, submitter2)
.build();
context.setCurrentUser(submitter1);
@@ -584,15 +584,42 @@ public class WorkspaceItemRestRepositoryIT extends AbstractControllerIntegration
.withMimeType("text/plain").build();
}
context.setCurrentUser(submitter2);
WorkspaceItem witem2 = WorkspaceItemBuilder.createWorkspaceItem(context, col1)
.withTitle("Workspace Item 2")
.withIssueDate("2020-02-02")
.build();
Item item2 = witem2.getItem();
String bitstreamContent2 = "ThisIsSomeDummyText2";
Bitstream bitstream2 = null;
try (InputStream is2 = IOUtils.toInputStream(bitstreamContent2, CharEncoding.UTF_8)) {
bitstream2 = BitstreamBuilder
.createBitstream(context, item2, is2)
.withName("Bitstream 2")
.withMimeType("text/plain").build();
}
context.restoreAuthSystemState();
// submitter2 attempt to delete the workspaceitem of submitter1
String tokenSubmitter2 = getAuthToken(submitter2.getEmail(), "qwerty02");
getClient(tokenSubmitter2).perform(delete("/api/submission/workspaceitems/" + witem.getID()))
.andExpect(status().isForbidden());
String authToken = getAuthToken(admin.getEmail(), password);
getClient(authToken).perform(get("/api/submission/workspaceitems/" + witem.getID()))
.andExpect(status().isOk());
// check that workspaceitem was not deleted
String tokenAdmin = getAuthToken(admin.getEmail(), password);
getClient(tokenAdmin).perform(get("/api/submission/workspaceitems/" + witem.getID()))
.andExpect(status().isOk());
// newly created account attempt to delete the workspaceitem of submitter1
String tokenEPerson = getAuthToken(eperson.getEmail(), password);
getClient(tokenSubmitter2).perform(delete("/api/submission/workspaceitems/" + witem.getID()))
.andExpect(status().isForbidden());
// check that workspaceitem was not deleted
getClient(tokenAdmin).perform(get("/api/submission/workspaceitems/" + witem.getID()))
.andExpect(status().isOk());
}
@Test
@@ -697,6 +724,18 @@ public class WorkspaceItemRestRepositoryIT extends AbstractControllerIntegration
"2016-02-13"))))
.andExpect(jsonPath("$.page.size", is(20)))
.andExpect(jsonPath("$.page.totalElements", is(1)));
// also the admin should be able to retrieve the submission of an another user
String tokenAdmin = getAuthToken(admin.getEmail(), password);
getClient(tokenAdmin).perform(get("/api/submission/workspaceitems/search/findBySubmitter")
.param("uuid", submitter1.getID().toString()))
.andExpect(status().isOk())
.andExpect(jsonPath("$._embedded.workspaceitems", Matchers.containsInAnyOrder(
WorkspaceItemMatcher.matchItemWithTitleAndDateIssued
(workspaceItem1, "Workspace Item 1", "2017-10-17"),
WorkspaceItemMatcher.matchItemWithTitleAndDateIssued
(workspaceItem2, "Workspace Item 2", "2016-02-13"))))
.andExpect(jsonPath("$.page.totalElements", is(2)));
}
@Test