From 9534b7893e02fe226aab3ea6f36ece8d8dafc42b Mon Sep 17 00:00:00 2001 From: Koen Pauwels Date: Tue, 17 Jan 2023 16:14:42 +0100 Subject: [PATCH] 97183 Tests for findItemsWithEdit and countItemsWithEdit methods of ItemServiceImpl --- .../org/dspace/content/ItemServiceImpl.java | 4 +- .../content/service/ItemServiceTest.java | 81 +++++++++++++++++++ 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java index 380941b776..ec4b964c8d 100644 --- a/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/ItemServiceImpl.java @@ -1076,9 +1076,9 @@ public class ItemServiceImpl extends DSpaceObjectServiceImpl implements It } /** - * Finds all Indexed Items where the current user has submit rights. If the user is an Admin, + * Finds all Indexed Items where the current user has edit rights. If the user is an Admin, * this is all Indexed Items. Otherwise, it includes those Items where - * an indexed "submit" policy lists either the eperson or one of the eperson's groups + * an indexed "edit" policy lists either the eperson or one of the eperson's groups * * @param context DSpace context * @param discoverQuery diff --git a/dspace-api/src/test/java/org/dspace/content/service/ItemServiceTest.java b/dspace-api/src/test/java/org/dspace/content/service/ItemServiceTest.java index 267d66ac2f..f63e05ae3f 100644 --- a/dspace-api/src/test/java/org/dspace/content/service/ItemServiceTest.java +++ b/dspace-api/src/test/java/org/dspace/content/service/ItemServiceTest.java @@ -20,12 +20,15 @@ import java.util.stream.Collectors; import org.apache.logging.log4j.Logger; import org.dspace.AbstractIntegrationTestWithDatabase; import org.dspace.authorize.AuthorizeException; +import org.dspace.authorize.ResourcePolicy; import org.dspace.builder.CollectionBuilder; import org.dspace.builder.CommunityBuilder; import org.dspace.builder.EntityTypeBuilder; +import org.dspace.builder.GroupBuilder; import org.dspace.builder.ItemBuilder; import org.dspace.builder.RelationshipBuilder; import org.dspace.builder.RelationshipTypeBuilder; +import org.dspace.builder.ResourcePolicyBuilder; import org.dspace.content.Collection; import org.dspace.content.Community; import org.dspace.content.EntityType; @@ -35,6 +38,8 @@ import org.dspace.content.Relationship; import org.dspace.content.RelationshipType; import org.dspace.content.WorkspaceItem; import org.dspace.content.factory.ContentServiceFactory; +import org.dspace.core.Constants; +import org.dspace.eperson.Group; import org.dspace.versioning.Version; import org.dspace.versioning.factory.VersionServiceFactory; import org.dspace.versioning.service.VersioningService; @@ -473,6 +478,82 @@ public class ItemServiceTest extends AbstractIntegrationTestWithDatabase { context.restoreAuthSystemState(); } + @Test + public void testFindItemsWithEditNoRights() throws Exception { + context.setCurrentUser(eperson); + List result = itemService.findItemsWithEdit(context, 0, 10); + int count = itemService.countItemsWithEdit(context); + assertThat(result.size(), equalTo(0)); + assertThat(count, equalTo(0)); + } + + @Test + public void testFindAndCountItemsWithEditEPerson() throws Exception { + ResourcePolicy rp = ResourcePolicyBuilder.createResourcePolicy(context) + .withUser(eperson) + .withDspaceObject(item) + .withAction(Constants.WRITE) + .build(); + context.setCurrentUser(eperson); + List result = itemService.findItemsWithEdit(context, 0, 10); + int count = itemService.countItemsWithEdit(context); + assertThat(result.size(), equalTo(1)); + assertThat(count, equalTo(1)); + } + + @Test + public void testFindAndCountItemsWithAdminEPerson() throws Exception { + ResourcePolicy rp = ResourcePolicyBuilder.createResourcePolicy(context) + .withUser(eperson) + .withDspaceObject(item) + .withAction(Constants.ADMIN) + .build(); + context.setCurrentUser(eperson); + List result = itemService.findItemsWithEdit(context, 0, 10); + int count = itemService.countItemsWithEdit(context); + assertThat(result.size(), equalTo(1)); + assertThat(count, equalTo(1)); + } + + @Test + public void testFindAndCountItemsWithEditGroup() throws Exception { + context.turnOffAuthorisationSystem(); + Group group = GroupBuilder.createGroup(context) + .addMember(eperson) + .build(); + context.restoreAuthSystemState(); + + ResourcePolicy rp = ResourcePolicyBuilder.createResourcePolicy(context) + .withGroup(group) + .withDspaceObject(item) + .withAction(Constants.WRITE) + .build(); + context.setCurrentUser(eperson); + List result = itemService.findItemsWithEdit(context, 0, 10); + int count = itemService.countItemsWithEdit(context); + assertThat(result.size(), equalTo(1)); + assertThat(count, equalTo(1)); + } + + @Test + public void testFindAndCountItemsWithAdminGroup() throws Exception { + context.turnOffAuthorisationSystem(); + Group group = GroupBuilder.createGroup(context) + .addMember(eperson) + .build(); + context.restoreAuthSystemState(); + + ResourcePolicy rp = ResourcePolicyBuilder.createResourcePolicy(context) + .withGroup(group) + .withDspaceObject(item) + .withAction(Constants.ADMIN) + .build(); + context.setCurrentUser(eperson); + List result = itemService.findItemsWithEdit(context, 0, 10); + int count = itemService.countItemsWithEdit(context); + assertThat(result.size(), equalTo(1)); + assertThat(count, equalTo(1)); + } private void assertMetadataValue(String authorQualifier, String contributorElement, String dcSchema, String value, String authority, int place, MetadataValue metadataValue) { assertThat(metadataValue.getValue(), equalTo(value));