mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
added tests for CanManageBitstreamBundlesFeature
This commit is contained in:
@@ -0,0 +1,547 @@
|
||||
/**
|
||||
* The contents of this file are subject to the license and copyright
|
||||
* detailed in the LICENSE and NOTICE files at the root of the source
|
||||
* tree and available online at
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.authorization;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
import org.dspace.app.rest.authorization.impl.CanManageBitstreamBundlesFeature;
|
||||
import org.dspace.app.rest.converter.ItemConverter;
|
||||
import org.dspace.app.rest.matcher.AuthorizationMatcher;
|
||||
import org.dspace.app.rest.model.ItemRest;
|
||||
import org.dspace.app.rest.projection.DefaultProjection;
|
||||
import org.dspace.app.rest.test.AbstractControllerIntegrationTest;
|
||||
import org.dspace.authorize.service.AuthorizeService;
|
||||
import org.dspace.builder.CollectionBuilder;
|
||||
import org.dspace.builder.CommunityBuilder;
|
||||
import org.dspace.builder.EPersonBuilder;
|
||||
import org.dspace.builder.ItemBuilder;
|
||||
import org.dspace.builder.ResourcePolicyBuilder;
|
||||
import org.dspace.content.Collection;
|
||||
import org.dspace.content.Community;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.core.Constants;
|
||||
import org.dspace.eperson.EPerson;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* Test for the canManageBitstreamBundles authorization feature.
|
||||
*
|
||||
* @author Mykhaylo Boychuk (mykhaylo.boychuk at 4science.it)
|
||||
*/
|
||||
public class CanManageBitstreamBundlesFeatureIT extends AbstractControllerIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
private ItemConverter itemConverter;
|
||||
|
||||
@Autowired
|
||||
private AuthorizeService authorizeService;
|
||||
|
||||
@Autowired
|
||||
private ConfigurationService configurationService;
|
||||
|
||||
@Autowired
|
||||
private AuthorizationFeatureService authorizationFeatureService;
|
||||
|
||||
private Item itemA;
|
||||
private Item itemB;
|
||||
private EPerson userA;
|
||||
private EPerson userB;
|
||||
private EPerson userColAadmin;
|
||||
private EPerson userColBadmin;
|
||||
private EPerson userComAdmin;
|
||||
private Community communityA;
|
||||
private Collection collectionA;
|
||||
private Collection collectionB;
|
||||
private AuthorizationFeature canManageBitstreamBundlesFeature;
|
||||
|
||||
final String feature = "canManageBitstreamBundles";
|
||||
|
||||
@Before
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
context.turnOffAuthorisationSystem();
|
||||
|
||||
canManageBitstreamBundlesFeature = authorizationFeatureService.find(CanManageBitstreamBundlesFeature.NAME);
|
||||
|
||||
userA = EPersonBuilder.createEPerson(context)
|
||||
.withEmail("userEmail@test.com")
|
||||
.withPassword(password).build();
|
||||
|
||||
userB = EPersonBuilder.createEPerson(context)
|
||||
.withEmail("userB.email@test.com")
|
||||
.withPassword(password).build();
|
||||
|
||||
userColAadmin = EPersonBuilder.createEPerson(context)
|
||||
.withEmail("userColAadmin@test.com")
|
||||
.withPassword(password).build();
|
||||
|
||||
userColBadmin = EPersonBuilder.createEPerson(context)
|
||||
.withEmail("userColBadmin@test.com")
|
||||
.withPassword(password).build();
|
||||
|
||||
userComAdmin = EPersonBuilder.createEPerson(context)
|
||||
.withEmail("userComAdmin@test.com")
|
||||
.withPassword(password).build();
|
||||
|
||||
communityA = CommunityBuilder.createCommunity(context)
|
||||
.withName("communityA")
|
||||
.withAdminGroup(userComAdmin).build();
|
||||
|
||||
collectionA = CollectionBuilder.createCollection(context, communityA)
|
||||
.withName("Collection A")
|
||||
.withAdminGroup(userColAadmin).build();
|
||||
|
||||
collectionB = CollectionBuilder.createCollection(context, communityA)
|
||||
.withName("Collection B")
|
||||
.withAdminGroup(userColBadmin).build();
|
||||
|
||||
itemA = ItemBuilder.createItem(context, collectionA)
|
||||
.withTitle("Item A").build();
|
||||
|
||||
itemB = ItemBuilder.createItem(context, collectionB)
|
||||
.withTitle("Item B").build();
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void checkCanCreateVersionsFeatureTest() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
//permissions for userA
|
||||
authorizeService.addPolicy(context, itemA, Constants.ADD, userA);
|
||||
authorizeService.addPolicy(context, itemA, Constants.REMOVE, userA);
|
||||
// permissions for userB
|
||||
authorizeService.addPolicy(context, itemA, Constants.REMOVE, userB);
|
||||
authorizeService.addPolicy(context, itemB, Constants.REMOVE, userB);
|
||||
authorizeService.addPolicy(context, itemB, Constants.ADD, userB);
|
||||
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
ItemRest itemRestA = itemConverter.convert(itemA, DefaultProjection.DEFAULT);
|
||||
ItemRest itemRestB = itemConverter.convert(itemB, DefaultProjection.DEFAULT);
|
||||
|
||||
String tokenEPerson = getAuthToken(eperson.getEmail(), password);
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
String tokenAUser = getAuthToken(userA.getEmail(), password);
|
||||
String tokenBUser = getAuthToken(userB.getEmail(), password);
|
||||
String tokenComAdmin = getAuthToken(userComAdmin.getEmail(), password);
|
||||
String tokenColAadmin = getAuthToken(userColAadmin.getEmail(), password);
|
||||
String tokenColBadmin = getAuthToken(userColBadmin.getEmail(), password);
|
||||
|
||||
// define authorizations that we know must exists
|
||||
Authorization admin2ItemA = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization admin2ItemB = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization userA2ItemA = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization userB2ItemB = new Authorization(userB, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization comAdmin2ItemB = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization comAdmin2ItemA = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization colAadmin2ItemA = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
// define authorization that we know not exists
|
||||
Authorization userB2ItemA = new Authorization(userB, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization userA2ItemB = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization eperson2ItemA = new Authorization(eperson, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization eperson2ItemB = new Authorization(eperson, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization anonymous2ItemA = new Authorization(null, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization anonymous2ItemB = new Authorization(null, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization colAadmin2ItemB = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization colBadmin2ItemA = new Authorization(userColBadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemA))));
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemB))));
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(userA2ItemA))));
|
||||
|
||||
getClient(tokenBUser).perform(get("/api/authz/authorizations/" + userB2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(userB2ItemB))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemB))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemA))));
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(colAadmin2ItemA))));
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenColBadmin).perform(get("/api/authz/authorizations/" + colBadmin2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenBUser).perform(get("/api/authz/authorizations/" + userB2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenEPerson).perform(get("/api/authz/authorizations/" + eperson2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenEPerson).perform(get("/api/authz/authorizations/" + eperson2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient().perform(get("/api/authz/authorizations/" + anonymous2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient().perform(get("/api/authz/authorizations/" + anonymous2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void itemAdminSetPropertyCreateBitstreamToFalseTest() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
ResourcePolicyBuilder.createResourcePolicy(context)
|
||||
.withAction(Constants.ADMIN)
|
||||
.withUser(userA)
|
||||
.withDspaceObject(itemA).build();
|
||||
|
||||
configurationService.setProperty("core.authorization.item-admin.create-bitstream", false);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
ItemRest itemRestA = itemConverter.convert(itemA, DefaultProjection.DEFAULT);
|
||||
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
String tokenAUser = getAuthToken(userA.getEmail(), password);
|
||||
String tokenComAdmin = getAuthToken(userComAdmin.getEmail(), password);
|
||||
String tokenColAadmin = getAuthToken(userColAadmin.getEmail(), password);
|
||||
|
||||
// define authorizations that we know must exists
|
||||
Authorization admin2ItemA = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization comAdmin2ItemA = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization colAadmin2ItemA = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
// define authorization that we know not exists
|
||||
Authorization userA2ItemA = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemA))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemA))));
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(colAadmin2ItemA))));
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void itemAdminSetPropertyDeleteBitstreamToFalseTest() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
ResourcePolicyBuilder.createResourcePolicy(context)
|
||||
.withAction(Constants.ADMIN)
|
||||
.withUser(userA)
|
||||
.withDspaceObject(itemA).build();
|
||||
|
||||
configurationService.setProperty("core.authorization.item-admin.delete-bitstream", false);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
ItemRest itemRestA = itemConverter.convert(itemA, DefaultProjection.DEFAULT);
|
||||
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
String tokenAUser = getAuthToken(userA.getEmail(), password);
|
||||
String tokenComAdmin = getAuthToken(userComAdmin.getEmail(), password);
|
||||
String tokenColAadmin = getAuthToken(userColAadmin.getEmail(), password);
|
||||
|
||||
// define authorizations that we know must exists
|
||||
Authorization admin2ItemA = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization comAdmin2ItemA = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization colAadmin2ItemA = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
// define authorization that we know not exists
|
||||
Authorization userA2ItemA = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemA))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemA))));
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(colAadmin2ItemA))));
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void itemAdminSetPropertyCollectionAdminCreateBitstreamToFalseTest() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
ResourcePolicyBuilder.createResourcePolicy(context)
|
||||
.withAction(Constants.ADMIN)
|
||||
.withUser(userA)
|
||||
.withDspaceObject(itemA).build();
|
||||
|
||||
configurationService.setProperty("core.authorization.collection-admin.item.create-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.create-bitstream", false);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
ItemRest itemRestA = itemConverter.convert(itemA, DefaultProjection.DEFAULT);
|
||||
ItemRest itemRestB = itemConverter.convert(itemB, DefaultProjection.DEFAULT);
|
||||
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
String tokenAUser = getAuthToken(userA.getEmail(), password);
|
||||
String tokenComAdmin = getAuthToken(userComAdmin.getEmail(), password);
|
||||
String tokenColAadmin = getAuthToken(userColAadmin.getEmail(), password);
|
||||
String tokenColBadmin = getAuthToken(userColBadmin.getEmail(), password);
|
||||
|
||||
// define authorizations that we know must exists
|
||||
Authorization admin2ItemA = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization admin2ItemB = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization comAdmin2ItemA = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization comAdmin2ItemB = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
|
||||
// define authorization that we know not exists
|
||||
Authorization colAadmin2ItemA = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization colBadmin2ItemB = new Authorization(userColBadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization userA2ItemA = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemA))));
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemB))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemA))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemB))));
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenColBadmin).perform(get("/api/authz/authorizations/" + colBadmin2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void itemAdminSetPropertyCollectionAdminDeleteBitstreamToFalseTest() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
ResourcePolicyBuilder.createResourcePolicy(context)
|
||||
.withAction(Constants.ADMIN)
|
||||
.withUser(userA)
|
||||
.withDspaceObject(itemA).build();
|
||||
|
||||
configurationService.setProperty("core.authorization.collection-admin.item.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.create-bitstream", false);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
ItemRest itemRestA = itemConverter.convert(itemA, DefaultProjection.DEFAULT);
|
||||
ItemRest itemRestB = itemConverter.convert(itemB, DefaultProjection.DEFAULT);
|
||||
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
String tokenAUser = getAuthToken(userA.getEmail(), password);
|
||||
String tokenComAdmin = getAuthToken(userComAdmin.getEmail(), password);
|
||||
String tokenColAadmin = getAuthToken(userColAadmin.getEmail(), password);
|
||||
String tokenColBadmin = getAuthToken(userColBadmin.getEmail(), password);
|
||||
|
||||
// define authorizations that we know must exists
|
||||
Authorization admin2ItemA = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization admin2ItemB = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization comAdmin2ItemA = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization comAdmin2ItemB = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
|
||||
// define authorization that we know not exists
|
||||
Authorization colAadmin2ItemA = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization colBadmin2ItemB = new Authorization(userColBadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization userA2ItemA = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemA))));
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemB))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemA))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(comAdmin2ItemB))));
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenColBadmin).perform(get("/api/authz/authorizations/" + colBadmin2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void itemAdminSetPropertyCommunityAdminCreateBitstreamToFalseTest() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
ResourcePolicyBuilder.createResourcePolicy(context)
|
||||
.withAction(Constants.ADMIN)
|
||||
.withUser(userA)
|
||||
.withDspaceObject(itemA).build();
|
||||
|
||||
configurationService.setProperty("core.authorization.community-admin.item.create-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.collection-admin.item.create-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.collection-admin.item.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.create-bitstream", false);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
ItemRest itemRestA = itemConverter.convert(itemA, DefaultProjection.DEFAULT);
|
||||
ItemRest itemRestB = itemConverter.convert(itemB, DefaultProjection.DEFAULT);
|
||||
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
String tokenAUser = getAuthToken(userA.getEmail(), password);
|
||||
String tokenComAdmin = getAuthToken(userComAdmin.getEmail(), password);
|
||||
String tokenColAadmin = getAuthToken(userColAadmin.getEmail(), password);
|
||||
String tokenColBadmin = getAuthToken(userColBadmin.getEmail(), password);
|
||||
|
||||
// define authorizations that we know must exists
|
||||
Authorization admin2ItemA = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization admin2ItemB = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
|
||||
// define authorization that we know not exists
|
||||
Authorization comAdmin2ItemA = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization comAdmin2ItemB = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization colAadmin2ItemA = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization colBadmin2ItemB = new Authorization(userColBadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization userA2ItemA = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemA))));
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemB))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenColBadmin).perform(get("/api/authz/authorizations/" + colBadmin2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void itemAdminSetPropertyCommunityAdminDeleteBitstreamToFalseTest() throws Exception {
|
||||
context.turnOffAuthorisationSystem();
|
||||
ResourcePolicyBuilder.createResourcePolicy(context)
|
||||
.withAction(Constants.ADMIN)
|
||||
.withUser(userA)
|
||||
.withDspaceObject(itemA).build();
|
||||
|
||||
configurationService.setProperty("core.authorization.community-admin.item.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.collection-admin.item.create-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.collection-admin.item.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.delete-bitstream", false);
|
||||
configurationService.setProperty("core.authorization.item-admin.create-bitstream", false);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
ItemRest itemRestA = itemConverter.convert(itemA, DefaultProjection.DEFAULT);
|
||||
ItemRest itemRestB = itemConverter.convert(itemB, DefaultProjection.DEFAULT);
|
||||
|
||||
String tokenAdmin = getAuthToken(admin.getEmail(), password);
|
||||
String tokenAUser = getAuthToken(userA.getEmail(), password);
|
||||
String tokenComAdmin = getAuthToken(userComAdmin.getEmail(), password);
|
||||
String tokenColAadmin = getAuthToken(userColAadmin.getEmail(), password);
|
||||
String tokenColBadmin = getAuthToken(userColBadmin.getEmail(), password);
|
||||
|
||||
// define authorizations that we know must exists
|
||||
Authorization admin2ItemA = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization admin2ItemB = new Authorization(admin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
|
||||
// define authorization that we know not exists
|
||||
Authorization comAdmin2ItemA = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization comAdmin2ItemB = new Authorization(userComAdmin, canManageBitstreamBundlesFeature, itemRestB);
|
||||
Authorization colAadmin2ItemA = new Authorization(userColAadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization colBadmin2ItemB = new Authorization(userColBadmin, canManageBitstreamBundlesFeature, itemRestA);
|
||||
Authorization userA2ItemA = new Authorization(userA, canManageBitstreamBundlesFeature, itemRestA);
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemA.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemA))));
|
||||
|
||||
getClient(tokenAdmin).perform(get("/api/authz/authorizations/" + admin2ItemB.getID()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$", Matchers.is(AuthorizationMatcher.matchAuthorization(admin2ItemB))));
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenComAdmin).perform(get("/api/authz/authorizations/" + comAdmin2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenColAadmin).perform(get("/api/authz/authorizations/" + colAadmin2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenColBadmin).perform(get("/api/authz/authorizations/" + colBadmin2ItemB.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
getClient(tokenAUser).perform(get("/api/authz/authorizations/" + userA2ItemA.getID()))
|
||||
.andExpect(status().isNotFound());
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user