From 427a3c51c8419fd6fbe2065d149b6381cc2a737d Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Sat, 2 Sep 2017 09:33:33 +0000 Subject: [PATCH] SSDM-5619 : Project Authorization - modify @RolesAllowed annotations at data set related methods SVN: 38694 --- .../predicate/NewSamplePredicateTest.java | 15 +++++ .../openbis/systemtest/CommonServerTest.java | 56 ++++++++++--------- .../systemtest/EntityOperationTest.java | 2 +- ...GeneralInformationChangingServiceTest.java | 15 +++-- 4 files changed, 57 insertions(+), 31 deletions(-) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewSamplePredicateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewSamplePredicateTest.java index 7668b71de2f..a71cb39e6f9 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewSamplePredicateTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/NewSamplePredicateTest.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.server.authorization.predicate; import java.util.Arrays; import java.util.List; +import org.jmock.Expectations; import org.testng.annotations.Test; import ch.systemsx.cisd.common.exceptions.Status; @@ -107,6 +108,20 @@ public class NewSamplePredicateTest extends AuthorizationTestCase prepareProvider(groups); predicate.init(provider); + SpacePE space = new SpacePE(); + space.setCode(ANOTHER_SPACE_CODE); + + context.checking(new Expectations() + { + { + one(provider).tryGetSpace(ANOTHER_SPACE_CODE); + will(returnValue(space)); + + one(provider).tryGetSampleBySpaceAndCode(space, "S1"); + will(returnValue(null)); + } + }); + Status status = predicate.evaluate(createPerson(), createRoles(false), sample); assertEquals(true, status.isError()); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java index d7a54ab1fbd..c0e525b47f3 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java @@ -34,6 +34,7 @@ import javax.sql.DataSource; import org.apache.commons.collections4.IterableUtils; import org.apache.commons.collections4.Predicate; import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.testng.annotations.Test; @@ -43,6 +44,7 @@ import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; +import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; import ch.systemsx.cisd.openbis.generic.shared.basic.BasicEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; @@ -73,8 +75,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MetaprojectAssignmentsIds; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAuthorizationGroup; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; @@ -87,14 +87,16 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteriaConnection; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.displaysettings.IDisplaySettingsUpdate; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.id.dataset.DataSetCodeId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.id.experiment.ExperimentIdentifierId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.id.metaproject.MetaprojectIdentifierId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.id.sample.SampleIdentifierId; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectUpdatesDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; @@ -110,6 +112,9 @@ import junit.framework.Assert; public class CommonServerTest extends SystemTestCase { + @Autowired + private IDAOFactory daoFactory; + private Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, getClass()); @Test @@ -1133,27 +1138,26 @@ public class CommonServerTest extends SystemTestCase { SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); - Metaproject metaproject = new Metaproject(); + PersonPE person = daoFactory.getPersonDAO().tryFindPersonByUserId(user.getUserId()); + MetaprojectPE metaproject = new MetaprojectPE(); metaproject.setName("TEST_LIST_METAPROJECT_EXPERIMENTS"); - metaproject = commonServer.registerMetaproject(session.getSessionToken(), metaproject); + metaproject.setOwner(person); + + ExperimentPE experiment = daoFactory.getExperimentDAO().tryGetByTechId(new TechId(23L)); + experiment.addMetaproject(metaproject); - MetaprojectAssignmentsIds assignments = new MetaprojectAssignmentsIds(); - assignments.addExperiment(new ExperimentIdentifierId("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); + daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, person); - commonServer.addToMetaproject(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier()), assignments); + List<Experiment> experiments = + commonServer.listMetaprojectExperiments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { - List<Experiment> experiments = - commonServer.listMetaprojectExperiments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); - assertEquals(experiments.size(), 1); assertEquals(experiments.get(0).isStub(), false); assertEquals(experiments.get(0).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); } else { - List<Experiment> experiments = - commonServer.listMetaprojectExperiments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); assertEquals(experiments.size(), 1); assertEquals(experiments.get(0).isStub(), true); } @@ -1164,14 +1168,15 @@ public class CommonServerTest extends SystemTestCase { SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); - Metaproject metaproject = new Metaproject(); + PersonPE person = daoFactory.getPersonDAO().tryFindPersonByUserId(user.getUserId()); + MetaprojectPE metaproject = new MetaprojectPE(); metaproject.setName("TEST_LIST_METAPROJECT_SAMPLES"); - metaproject = commonServer.registerMetaproject(session.getSessionToken(), metaproject); + metaproject.setOwner(person); - MetaprojectAssignmentsIds assignments = new MetaprojectAssignmentsIds(); - assignments.addSample(new SampleIdentifierId("/TEST-SPACE/EV-TEST")); + SamplePE sample = daoFactory.getSampleDAO().tryGetByTechId(new TechId(1055L)); // /TEST-SPACE/EV-TEST + sample.addMetaproject(metaproject); - commonServer.addToMetaproject(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier()), assignments); + daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, person); List<Sample> samples = commonServer.listMetaprojectSamples(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); @@ -1193,14 +1198,15 @@ public class CommonServerTest extends SystemTestCase { SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); - Metaproject metaproject = new Metaproject(); + PersonPE person = daoFactory.getPersonDAO().tryFindPersonByUserId(user.getUserId()); + MetaprojectPE metaproject = new MetaprojectPE(); metaproject.setName("TEST_LIST_METAPROJECT_DATASETS"); - metaproject = commonServer.registerMetaproject(session.getSessionToken(), metaproject); + metaproject.setOwner(person); - MetaprojectAssignmentsIds assignments = new MetaprojectAssignmentsIds(); - assignments.addDataSet(new DataSetCodeId("20120628092259000-41")); + DataPE dataSet = daoFactory.getDataDAO().tryToFindDataSetByCode("20120628092259000-41"); + dataSet.addMetaproject(metaproject); - commonServer.addToMetaproject(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier()), assignments); + daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, person); List<AbstractExternalData> dataSets = commonServer.listMetaprojectExternalData(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java index 4dfbf138922..86f16f4b4f7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java @@ -766,7 +766,7 @@ public class EntityOperationTest extends SystemTestCase .getDataSet()).create(); performFailingEntityOperations(sessionToken, eo, "Authorization failure: ERROR: \"None of method roles " - + "'[SPACE_USER, SPACE_POWER_USER, SPACE_ADMIN, INSTANCE_ADMIN, SPACE_ETL_SERVER, INSTANCE_ETL_SERVER]' " + + "'[PROJECT_USER, PROJECT_POWER_USER, PROJECT_ADMIN, SPACE_ADMIN, INSTANCE_ADMIN, SPACE_POWER_USER, SPACE_USER, SPACE_ETL_SERVER, INSTANCE_ETL_SERVER]' " + "could be found in roles of user 'EO_OBSERVER'.\"."); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java index d5de1ccb7fd..4895a5d732a 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java @@ -34,9 +34,9 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException; +import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.test.AssertionUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SessionContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.OpenBISHibernateTransactionManager; import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationChangingService; @@ -692,8 +692,13 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase { generalInformationChangingService.deleteDataSets(session, Arrays.asList(dataSetCode), reason, DeletionType.TRASH); - dataSets = generalInformationService.getDataSetMetaData(adminSession, Arrays.asList(dataSetCode)); - assertEquals(0, dataSets.size()); + try + { + dataSets = generalInformationService.getDataSetMetaData(adminSession, Arrays.asList(dataSetCode)); + } catch (UserFailureException e) + { + assertEquals("Unknown data set " + dataSetCode, e.getMessage()); + } } else { try @@ -806,7 +811,7 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase { generalInformationChangingService.registerSamples(session.getSessionID(), sampleType, SESSION_KEY, null); fail(); - } catch (UserFailureException e) + } catch (ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException e) { AssertionUtil.assertMatches(".*does not have enough privileges.*", e.getMessage()); } @@ -833,7 +838,7 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase { generalInformationChangingService.updateSamples(session.getSessionID(), sampleType, SESSION_KEY, null); fail(); - } catch (UserFailureException e) + } catch (ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException e) { AssertionUtil.assertMatches(".*does not have enough privileges.*", e.getMessage()); } -- GitLab