diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dssapi/v3/DataStoreServerApi.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dssapi/v3/DataStoreServerApi.java index f1d90764103faf759231e58d54f671df1380b6b6..f92dea95b818c2ba16fbd5e2df28f877d6f9d903 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dssapi/v3/DataStoreServerApi.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dssapi/v3/DataStoreServerApi.java @@ -160,7 +160,7 @@ public class DataStoreServerApi extends AbstractDssServiceRpc<IDataStoreServerAp } @Transactional(readOnly = true) - @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + @RolesAllowed({ RoleWithHierarchy.PROJECT_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) @Override public SearchResult<DataSetFile> searchFiles(String sessionToken, DataSetFileSearchCriteria searchCriteria, DataSetFileFetchOptions fetchOptions) { @@ -254,7 +254,7 @@ public class DataStoreServerApi extends AbstractDssServiceRpc<IDataStoreServerAp } @Transactional(readOnly = true) - @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + @RolesAllowed({ RoleWithHierarchy.PROJECT_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) @Override public InputStream downloadFiles(String sessionToken, List<? extends IDataSetFileId> fileIds, DataSetFileDownloadOptions downloadOptions) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/RoleAssignmentImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/RoleAssignmentImmutable.java index cee582aab9fb44eaaf48123ef386e4d876653d84..30be6ad6c36e7d650fbb045b5435fd3bc9753ad2 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/RoleAssignmentImmutable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/RoleAssignmentImmutable.java @@ -22,7 +22,6 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v2.ISpaceImmutab import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v2.IUserImmutable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleAssignment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; /** * @author Chandrasekhar Ramakrishnan diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/CommonAuthorizationSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/CommonAuthorizationSystemTest.java index 11c39904aa8c037e3038a86e0c69e0001c535e2a..d8ee918e31c00308a321d52ea874d083da3d83b6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/CommonAuthorizationSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/CommonAuthorizationSystemTest.java @@ -593,7 +593,7 @@ public class CommonAuthorizationSystemTest extends SystemTestCase public static void assertAuthorizationFailureExceptionThatNoRoles(Throwable t) { - assertException(t, AuthorizationFailureException.class, ".*No role assignments could be found for user.*"); + assertException(t, AuthorizationFailureException.class, ".*None of method roles.*could be found in roles of user.*"); } public static void assertUserFailureExceptionThatProjectDoesNotExist(Throwable t) diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/ProjectAuthorizationUser.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/ProjectAuthorizationUser.java index 3a6e6890c8f8e5959368323c40d62be35afd7ed1..a1801948263a6e659e103126e8969cb008b033e8 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/ProjectAuthorizationUser.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/ProjectAuthorizationUser.java @@ -61,6 +61,11 @@ public class ProjectAuthorizationUser return hasInstanceRole(); } + public boolean isSpaceUser() + { + return hasSpaceRole(); + } + public boolean isSpaceUser(String spaceCode) { return hasSpaceRole(spaceCode); @@ -76,6 +81,16 @@ public class ProjectAuthorizationUser return isSpaceUser(AUTH_SPACE_2); } + public boolean isDisabledProjectUser() + { + return isProjectUser() && false == hasPAEnabled(); + } + + public boolean isProjectUser() + { + return hasProjectRole(); + } + public boolean isProjectUser(String spaceCode, String projectCode) { return hasProjectRole(spaceCode, projectCode); @@ -191,7 +206,7 @@ public class ProjectAuthorizationUser { for (RoleAssignmentPE role : person.getAllPersonRoles()) { - if (role.getSpace() == null && role.getProject() == null) + if (role.getRoleWithHierarchy().isInstanceLevel()) { return true; } @@ -211,6 +226,18 @@ public class ProjectAuthorizationUser return false; } + private boolean hasSpaceRole() + { + for (RoleAssignmentPE role : person.getAllPersonRoles()) + { + if (role.getSpace() != null) + { + return true; + } + } + return false; + } + private boolean hasSpaceRole(String spaceCode) { for (RoleAssignmentPE role : person.getAllPersonRoles()) @@ -223,6 +250,18 @@ public class ProjectAuthorizationUser return false; } + private boolean hasProjectRole() + { + for (RoleAssignmentPE role : person.getAllPersonRoles()) + { + if (role.getProject() != null) + { + return true; + } + } + return false; + } + private boolean hasProjectRole(String spaceCode, String projectCode) { for (RoleAssignmentPE role : person.getAllPersonRoles()) diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/common/DataSetUtil.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/common/DataSetUtil.java index f1d46105b003ac479437ec36e3caa08b18d0ae3e..83963d7b235d7458cf46249ee20e64c8485b0496 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/common/DataSetUtil.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/common/DataSetUtil.java @@ -37,6 +37,7 @@ public class DataSetUtil DataPE dataSetPE = test.getDataSet(spacePE, projectPE, (DataSetKind) param); DataSetInitializer initializer = new DataSetInitializer(); + initializer.setId(dataSetPE.getId()); initializer.setCode(dataSetPE.getCode()); initializer.setDataSetTypeCode(dataSetPE.getDataSetType().getCode()); initializer.setRegistrationDetails(new EntityRegistrationDetails(new EntityRegistrationDetailsInitializer())); diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestAssertionsDefault.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestAssertionsDefault.java index 1ad36491dd92c63349e225f9b7adf56bb591f779..9723cbc752d00f1e1db556c4e47210ceed01a695 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestAssertionsDefault.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestAssertionsDefault.java @@ -34,19 +34,37 @@ public class CommonPredicateSystemTestAssertionsDefault<O> extends CommonPredica @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - CommonAuthorizationSystemTest.assertException(t, UserFailureException.class, "Unspecified value"); + if (user.isDisabledProjectUser()) + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + CommonAuthorizationSystemTest.assertException(t, UserFailureException.class, "Unspecified value"); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - CommonAuthorizationSystemTest.assertException(t, UserFailureException.class, "Unspecified value"); + if (user.isDisabledProjectUser()) + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + CommonAuthorizationSystemTest.assertException(t, UserFailureException.class, "Unspecified value"); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + if (user.isDisabledProjectUser()) + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } @Override @@ -69,25 +87,31 @@ public class CommonPredicateSystemTestAssertionsDefault<O> extends CommonPredica private void assertWithObject(ProjectAuthorizationUser user, Throwable t, Object param, ProjectIdentifier... projects) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - CommonAuthorizationSystemTest.assertNoException(t); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); } else { - boolean hasAccess = true; - - for (ProjectIdentifier project : projects) - { - hasAccess = hasAccess && (user.isSpaceUser(project.getSpaceCode()) - || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())); - } - - if (hasAccess) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNoException(t); } else { - CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + boolean hasAccess = true; + + for (ProjectIdentifier project : projects) + { + hasAccess = hasAccess && (user.isSpaceUser(project.getSpaceCode()) + || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())); + } + + if (hasAccess) + { + CommonAuthorizationSystemTest.assertNoException(t); + } else + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestDataSetAssertions.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestDataSetAssertions.java index b2b268ec5454e1e66c6576c226f4b183b70c80e6..3075ba64d5b19cc89d67a4a16924a145c16bbb3b 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestDataSetAssertions.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestDataSetAssertions.java @@ -56,49 +56,55 @@ public class CommonPredicateSystemTestDataSetAssertions<O> extends CommonPredica private void assertWithObject(ProjectAuthorizationUser user, Throwable t, Object param, ProjectIdentifier... projects) { - if (DataSetKind.SPACE_SAMPLE.equals(param)) + if (user.isDisabledProjectUser()) { - if (user.isInstanceUser()) - { - CommonAuthorizationSystemTest.assertNoException(t); - } else + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + if (DataSetKind.SPACE_SAMPLE.equals(param)) { - boolean hasAccess = true; - - for (ProjectIdentifier project : projects) - { - hasAccess = hasAccess && user.isSpaceUser(project.getSpaceCode()); - } - - if (hasAccess) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNoException(t); } else { - CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + boolean hasAccess = true; + + for (ProjectIdentifier project : projects) + { + hasAccess = hasAccess && user.isSpaceUser(project.getSpaceCode()); + } + + if (hasAccess) + { + CommonAuthorizationSystemTest.assertNoException(t); + } else + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } - } - } else - { - if (user.isInstanceUser()) - { - CommonAuthorizationSystemTest.assertNoException(t); } else { - boolean hasAccess = true; - - for (ProjectIdentifier project : projects) - { - hasAccess = hasAccess && (user.isSpaceUser(project.getSpaceCode()) - || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())); - } - - if (hasAccess) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNoException(t); } else { - CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + boolean hasAccess = true; + + for (ProjectIdentifier project : projects) + { + hasAccess = hasAccess && (user.isSpaceUser(project.getSpaceCode()) + || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())); + } + + if (hasAccess) + { + CommonAuthorizationSystemTest.assertNoException(t); + } else + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSampleAssertions.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSampleAssertions.java index 1214b2a1d286d7ebef9b45fb50a805dd19a987a4..99c4e528c57696318bb7079734e2baae74a6683f 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSampleAssertions.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSampleAssertions.java @@ -56,61 +56,67 @@ public class CommonPredicateSystemTestSampleAssertions<O> extends CommonPredicat private void assertWithObject(ProjectAuthorizationUser user, Throwable t, Object param, ProjectIdentifier... projects) { - if (SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) { - CommonAuthorizationSystemTest.assertNoException(t); - } else if (SampleKind.SHARED_READ_WRITE.equals(param)) - { - if (user.isInstanceUser()) - { - CommonAuthorizationSystemTest.assertNoException(t); - } else - { - CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); - } - } else if (SampleKind.SPACE.equals(param) || SampleKind.SPACE_CONTAINED.equals(param)) + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else { - if (user.isInstanceUser()) + if (SampleKind.SHARED_READ.equals(param)) { CommonAuthorizationSystemTest.assertNoException(t); - } else + } else if (SampleKind.SHARED_READ_WRITE.equals(param)) { - boolean hasAccess = true; - - for (ProjectIdentifier project : projects) - { - hasAccess = hasAccess && user.isSpaceUser(project.getSpaceCode()); - } - - if (hasAccess) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNoException(t); } else { CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); } - } - } else - { - if (user.isInstanceUser()) + } else if (SampleKind.SPACE.equals(param) || SampleKind.SPACE_CONTAINED.equals(param)) { - CommonAuthorizationSystemTest.assertNoException(t); - } else - { - boolean hasAccess = true; - - for (ProjectIdentifier project : projects) + if (user.isInstanceUser()) { - hasAccess = hasAccess && (user.isSpaceUser(project.getSpaceCode()) - || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())); - } + CommonAuthorizationSystemTest.assertNoException(t); + } else + { + boolean hasAccess = true; - if (hasAccess) + for (ProjectIdentifier project : projects) + { + hasAccess = hasAccess && user.isSpaceUser(project.getSpaceCode()); + } + + if (hasAccess) + { + CommonAuthorizationSystemTest.assertNoException(t); + } else + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } + } + } else + { + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNoException(t); } else { - CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + boolean hasAccess = true; + + for (ProjectIdentifier project : projects) + { + hasAccess = hasAccess && (user.isSpaceUser(project.getSpaceCode()) + || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())); + } + + if (hasAccess) + { + CommonAuthorizationSystemTest.assertNoException(t); + } else + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSpaceAssertions.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSpaceAssertions.java index cf9958445f02289db2adc0af0cb526a716e12247..ac6ef6a13990cf45c216c699efa8cc3c84f1a79c 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSpaceAssertions.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/CommonPredicateSystemTestSpaceAssertions.java @@ -55,24 +55,30 @@ public class CommonPredicateSystemTestSpaceAssertions<O> extends CommonPredicate private void assertWithObject(ProjectAuthorizationUser user, Throwable t, Object param, ProjectIdentifier... projects) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - CommonAuthorizationSystemTest.assertNoException(t); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); } else { - boolean hasAccess = true; - - for (ProjectIdentifier project : projects) - { - hasAccess = hasAccess && user.isSpaceUser(project.getSpaceCode()); - } - - if (hasAccess) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNoException(t); } else { - CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + boolean hasAccess = true; + + for (ProjectIdentifier project : projects) + { + hasAccess = hasAccess && user.isSpaceUser(project.getSpaceCode()); + } + + if (hasAccess) + { + CommonAuthorizationSystemTest.assertNoException(t); + } else + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataPEPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataPEPredicateSystemTest.java index 43962ab6c3b0eb3cab8d1d5d98ac69a9b232f524..f1dcc54d5e847c753ba506818b4f8cb8991ade15 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataPEPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataPEPredicateSystemTest.java @@ -103,7 +103,10 @@ public class DataPEPredicateSystemTest extends CommonPredicateSystemTest<DataPE> @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -115,7 +118,10 @@ public class DataPEPredicateSystemTest extends CommonPredicateSystemTest<DataPE> @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodeCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodeCollectionPredicateSystemTest.java index 87afbb4f696e822c6a5cb10dcb262b4f68a283e5..c818a8038b9a8e91682edd9b4ddc2c23c4fede8d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodeCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodeCollectionPredicateSystemTest.java @@ -72,19 +72,37 @@ public class DataSetCodeCollectionPredicateSystemTest extends CommonPredicateSys @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No data set codes specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No data set codes specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodePredicateSystemTest.java index 85a244d92417738623e81a8055c38a490d74b95d..a0fa84667e69ce05b82a97f9380447e1bc2b3bdf 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetCodePredicateSystemTest.java @@ -66,13 +66,25 @@ public class DataSetCodePredicateSystemTest extends CommonPredicateSystemTest<St @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No data set code specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No data set code specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdCollectionPredicateSystemTest.java index 9c7a1bf97001e49a23991cea01ae95bb651806e9..c14226dc42eb8f33791b658c7bcdf019aa1f0c64 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdCollectionPredicateSystemTest.java @@ -73,19 +73,37 @@ public class DataSetTechIdCollectionPredicateSystemTest extends CommonPredicateS @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No data set technical ids specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No data set technical ids specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdPredicateSystemTest.java index fdb732bcf60349a16eaad394ff192625f33a4fe3..14640377672cbf3c6be9b04b26e5f49e19af9d5b 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetTechIdPredicateSystemTest.java @@ -67,13 +67,25 @@ public class DataSetTechIdPredicateSystemTest extends CommonPredicateSystemTest< @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No data set technical id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No data set technical id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateSystemTest.java index 5a1d6e81e664ea15b4299d78788fd01426c90087..bc4c64dca68906d6aaaf23a495fa95f9b356412a 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateSystemTest.java @@ -52,7 +52,10 @@ public abstract class DataSetUpdatesCollectionPredicateSystemTest extends Common @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -64,7 +67,13 @@ public abstract class DataSetUpdatesCollectionPredicateSystemTest extends Common @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No data set updates collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No data set updates collection specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithDataSetTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithDataSetTechIdSystemTest.java index 5fb66b1d0fb12ea79cc6650e322af5838d794b79..2302c8b298b301e6dc614ee9855a35e6b19c187b 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithDataSetTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithDataSetTechIdSystemTest.java @@ -60,7 +60,13 @@ public class DataSetUpdatesCollectionPredicateWithDataSetTechIdSystemTest extend @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java index faab933e2ca9c03195b1dd87c7fab11c99271295..8e4d164b8d12b2434bd41c209e912f5ac4592748 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java @@ -54,7 +54,10 @@ public class DataSetUpdatesCollectionPredicateWithExperimentIdentifierSystemTest @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java index 55ea9daa43b1b5c66286946460acf3a4d7b99634..8a4d9697d0412b0599b03aa38a4efb96554789ef 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java @@ -60,7 +60,10 @@ public class DataSetUpdatesCollectionPredicateWithSampleIdentifierSystemTest ext @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateSystemTest.java index ef363b175870e1e5f3c76f718008f55712d8c920..d400f35bdd0797afc7ebba6fcc1332a9e3727292 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateSystemTest.java @@ -46,7 +46,13 @@ public abstract class DataSetUpdatesPredicateSystemTest extends CommonPredicateS @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No data set updates specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No data set updates specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithDataSetTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithDataSetTechIdSystemTest.java index 1d5782fca239000bb32fb64bf9c2a62a0214f14c..f697f52fc61a84e10fa35eebcc3b2c1a4b605d95 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithDataSetTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithDataSetTechIdSystemTest.java @@ -60,7 +60,13 @@ public class DataSetUpdatesPredicateWithDataSetTechIdSystemTest extends DataSetU @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithExperimentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithExperimentIdentifierSystemTest.java index fe98708029451b8cd0a9fa9480fd0ae92e2cbf2d..d95e66fa79dd785f69c9de2275d834f443ceff4a 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithExperimentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithExperimentIdentifierSystemTest.java @@ -58,7 +58,10 @@ public class DataSetUpdatesPredicateWithExperimentIdentifierSystemTest extends D @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithSampleIdentifierSystemTest.java index ef257f363414be0ddf9079ce94001b9468bdf94f..6b7511dc7455aa7d83cc4b9b79d520473e07a607 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/DataSetUpdatesPredicateWithSampleIdentifierSystemTest.java @@ -60,7 +60,10 @@ public class DataSetUpdatesPredicateWithSampleIdentifierSystemTest extends DataS @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateSystemTest.java index 638b6c05f71d07e7323942157d8d506a4b051c19..d1206eda1d5586af479fb61f9e05c606c55a74fd 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateSystemTest.java @@ -77,19 +77,37 @@ public abstract class NewDataSetsWithTypePredicateSystemTest<O> extends CommonPr @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithExperimentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithExperimentIdentifierSystemTest.java index 24d49c8ebb27892f623523e5724d1ab0d223b1dd..24ae61a76996eb60a87b06c248c884d91ff96d34 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithExperimentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithExperimentIdentifierSystemTest.java @@ -65,7 +65,10 @@ public class NewDataSetsWithTypePredicateWithExperimentIdentifierSystemTest exte @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithSampleIdentifierSystemTest.java index 5ee8cc700e1c8cb1aeac54f741ef866c7aca4432..b3c22155c30bcfd0fc227a63990dec241e0328f9 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewDataSetsWithTypePredicateWithSampleIdentifierSystemTest.java @@ -71,7 +71,10 @@ public class NewDataSetsWithTypePredicateWithSampleIdentifierSystemTest extends @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateSystemTest.java index c51329a3db60bb7f8bef4943c6f1dc22937f9109..d1620dde845cdbc23459f161bf2252464762a964 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateSystemTest.java @@ -36,19 +36,37 @@ public abstract class NewExternalDataPredicateSystemTest<O> extends CommonPredic @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No new data set specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No new data set specified."); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithParentDataSetCodesSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithParentDataSetCodesSystemTest.java index 2931ffae5999ba3357ab53c20d53cacc8f438e81..43f0a39e4faa87203f40dff28955948989c39927 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithParentDataSetCodesSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithParentDataSetCodesSystemTest.java @@ -68,7 +68,10 @@ public class NewExternalDataPredicateWithParentDataSetCodesSystemTest extends Ne @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSampleIdentifierSystemTest.java index a43f25a11ab465be272f382ed03b37e44acd1c94..2953f8fcf1be0ea5064cf4554da474df27833b60 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSampleIdentifierSystemTest.java @@ -74,7 +74,10 @@ public class NewExternalDataPredicateWithSampleIdentifierSystemTest extends NewE @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (SampleKind.SHARED_READ_WRITE.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (SampleKind.SHARED_READ_WRITE.equals(param)) { if (user.isInstanceUser()) { diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSamplePermIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSamplePermIdSystemTest.java index 376d846673f0f3c0d5edc97ac4ca6a857c3e0da6..435f21e92f753518bc9e618ec8ba87c8e714c922 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSamplePermIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/dataset/NewExternalDataPredicateWithSamplePermIdSystemTest.java @@ -74,7 +74,10 @@ public class NewExternalDataPredicateWithSamplePermIdSystemTest extends NewExter @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/DeletionTechIdCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/DeletionTechIdCollectionPredicateSystemTest.java index 2f9267ec1668cdb97de2913acdf366efb08fce87..bd90af6115190d42223bbee1e8c2949fcab2ad90 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/DeletionTechIdCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/DeletionTechIdCollectionPredicateSystemTest.java @@ -74,19 +74,37 @@ public abstract class DeletionTechIdCollectionPredicateSystemTest extends Common @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No deletion technical id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No deletion technical id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/RevertDeletionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/RevertDeletionPredicateSystemTest.java index 1b74cff00164b15bf8c54eed0e8b95c78de2364c..584117de94b3b78a2045b9cb62dc882302b93454 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/RevertDeletionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/RevertDeletionPredicateSystemTest.java @@ -74,7 +74,10 @@ public abstract class RevertDeletionPredicateSystemTest extends CommonPredicateS @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -86,13 +89,25 @@ public abstract class RevertDeletionPredicateSystemTest extends CommonPredicateS @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No revert deletion technical id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No revert deletion technical id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/V3DeletionIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/V3DeletionIdPredicateSystemTest.java index cecb827b1dba7ee867a3caa4069cc0133dfd728d..08c7cd41649c056d923b8810cdd31ca3dc4c86e1 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/V3DeletionIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/deletion/V3DeletionIdPredicateSystemTest.java @@ -74,19 +74,37 @@ public abstract class V3DeletionIdPredicateSystemTest extends CommonPredicateSys @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No v3 deletion id object specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No v3 deletion id object specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentAugmentedCodePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentAugmentedCodePredicateSystemTest.java index 4490ffbe28c671fd33bd1bf413e112a0b07ede9a..7315944aceaeff6b61ef7a939406e32b74f7f3a6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentAugmentedCodePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentAugmentedCodePredicateSystemTest.java @@ -60,13 +60,22 @@ public class ExperimentAugmentedCodePredicateSystemTest extends CommonPredicateS @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No experiment specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No experiment specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateSystemTest.java index 4bd3bc3c2ccb3d1034019fa821ffeee56e73d120..79dd01571aa38641cb18c88de4823e6955248c65 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateSystemTest.java @@ -47,7 +47,13 @@ public abstract class ExperimentIdPredicateSystemTest<O extends IExperimentId> e @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No experiment id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No experiment id specified."); + } } }; diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithAugmentedCodeSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithAugmentedCodeSystemTest.java index a0b82aca2cb0972a777a228204efdf2df19bed6c..505aea537cb0b448bce580416be4c46844ad15c6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithAugmentedCodeSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithAugmentedCodeSystemTest.java @@ -51,7 +51,10 @@ public class ExperimentIdPredicateWithAugmentedCodeSystemTest extends Experiment @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithPermIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithPermIdSystemTest.java index 19e55cfc79c606c454e9224dcc9749feca1c21de..765e175be2030a8d361a9feb93312f61fa782182 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithPermIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithPermIdSystemTest.java @@ -51,7 +51,13 @@ public class ExperimentIdPredicateWithPermIdSystemTest extends ExperimentIdPredi @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithTechIdSystemTest.java index be843897d7f2a3badf38d74a0cdbfa64acf54561..01168a38e81e455ab35b985b3d9243f3a8077d67 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentIdPredicateWithTechIdSystemTest.java @@ -51,7 +51,13 @@ public class ExperimentIdPredicateWithTechIdSystemTest extends ExperimentIdPredi @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertUserFailureExceptionThatExperimentDoesNotExist(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertUserFailureExceptionThatExperimentDoesNotExist(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentListPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentListPredicateSystemTest.java index 7bdc9bb04ac82970c110fb9c6fa7454de2348da7..cac493d95395108287cd054403e5cab165a449a1 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentListPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentListPredicateSystemTest.java @@ -86,13 +86,25 @@ public class ExperimentListPredicateSystemTest extends CommonPredicateSystemTest @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No experiment specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No experiment specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEOrNullPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEOrNullPredicateSystemTest.java index 60b555a27ec24d62fe9a4a27c840eedaa2133816..878401e3b1f6e1e92e4d94deb2a159b6b5510636 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEOrNullPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEOrNullPredicateSystemTest.java @@ -72,13 +72,22 @@ public class ExperimentPEOrNullPredicateSystemTest extends CommonPredicateSystem @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEPredicateSystemTest.java index 713de47733877e5bf4fa9456008cc6da821e32e6..5ddb08586c1acb412b6287ec99c72ef4f23d086f 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPEPredicateSystemTest.java @@ -72,7 +72,10 @@ public class ExperimentPEPredicateSystemTest extends CommonPredicateSystemTest<E @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -84,7 +87,10 @@ public class ExperimentPEPredicateSystemTest extends CommonPredicateSystemTest<E @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPermIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPermIdPredicateSystemTest.java index b9440a5ae36399efffeb3855be9a4dc938a5438f..48c25ddc30ad7ac2c65241c6673391bf156bab37 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPermIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentPermIdPredicateSystemTest.java @@ -62,13 +62,25 @@ public class ExperimentPermIdPredicateSystemTest extends CommonPredicateSystemTe @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No experiment perm id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No experiment perm id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdCollectionPredicateSystemTest.java index e64963890e65745efc1bfd666e24279ccb7fec56..5acd8e07ea8fe28f2d1d5f58a095f6c3e64564a6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdCollectionPredicateSystemTest.java @@ -68,19 +68,37 @@ public class ExperimentTechIdCollectionPredicateSystemTest extends CommonPredica @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No EXPERIMENT technical id collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No EXPERIMENT technical id collection specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdPredicateSystemTest.java index 20a94c30f7429a38abba6dd7cf42f0d77390562b..85a80c818d03b9ac609cab9e0e2f453c34d6ee1c 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentTechIdPredicateSystemTest.java @@ -62,13 +62,25 @@ public class ExperimentTechIdPredicateSystemTest extends CommonPredicateSystemTe @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No technical id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No technical id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertUserFailureExceptionThatExperimentDoesNotExist(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertUserFailureExceptionThatExperimentDoesNotExist(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateSystemTest.java index a53c08266fbbe8bcb7e321cab047c66006b707ce..0291230074587587acf1f71d3f102a0700d7e908 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateSystemTest.java @@ -46,7 +46,13 @@ public abstract class ExperimentUpdatesPredicateSystemTest extends CommonPredica @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No experiment updates specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No experiment updates specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithExperimentTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithExperimentTechIdSystemTest.java index e3a2c7b741aeea03ef98fa7bbcd28b0c82c97ab7..4cfe68d40ece2c75f1fc0438b505021b32a19540 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithExperimentTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithExperimentTechIdSystemTest.java @@ -56,7 +56,10 @@ public class ExperimentUpdatesPredicateWithExperimentTechIdSystemTest extends Ex @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithProjectIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithProjectIdentifierSystemTest.java index ac87f62a8e0edbdd94a98b481d50cb14379d8383..7ea3013f2b5a7e3f54137e37474dad41a9efc16a 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithProjectIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/ExperimentUpdatesPredicateWithProjectIdentifierSystemTest.java @@ -62,14 +62,19 @@ public class ExperimentUpdatesPredicateWithProjectIdentifierSystemTest extends E @Override protected void evaluateObjects(ProjectAuthorizationUser user, List<ExperimentUpdatesDTO> objects, Object param) { - // we want to test projectIdentifier access only therefore here we add assignment to have access to experimentId + if (user.isDisabledProjectUser()) + { + super.evaluateObjects(user, objects, param); + } else + { + // we want to test projectIdentifier access only therefore here we add assignment to have access to experimentId - Set<RoleAssignmentPE> roleAssignments = new HashSet<RoleAssignmentPE>(); - roleAssignments.addAll(user.getSessionProvider().getSession().tryGetPerson().getRoleAssignments()); - roleAssignments.add(createSpaceRole(RoleCode.ADMIN, getCommonService().tryFindSpace("TEST-SPACE"))); - user.getSessionProvider().getSession().tryGetPerson().setRoleAssignments(roleAssignments); - - super.evaluateObjects(user, objects, param); + Set<RoleAssignmentPE> roleAssignments = new HashSet<RoleAssignmentPE>(); + roleAssignments.addAll(user.getSessionProvider().getSession().tryGetPerson().getRoleAssignments()); + roleAssignments.add(createSpaceRole(RoleCode.ADMIN, getCommonService().tryFindSpace("TEST-SPACE"))); + user.getSessionProvider().getSession().tryGetPerson().setRoleAssignments(roleAssignments); + super.evaluateObjects(user, objects, param); + } } @Override @@ -80,7 +85,10 @@ public class ExperimentUpdatesPredicateWithProjectIdentifierSystemTest extends E @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentPredicateSystemTest.java index e3a2db3138df573fa72935e0de57e8b7ee95f78f..604b94ab7ae51d179250291482cc3df825e2f4d9 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentPredicateSystemTest.java @@ -60,13 +60,25 @@ public class NewExperimentPredicateSystemTest extends CommonPredicateSystemTest< @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No new experiment specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No new experiment specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentsWithTypePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentsWithTypePredicateSystemTest.java index aa4e0c6491d67aab4d4feb859666398d6a631008..e47e18e5a1f7a6fdc335a1af3cdc1329609b0336 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentsWithTypePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/NewExperimentsWithTypePredicateSystemTest.java @@ -72,19 +72,34 @@ public class NewExperimentsWithTypePredicateSystemTest extends CommonPredicateSy @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/UpdatedExperimentsWithTypePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/UpdatedExperimentsWithTypePredicateSystemTest.java index f6e7a8fa16bca65d40c68018ac0ec9ac3cf7b654..28df66be2dd3fa868c969abcf4d811166fcce72c 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/UpdatedExperimentsWithTypePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/experiment/UpdatedExperimentsWithTypePredicateSystemTest.java @@ -74,19 +74,34 @@ public class UpdatedExperimentsWithTypePredicateSystemTest extends CommonPredica @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/NewProjectPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/NewProjectPredicateSystemTest.java index df9ef39f497ef0fa27913b2703e6c2f90f30d508..39bedd3dc208641eef0f92fb52c615c0b4d7fbdc 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/NewProjectPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/NewProjectPredicateSystemTest.java @@ -60,13 +60,25 @@ public class NewProjectPredicateSystemTest extends CommonPredicateSystemTest<New @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No new project specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No new project specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectAugmentedCodePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectAugmentedCodePredicateSystemTest.java index 22803bd2f1e15697d9909da19bb5552bfb7b54da..34aebc2bd39abae2432454ffc4ff202d0273c033 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectAugmentedCodePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectAugmentedCodePredicateSystemTest.java @@ -59,13 +59,22 @@ public class ProjectAugmentedCodePredicateSystemTest extends CommonPredicateSyst @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithIdentifierSystemTest.java index 9c84860978a64497539398719ed5592e89a7dc3f..fabf19b19d4f725643a2de9b1066fa6e7f7d7610 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithIdentifierSystemTest.java @@ -60,13 +60,22 @@ public class ProjectIdPredicateWithIdentifierSystemTest extends CommonPredicateS @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithPermIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithPermIdSystemTest.java index 527e48a6c5eaf2c78241b0a9105705b26b021922..50e360313c7aa685af2e5a00bd7cdf03ccd80937 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithPermIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithPermIdSystemTest.java @@ -60,13 +60,25 @@ public class ProjectIdPredicateWithPermIdSystemTest extends CommonPredicateSyste @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithTechIdSystemTest.java index 402130089633e77906b3e042c849e76f46f90689..8acec6ef2278a0b6b387b57599a939f55fe4e86d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdPredicateWithTechIdSystemTest.java @@ -60,13 +60,25 @@ public class ProjectIdPredicateWithTechIdSystemTest extends CommonPredicateSyste @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertUserFailureExceptionThatProjectDoesNotExist(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertUserFailureExceptionThatProjectDoesNotExist(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierExistingSpacePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierExistingSpacePredicateSystemTest.java index 783bf89d1ff1421e8978f235d572d91c286aa062..afbd04c0a95cd19a416ce0d8b05743b590a0d0df 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierExistingSpacePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierExistingSpacePredicateSystemTest.java @@ -60,13 +60,25 @@ public class ProjectIdentifierExistingSpacePredicateSystemTest extends CommonPre @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierPredicateSystemTest.java index 2e58bb5a167143b152dd4a219df428f90dc844fa..24df33709f1fa4e2205559b4217682873e0ff891 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectIdentifierPredicateSystemTest.java @@ -60,13 +60,22 @@ public class ProjectIdentifierPredicateSystemTest extends CommonPredicateSystemT @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPEPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPEPredicateSystemTest.java index 88b9f0a5e4fc70998e856337e5c54df8b07807c0..83d6b570054903d3bdabce41fb5f7fb8aba0dd76 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPEPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPEPredicateSystemTest.java @@ -65,13 +65,22 @@ public class ProjectPEPredicateSystemTest extends CommonPredicateSystemTest<Proj @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdPredicateSystemTest.java index 180c35fa01f27daabaf7306b4e1ad3b93e65bb4c..99b70128db7e9a8db574f317fb653cb898869baf 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdPredicateSystemTest.java @@ -60,13 +60,25 @@ public class ProjectPermIdPredicateSystemTest extends CommonPredicateSystemTest< @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project perm id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project perm id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdStringPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdStringPredicateSystemTest.java index 66c25488d00e06c88b918b55cc9c8ab72dfbe6a9..3cf21bb59dea68544a3a8a4574d34fb412848b96 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdStringPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPermIdStringPredicateSystemTest.java @@ -59,13 +59,25 @@ public class ProjectPermIdStringPredicateSystemTest extends CommonPredicateSyste @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project perm id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project perm id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPredicateSystemTest.java index e8a3468a1f45839ee705e10715843e4299a19c14..5c3e0bb375e0a414b8bb507ee8967dd6a567c4ba 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectPredicateSystemTest.java @@ -60,13 +60,22 @@ public class ProjectPredicateSystemTest extends CommonPredicateSystemTest<Projec @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdCollectionPredicateSystemTest.java index 42548df128326483dba436b04a508d6deb0c3849..c8b7a592e6f6df252369b371ee189ac665821593 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdCollectionPredicateSystemTest.java @@ -66,19 +66,37 @@ public class ProjectTechIdCollectionPredicateSystemTest extends CommonPredicateS @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No PROJECT technical id collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No PROJECT technical id collection specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdPredicateSystemTest.java index 0cf62c72e84cbc5426a6f4489dde7f2de88c382a..631b83dbff175410eb988cf4c6454436c774cb54 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectTechIdPredicateSystemTest.java @@ -60,13 +60,25 @@ public class ProjectTechIdPredicateSystemTest extends CommonPredicateSystemTest< @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No technical id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No technical id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertUserFailureExceptionThatProjectDoesNotExist(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertUserFailureExceptionThatProjectDoesNotExist(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithIdentifierSystemTest.java index a906c36c808a0f1af9c778c49faaf36564cfa1fe..b6b864fd92f8e71196648e0e7f4b6c453a7bdfad 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithIdentifierSystemTest.java @@ -64,13 +64,22 @@ public class ProjectUpdatesPredicateWithIdentifierSystemTest extends CommonPredi @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project updates specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project updates specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithPermIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithPermIdSystemTest.java index d23b9b022ca01c1fc1338a6fb5d2d341135bff44..7fc6ff4ff6bf5730a85183f6047a329119876f9b 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithPermIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithPermIdSystemTest.java @@ -64,13 +64,25 @@ public class ProjectUpdatesPredicateWithPermIdSystemTest extends CommonPredicate @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project updates specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project updates specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithTechIdSystemTest.java index b7b9535987e463845dd28cd7b8f731fa5f15257d..ea89d570b7d3db3c9bf5c7abfe81f32b65f16e0a 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/project/ProjectUpdatesPredicateWithTechIdSystemTest.java @@ -65,13 +65,25 @@ public class ProjectUpdatesPredicateWithTechIdSystemTest extends CommonPredicate @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No project updates specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No project updates specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertUserFailureExceptionThatProjectDoesNotExist(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertUserFailureExceptionThatProjectDoesNotExist(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ExistingSampleIdentifierPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ExistingSampleIdentifierPredicateSystemTest.java index ef3f69d8a149028bab87974c4216fa31d8498613..afdf4b1165868f589f1b9d4f09b4c697ea0815f7 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ExistingSampleIdentifierPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ExistingSampleIdentifierPredicateSystemTest.java @@ -44,7 +44,13 @@ public class ExistingSampleIdentifierPredicateSystemTest extends SampleIdentifie @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateSystemTest.java index 20d952ecc25106df8d24a55cd7de1083f5592a31..d5b3caa373d5b8113cf00bfc53629eeee665123f 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateSystemTest.java @@ -46,7 +46,13 @@ public abstract class ListSampleCriteriaPredicateSystemTest extends CommonPredic @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample listing criteria specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample listing criteria specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithExperimentSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithExperimentSystemTest.java index d0148c2a6e6ded868b2df016d63f4a3312c75775..4c92618d1444c956aac601ad4708a29d6d0ae615 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithExperimentSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithExperimentSystemTest.java @@ -52,7 +52,13 @@ public class ListSampleCriteriaPredicateWithExperimentSystemTest extends ListSam @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertUserFailureExceptionThatExperimentDoesNotExist(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertUserFailureExceptionThatExperimentDoesNotExist(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSampleSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSampleSystemTest.java index a446607314fd551594cf6e46c50c4700aa21ec1f..afa1a5178f491271db94c8278ea09043bba495e9 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSampleSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSampleSystemTest.java @@ -69,7 +69,13 @@ public abstract class ListSampleCriteriaPredicateWithSampleSystemTest extends Li @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSpaceSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSpaceSystemTest.java index e983328f03d2240e4e69c6561adb94c24967a991..e1de513cc35122fc6e0dcd36a13fae8c2fecc28c 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSpaceSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSampleCriteriaPredicateWithSpaceSystemTest.java @@ -55,7 +55,13 @@ public class ListSampleCriteriaPredicateWithSpaceSystemTest extends ListSampleCr @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSamplesByPropertyPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSamplesByPropertyPredicateSystemTest.java index 244f9039f83864cff72fe911b22728b80cddeba0..d3d9fec671bef3c292316ce5f0b324b0c03be665 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSamplesByPropertyPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/ListSamplesByPropertyPredicateSystemTest.java @@ -60,13 +60,22 @@ public class ListSamplesByPropertyPredicateSystemTest extends CommonPredicateSys @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No list samples by property specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No list samples by property specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateSystemTest.java index edb5b9e375f9a52083bced96b7f469bdb972bc7d..062e8836a1f561900a1c53e324ec9135b9f4aa55 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateSystemTest.java @@ -46,7 +46,13 @@ public abstract class NewSamplePredicateSystemTest extends CommonPredicateSystem @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No new sample specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No new sample specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithExperimentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithExperimentIdentifierSystemTest.java index 5ae3fc6d1faae867acd1fcfe2c8d69f7fcb19912..f527aacf73cdd850aa61dc0c4ced9070e75e5e66 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithExperimentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithExperimentIdentifierSystemTest.java @@ -56,7 +56,13 @@ public class NewSamplePredicateWithExperimentIdentifierSystemTest extends NewSam @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithProjectIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithProjectIdentifierSystemTest.java index 8fe48fb7efd5f81d74eae5d9e00f73994e33d17a..a9e86898c644187a4b43cc76591dfbc6796445e1 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithProjectIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithProjectIdentifierSystemTest.java @@ -53,7 +53,13 @@ public class NewSamplePredicateWithProjectIdentifierSystemTest extends NewSample @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithSampleSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithSampleSystemTest.java index 093fac8d3407662ff6a7785e6d252b34b668fa77..2dd942b146af345d145751ae05b949b5992671a7 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithSampleSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplePredicateWithSampleSystemTest.java @@ -41,7 +41,10 @@ public abstract class NewSamplePredicateWithSampleSystemTest extends NewSamplePr @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (SampleKind.SHARED_READ_WRITE.equals(param) && false == user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (SampleKind.SHARED_READ_WRITE.equals(param) && false == user.isInstanceUser()) { assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithContainerIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithContainerIdentifierSystemTest.java index 92d47db6accd4431a5e47ec97a25c25b59ba5051..5a5dbd2b876cc28670b689bbc2b34d33acae6889 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithContainerIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithContainerIdentifierSystemTest.java @@ -53,7 +53,13 @@ public class NewSamplesWithTypePredicateWithContainerIdentifierSystemTest extend @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithExperimentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithExperimentIdentifierSystemTest.java index a490fdb0cf0848d040bf163702798e847f443979..5d26d59157cba53ba6fd67b69e8bc6ba439f72ca 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithExperimentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithExperimentIdentifierSystemTest.java @@ -53,7 +53,13 @@ public class NewSamplesWithTypePredicateWithExperimentIdentifierSystemTest exten @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithParentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithParentIdentifierSystemTest.java index b8ac384974bb7c424ad296f7167a35e306b08263..3eb4a6e686fe39b23db499a891a07a75b7e5ad84 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithParentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithParentIdentifierSystemTest.java @@ -53,7 +53,13 @@ public class NewSamplesWithTypePredicateWithParentIdentifierSystemTest extends N @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithProjectIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithProjectIdentifierSystemTest.java index d8bc7518d5e9a1f1f9b4d34f782b09684c22536b..9e6ad07ad96d01b4120f059f87a5ea61d7918a99 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithProjectIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithProjectIdentifierSystemTest.java @@ -53,7 +53,13 @@ public class NewSamplesWithTypePredicateWithProjectIdentifierSystemTest extends @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithSampleIdentifierSystemTest.java index c8b650c9cf2f0b5a4be3ee0aa0f3a230147f6b59..a087b627bfb969be534b02deac36aca7b526d91d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/NewSamplesWithTypePredicateWithSampleIdentifierSystemTest.java @@ -53,7 +53,13 @@ public class NewSamplesWithTypePredicateWithSampleIdentifierSystemTest extends N @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleAugmentedCodePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleAugmentedCodePredicateSystemTest.java index e092d3b326182c022535e02ac0c2675e3e7a3d9e..28a94df1ec79900e1bb2a625052539a6c3a24e57 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleAugmentedCodePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleAugmentedCodePredicateSystemTest.java @@ -96,13 +96,22 @@ public class SampleAugmentedCodePredicateSystemTest extends CommonPredicateSyste @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateSystemTest.java index d8d1828433cb01618196b52dfd5925c329a5b138..5990a6c25f371e1fcd6cbb752e780d674f6b34b5 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateSystemTest.java @@ -52,7 +52,13 @@ public abstract class SampleIdPredicateSystemTest extends CommonPredicateSystemT @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample id specified."); + } } }; diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleIdentifierSystemTest.java index ff1525afcca35a8da44746eaf3d7ffd2d5704f05..66eea0f5907402641c0c6fdc86eb898086194aaf 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleIdentifierSystemTest.java @@ -54,7 +54,10 @@ public class SampleIdPredicateWithSampleIdentifierSystemTest extends SampleIdPre @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSamplePermIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSamplePermIdSystemTest.java index a20221f990817446784fd2b8ee59a2726bbbc9eb..3ea074f68691c4eb6a662bb9afc9b7727d0f3dec 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSamplePermIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSamplePermIdSystemTest.java @@ -55,7 +55,13 @@ public class SampleIdPredicateWithSamplePermIdSystemTest extends SampleIdPredica @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, AuthorizationFailureException.class, ".*There is no sample with perm id 'IDONTEXIST'.*"); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, AuthorizationFailureException.class, ".*There is no sample with perm id 'IDONTEXIST'.*"); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleTechIdSystemTest.java index 4c304ec5d2d60e8fa3c1d0772faecb41a036a7de..91b3f706721123c6932f28314c4fe07676abe08d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdPredicateWithSampleTechIdSystemTest.java @@ -54,7 +54,13 @@ public class SampleIdPredicateWithSampleTechIdSystemTest extends SampleIdPredica @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierCollectionPredicateSystemTest.java index b9a968ca8c36a4e04f7535558b33533cc9d6d14f..3136af16c336a12a4980baecc298ba77cffbc264 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierCollectionPredicateSystemTest.java @@ -51,7 +51,13 @@ public class SampleIdentifierCollectionPredicateSystemTest extends SampleIdentif @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample identifier specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample identifier specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierPredicateSystemTest.java index 50ac8c962962e93d52ef90a3816c548c1e7e007e..6f083a64db79b0266ca02e12c11993eb3f0a9f16 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleIdentifierPredicateSystemTest.java @@ -67,13 +67,22 @@ public class SampleIdentifierPredicateSystemTest extends CommonPredicateSystemTe @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample identifier specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample identifier specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleListPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleListPredicateSystemTest.java index 460d0a5805b5379309f6ed66f307078e6c9d056b..35bb3d34f9ac9d76dec2d9dbc8163da9f0d8c65f 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleListPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleListPredicateSystemTest.java @@ -73,19 +73,34 @@ public class SampleListPredicateSystemTest extends CommonPredicateSystemTest<Sam @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEOrNullPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEOrNullPredicateSystemTest.java index e223660566ecc60e538ef520bac99df7c751e882..f57ca5aeec0212438823198435256ac315514e0d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEOrNullPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEOrNullPredicateSystemTest.java @@ -50,13 +50,22 @@ public class SamplePEOrNullPredicateSystemTest extends SamplePEPredicateSystemTe @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEPredicateSystemTest.java index 9a96f9ffb5db99a2b61323ea56f910e574855af5..a7abbaf642b81104466f6b716a87e57bae05a8b8 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePEPredicateSystemTest.java @@ -105,7 +105,10 @@ public class SamplePEPredicateSystemTest extends CommonPredicateSystemTest<Sampl @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -117,7 +120,10 @@ public class SamplePEPredicateSystemTest extends CommonPredicateSystemTest<Sampl @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePermIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePermIdPredicateSystemTest.java index 59d472c1bc1fad8eae63ce7725dd635e931c84fc..78227d2734cbefd35a0ad5a2945fb50478da0fd7 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePermIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePermIdPredicateSystemTest.java @@ -68,13 +68,25 @@ public class SamplePermIdPredicateSystemTest extends CommonPredicateSystemTest<P @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample perm id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample perm id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, AuthorizationFailureException.class, ".*There is no sample with perm id 'IDONTEXIST'.*"); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, AuthorizationFailureException.class, ".*There is no sample with perm id 'IDONTEXIST'.*"); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePredicateSystemTest.java index 9c75653df73c15344e45ed94f0f4c30e4092dc69..faad316820811a74f20c54501abdac882f92a14b 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SamplePredicateSystemTest.java @@ -67,13 +67,22 @@ public class SamplePredicateSystemTest extends CommonPredicateSystemTest<Sample> @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdCollectionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdCollectionPredicateSystemTest.java index 5e544bde98276518267818e402cca94290deb9fc..60ddf7dfebb1916d4432c9789591b2548f2d304e 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdCollectionPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdCollectionPredicateSystemTest.java @@ -73,19 +73,37 @@ public class SampleTechIdCollectionPredicateSystemTest extends CommonPredicateSy @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample technical ids specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample technical ids specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdPredicateSystemTest.java index 9d32268917854a04202562d90fe58d66f1346ea0..2225ff49f6decb4ae24ac94b1f93d29d260349b7 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleTechIdPredicateSystemTest.java @@ -67,13 +67,25 @@ public class SampleTechIdPredicateSystemTest extends CommonPredicateSystemTest<T @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample technical id specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample technical id specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithContainerIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithContainerIdentifierSystemTest.java index 587cc39575f4e24fb1c17d905d00eb627fa22099..216266866581333f106c574f34da0b4c37b2e1d2 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithContainerIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithContainerIdentifierSystemTest.java @@ -51,7 +51,10 @@ public class SampleUpdatesCollectionPredicateWithContainerIdentifierSystemTest e @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -63,7 +66,13 @@ public class SampleUpdatesCollectionPredicateWithContainerIdentifierSystemTest e @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample updates collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample updates collection specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java index e46042b4e513c9573f2c42fc56f413bb68e0a32f..29f53cf79941ace4f78a78c62ca8776a8fbe3bea 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithExperimentIdentifierSystemTest.java @@ -51,7 +51,10 @@ public class SampleUpdatesCollectionPredicateWithExperimentIdentifierSystemTest @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -63,7 +66,13 @@ public class SampleUpdatesCollectionPredicateWithExperimentIdentifierSystemTest @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample updates collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample updates collection specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithProjectIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithProjectIdentifierSystemTest.java index f60fc001189e126cbfb5c9cd6eadff7d4d575918..d89a2fb7ca63b90589bd3bd3d51901eac0af1d54 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithProjectIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithProjectIdentifierSystemTest.java @@ -51,7 +51,10 @@ public class SampleUpdatesCollectionPredicateWithProjectIdentifierSystemTest ext @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -63,7 +66,13 @@ public class SampleUpdatesCollectionPredicateWithProjectIdentifierSystemTest ext @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample updates collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample updates collection specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java index 57611f12e9d6c58fba2c6d3584c64033ac1c4c43..180e98511a40f32700c954ccecbc5ef9a82c7851 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleIdentifierSystemTest.java @@ -51,7 +51,10 @@ public class SampleUpdatesCollectionPredicateWithSampleIdentifierSystemTest exte @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -63,7 +66,13 @@ public class SampleUpdatesCollectionPredicateWithSampleIdentifierSystemTest exte @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample updates collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample updates collection specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleTechIdSystemTest.java index f934916e12c806f065b38f1045fb0759bbb0c358..d358ab39c36da0a3b51835bfdf38a056526ec6d7 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesCollectionPredicateWithSampleTechIdSystemTest.java @@ -51,7 +51,10 @@ public class SampleUpdatesCollectionPredicateWithSampleTechIdSystemTest extends @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else @@ -63,7 +66,13 @@ public class SampleUpdatesCollectionPredicateWithSampleTechIdSystemTest extends @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample updates collection specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample updates collection specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateSystemTest.java index c04e8568287222181e31eefbfa3046af8535a5fc..b8bfbe14ee69585eac34b40678c25d99d397e3a2 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateSystemTest.java @@ -46,7 +46,13 @@ public abstract class SampleUpdatesPredicateSystemTest extends CommonPredicateSy @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No sample updates specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No sample updates specified."); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithContainerIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithContainerIdentifierSystemTest.java index e83b6dab44488e6843a13a5311bb3495e011800b..b1f6b8bb184e0497d8f7e8c2dc75fbcfd0084b1f 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithContainerIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithContainerIdentifierSystemTest.java @@ -53,7 +53,10 @@ public class SampleUpdatesPredicateWithContainerIdentifierSystemTest extends Sam @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithExperimentIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithExperimentIdentifierSystemTest.java index f42460ea144b5c35a3ad61b36fd0a94f55bd96be..1a78156aa08ac79c79ad1a43bc160d7e4e79444d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithExperimentIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithExperimentIdentifierSystemTest.java @@ -54,7 +54,10 @@ public class SampleUpdatesPredicateWithExperimentIdentifierSystemTest extends Sa @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithProjectIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithProjectIdentifierSystemTest.java index 54a4c6f00629996b364291e526c10c12f93edcda..1befad30c57d7a2327d2e6e18b814ac19c91d2f1 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithProjectIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithProjectIdentifierSystemTest.java @@ -52,7 +52,10 @@ public class SampleUpdatesPredicateWithProjectIdentifierSystemTest extends Sampl @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleIdentifierSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleIdentifierSystemTest.java index a5a0e69810be65debff2db365584fbad0a96a4ad..c65d9d414f33e7cdb3fd5f4c5beb61c1a205e211 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleIdentifierSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleIdentifierSystemTest.java @@ -53,7 +53,10 @@ public class SampleUpdatesPredicateWithSampleIdentifierSystemTest extends Sample @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleTechIdSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleTechIdSystemTest.java index c54a815ed2b0ae7619767306d2bb3cff31e913dc..82b3b99e84197821a3072fe88527e3dde9f75c02 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleTechIdSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/sample/SampleUpdatesPredicateWithSampleTechIdSystemTest.java @@ -53,7 +53,13 @@ public class SampleUpdatesPredicateWithSampleTechIdSystemTest extends SampleUpda @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/space/SpaceIdentifierPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/space/SpaceIdentifierPredicateSystemTest.java index f6fa4e01cff1d776c3c8241357247ff338276269..bdd0f55f6f702e77f41bb70a99ef6d160b725a5d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/space/SpaceIdentifierPredicateSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/space/SpaceIdentifierPredicateSystemTest.java @@ -60,13 +60,22 @@ public class SpaceIdentifierPredicateSystemTest extends CommonPredicateSystemTes @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No space identifier specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No space identifier specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestAssertionsDefault.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestAssertionsDefault.java index b690afbe71e44ddbddba7757799e7d2ef76a2f74..1fa8be989f3d8c44795abe328bbf4e0f600767f0 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestAssertionsDefault.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestAssertionsDefault.java @@ -33,8 +33,15 @@ public class CommonValidatorSystemTestAssertionsDefault<O> extends CommonValidat @Override public void assertWithNullObject(ProjectAuthorizationUser user, O result, Throwable t, Object param) { - CommonAuthorizationSystemTest.assertNoException(t); CommonAuthorizationSystemTest.assertNull(result); + + if (user.isDisabledProjectUser()) + { + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + CommonAuthorizationSystemTest.assertNoException(t); + } } @Override @@ -51,20 +58,27 @@ public class CommonValidatorSystemTestAssertionsDefault<O> extends CommonValidat private void assertWithObject(ProjectAuthorizationUser user, O result, Throwable t, Object param, ProjectIdentifier project) { - CommonAuthorizationSystemTest.assertNoException(t); - - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - CommonAuthorizationSystemTest.assertNotNull(result); + CommonAuthorizationSystemTest.assertNull(result); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); } else { - if (user.isSpaceUser(project.getSpaceCode()) - || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())) + CommonAuthorizationSystemTest.assertNoException(t); + + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNotNull(result); } else { - CommonAuthorizationSystemTest.assertNull(result); + if (user.isSpaceUser(project.getSpaceCode()) + || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())) + { + CommonAuthorizationSystemTest.assertNotNull(result); + } else + { + CommonAuthorizationSystemTest.assertNull(result); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestDataSetAssertions.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestDataSetAssertions.java index dcfb884dba03ec4aa24b3746e101a4dc0b16d22d..bd59ac6b2d1e1c933ae5deb499555579fa81f750 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestDataSetAssertions.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestDataSetAssertions.java @@ -50,37 +50,44 @@ public class CommonValidatorSystemTestDataSetAssertions<O> extends CommonValidat private void assertWithObject(ProjectAuthorizationUser user, O result, Throwable t, Object param, ProjectIdentifier project) { - CommonAuthorizationSystemTest.assertNoException(t); - - if (DataSetKind.SPACE_SAMPLE.equals(param)) + if (user.isDisabledProjectUser()) { - if (user.isInstanceUser()) - { - CommonAuthorizationSystemTest.assertNotNull(result); - } else + CommonAuthorizationSystemTest.assertNull(result); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + CommonAuthorizationSystemTest.assertNoException(t); + + if (DataSetKind.SPACE_SAMPLE.equals(param)) { - if (user.isSpaceUser(project.getSpaceCode())) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNotNull(result); } else { - CommonAuthorizationSystemTest.assertNull(result); + if (user.isSpaceUser(project.getSpaceCode())) + { + CommonAuthorizationSystemTest.assertNotNull(result); + } else + { + CommonAuthorizationSystemTest.assertNull(result); + } } - } - } else - { - if (user.isInstanceUser()) - { - CommonAuthorizationSystemTest.assertNotNull(result); } else { - if (user.isSpaceUser(project.getSpaceCode()) - || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNotNull(result); } else { - CommonAuthorizationSystemTest.assertNull(result); + if (user.isSpaceUser(project.getSpaceCode()) + || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())) + { + CommonAuthorizationSystemTest.assertNotNull(result); + } else + { + CommonAuthorizationSystemTest.assertNull(result); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestMaterialAssertions.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestMaterialAssertions.java new file mode 100644 index 0000000000000000000000000000000000000000..0b1f7359857f1aac6e27d13fee056d574f65ec79 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestMaterialAssertions.java @@ -0,0 +1,63 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator; + +import static ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.CommonAuthorizationSystemTest.AUTH_PROJECT_1; +import static ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.CommonAuthorizationSystemTest.AUTH_SPACE_1; +import static ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.CommonAuthorizationSystemTest.AUTH_SPACE_2; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.CommonAuthorizationSystemTest; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; + +/** + * @author pkupczyk + */ +public class CommonValidatorSystemTestMaterialAssertions<O> extends CommonValidatorSystemTestAssertionsDelegate<O> +{ + + public CommonValidatorSystemTestMaterialAssertions(CommonValidatorSystemTestAssertions<O> delegate) + { + super(delegate); + } + + @Override + public void assertWithProject11Object(ProjectAuthorizationUser user, O result, Throwable t, Object param) + { + assertWithObject(user, result, t, param, new ProjectIdentifier(AUTH_SPACE_1, AUTH_PROJECT_1)); + } + + @Override + public void assertWithProject21Object(ProjectAuthorizationUser user, O result, Throwable t, Object param) + { + assertWithObject(user, result, t, param, new ProjectIdentifier(AUTH_SPACE_2, AUTH_PROJECT_1)); + } + + private void assertWithObject(ProjectAuthorizationUser user, O result, Throwable t, Object param, ProjectIdentifier project) + { + if (user.isDisabledProjectUser()) + { + CommonAuthorizationSystemTest.assertNull(result); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + CommonAuthorizationSystemTest.assertNotNull(result); + CommonAuthorizationSystemTest.assertNoException(t); + } + } + +} \ No newline at end of file diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSampleAssertions.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSampleAssertions.java index 31dad5e011e2d749b39bb8a2197addc9af5667dc..11cfe37693d49e4d61a270e37f72123c520249b6 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSampleAssertions.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSampleAssertions.java @@ -50,40 +50,47 @@ public class CommonValidatorSystemTestSampleAssertions<O> extends CommonValidato private void assertWithObject(ProjectAuthorizationUser user, O result, Throwable t, Object param, ProjectIdentifier project) { - CommonAuthorizationSystemTest.assertNoException(t); - - if (SampleKind.SHARED_READ.equals(param) || SampleKind.SHARED_READ_WRITE.equals(param)) + if (user.isDisabledProjectUser()) { - CommonAuthorizationSystemTest.assertNotNull(result); - } else if (SampleKind.SPACE.equals(param) || SampleKind.SPACE_CONTAINED.equals(param)) + CommonAuthorizationSystemTest.assertNull(result); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else { - if (user.isInstanceUser()) + CommonAuthorizationSystemTest.assertNoException(t); + + if (SampleKind.SHARED_READ.equals(param) || SampleKind.SHARED_READ_WRITE.equals(param)) { CommonAuthorizationSystemTest.assertNotNull(result); - } else + } else if (SampleKind.SPACE.equals(param) || SampleKind.SPACE_CONTAINED.equals(param)) { - if (user.isSpaceUser(project.getSpaceCode())) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNotNull(result); } else { - CommonAuthorizationSystemTest.assertNull(result); + if (user.isSpaceUser(project.getSpaceCode())) + { + CommonAuthorizationSystemTest.assertNotNull(result); + } else + { + CommonAuthorizationSystemTest.assertNull(result); + } } - } - } else - { - if (user.isInstanceUser()) - { - CommonAuthorizationSystemTest.assertNotNull(result); } else { - if (user.isSpaceUser(project.getSpaceCode()) - || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())) + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNotNull(result); } else { - CommonAuthorizationSystemTest.assertNull(result); + if (user.isSpaceUser(project.getSpaceCode()) + || (user.isProjectUser(project.getSpaceCode(), project.getProjectCode()) && user.hasPAEnabled())) + { + CommonAuthorizationSystemTest.assertNotNull(result); + } else + { + CommonAuthorizationSystemTest.assertNull(result); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSpaceAssertions.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSpaceAssertions.java index 6c8bdd22cc620c991c68935ae865c2904a1b174f..1a14ce6ac3f8b4f33657c18bc1d67aa382fe9639 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSpaceAssertions.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/CommonValidatorSystemTestSpaceAssertions.java @@ -49,19 +49,26 @@ public class CommonValidatorSystemTestSpaceAssertions<O> extends CommonValidator private void assertWithObject(ProjectAuthorizationUser user, O result, Throwable t, Object param, ProjectIdentifier project) { - CommonAuthorizationSystemTest.assertNoException(t); - - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - CommonAuthorizationSystemTest.assertNotNull(result); + CommonAuthorizationSystemTest.assertNull(result); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); } else { - if (user.isSpaceUser(project.getSpaceCode())) + CommonAuthorizationSystemTest.assertNoException(t); + + if (user.isInstanceUser()) { CommonAuthorizationSystemTest.assertNotNull(result); } else { - CommonAuthorizationSystemTest.assertNull(result); + if (user.isSpaceUser(project.getSpaceCode())) + { + CommonAuthorizationSystemTest.assertNotNull(result); + } else + { + CommonAuthorizationSystemTest.assertNull(result); + } } } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/deletion/DeletionValidatorWithSampleSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/deletion/DeletionValidatorWithSampleSystemTest.java index c6c7c43ed4bd389b41e2b4cef0c12894463a6c81..56bdb134ed67aaa707a0ec8d844a9ee3369660f1 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/deletion/DeletionValidatorWithSampleSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/deletion/DeletionValidatorWithSampleSystemTest.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.deletion; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.CommonAuthorizationSystemTest; import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser; import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestSampleAssertions; @@ -51,40 +52,54 @@ public class DeletionValidatorWithSampleSystemTest extends DeletionValidatorSyst @Override public void assertWithProject11Object(ProjectAuthorizationUser user, Deletion result, Throwable t, Object param) { - if (SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) { - assertNoException(t); - - if (user.isInstanceUser()) + CommonAuthorizationSystemTest.assertNull(result); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + if (SampleKind.SHARED_READ.equals(param)) { - assertNotNull(result); + assertNoException(t); + + if (user.isInstanceUser()) + { + assertNotNull(result); + } else + { + assertNull(result); + } } else { - assertNull(result); + super.assertWithProject11Object(user, result, t, param); } - } else - { - super.assertWithProject11Object(user, result, t, param); } } @Override public void assertWithProject21Object(ProjectAuthorizationUser user, Deletion result, Throwable t, Object param) { - if (SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) { - assertNoException(t); - - if (user.isInstanceUser()) + CommonAuthorizationSystemTest.assertNull(result); + CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + if (SampleKind.SHARED_READ.equals(param)) { - assertNotNull(result); + assertNoException(t); + + if (user.isInstanceUser()) + { + assertNotNull(result); + } else + { + assertNull(result); + } } else { - assertNull(result); + super.assertWithProject21Object(user, result, t, param); } - } else - { - super.assertWithProject21Object(user, result, t, param); } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f267d046ea8d39ad8c2d88827763d445b496286b --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorSystemTest.java @@ -0,0 +1,36 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTest; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.systemtest.authorization.validator.entity.EntityValidatorTestService; + +/** + * @author pkupczyk + */ +public abstract class EntityHistoryValidatorSystemTest extends CommonValidatorSystemTest<EntityHistory> +{ + + @Override + protected EntityHistory validateObject(ProjectAuthorizationUser user, EntityHistory object, Object param) + { + return getBean(EntityValidatorTestService.class).testEntityHistoryValidator(user.getSessionProvider(), object); + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithDataSetSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithDataSetSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..20b99af9bdf5981c88b14c2179956e3bd6e295d5 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithDataSetSystemTest.java @@ -0,0 +1,52 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.ExternalDataUtil; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestDataSetAssertions; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class EntityHistoryValidatorWithDataSetSystemTest extends EntityHistoryValidatorSystemTest +{ + + @Override + public Object[] getParams() + { + return getDataSetKinds(); + } + + @Override + protected EntityHistory createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + EntityHistory history = new EntityHistory(); + history.setRelatedEntity(ExternalDataUtil.createObject(this, spacePE, projectPE, param)); + return history; + } + + @Override + protected CommonValidatorSystemTestAssertions<EntityHistory> getAssertions() + { + return new CommonValidatorSystemTestDataSetAssertions<EntityHistory>(super.getAssertions()); + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithExperimentSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithExperimentSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b9f21502a8a54ba3f3ef399819489906df13eee9 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithExperimentSystemTest.java @@ -0,0 +1,51 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class EntityHistoryValidatorWithExperimentSystemTest extends EntityHistoryValidatorSystemTest +{ + + @Override + protected EntityHistory createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + Space space = new Space(); + space.setCode(spacePE.getCode()); + + Project project = new Project(); + project.setCode(projectPE.getCode()); + project.setSpace(space); + + Experiment experiment = new Experiment(); + experiment.setProject(project); + + EntityHistory history = new EntityHistory(); + history.setRelatedEntity(experiment); + + return history; + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithProjectSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithProjectSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c085e18f582c2f0c5b5b13b28bd0b067351a61b6 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithProjectSystemTest.java @@ -0,0 +1,47 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class EntityHistoryValidatorWithProjectSystemTest extends EntityHistoryValidatorSystemTest +{ + + @Override + protected EntityHistory createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + Space space = new Space(); + space.setCode(spacePE.getCode()); + + Project project = new Project(); + project.setCode(projectPE.getCode()); + project.setSpace(space); + + EntityHistory history = new EntityHistory(); + history.setRelatedProject(project); + + return history; + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithSampleSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithSampleSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..10d3764ff1ea54783dd91ba2c6394c72129005fa --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithSampleSystemTest.java @@ -0,0 +1,52 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.SampleUtil; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestSampleAssertions; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class EntityHistoryValidatorWithSampleSystemTest extends EntityHistoryValidatorSystemTest +{ + + @Override + public Object[] getParams() + { + return getSampleKinds(SampleKind.SHARED_READ); + } + + @Override + protected EntityHistory createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + EntityHistory history = new EntityHistory(); + history.setRelatedEntity(SampleUtil.createObject(this, spacePE, projectPE, param)); + return history; + } + + @Override + protected CommonValidatorSystemTestAssertions<EntityHistory> getAssertions() + { + return new CommonValidatorSystemTestSampleAssertions<EntityHistory>(super.getAssertions()); + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithSpaceSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithSpaceSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6a816465774c2b77143de82ce465d9e57c40f1ee --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/EntityHistoryValidatorWithSpaceSystemTest.java @@ -0,0 +1,50 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestSpaceAssertions; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class EntityHistoryValidatorWithSpaceSystemTest extends EntityHistoryValidatorSystemTest +{ + + @Override + protected EntityHistory createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + Space space = new Space(); + space.setCode(spacePE.getCode()); + + EntityHistory history = new EntityHistory(); + history.setRelatedSpace(space); + + return history; + } + + @Override + protected CommonValidatorSystemTestAssertions<EntityHistory> getAssertions() + { + return new CommonValidatorSystemTestSpaceAssertions<EntityHistory>(super.getAssertions()); + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4d86045deb1aef59f0d519bbc34727e0fe173ea9 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorSystemTest.java @@ -0,0 +1,39 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import java.util.List; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTest; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.systemtest.authorization.validator.entity.EntityValidatorTestService; + +/** + * @author pkupczyk + */ +public abstract class MatchingEntityValidatorSystemTest extends CommonValidatorSystemTest<MatchingEntity> +{ + + @Override + protected MatchingEntity validateObject(ProjectAuthorizationUser user, MatchingEntity object, Object param) + { + List<MatchingEntity> list = getBean(EntityValidatorTestService.class).testMatchingEntityValidator(user.getSessionProvider(), object); + return list != null && list.size() == 1 ? list.get(0) : null; + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithDataSetSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithDataSetSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e4d2e2e7d7054ad2ee43ea60c9325f61ddceb33b --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithDataSetSystemTest.java @@ -0,0 +1,67 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestDataSetAssertions; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class MatchingEntityValidatorWithDataSetSystemTest extends MatchingEntityValidatorSystemTest +{ + + @Override + public Object[] getParams() + { + return getDataSetKinds(); + } + + @Override + protected MatchingEntity createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + DataPE dataSetPE = getDataSet(spacePE, projectPE, (DataSetKind) param); + + Space space = null; + + if (dataSetPE.getSpace() != null) + { + space = new Space(); + space.setCode(dataSetPE.getSpace().getCode()); + } + + MatchingEntity entity = new MatchingEntity(); + entity.setEntityKind(EntityKind.DATA_SET); + entity.setId(dataSetPE.getId()); + entity.setSpace(space); + + return entity; + } + + @Override + protected CommonValidatorSystemTestAssertions<MatchingEntity> getAssertions() + { + return new CommonValidatorSystemTestDataSetAssertions<MatchingEntity>(super.getAssertions()); + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithExperimentSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithExperimentSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..07e39d088dc91b15077541fef4fcd35c450738d0 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithExperimentSystemTest.java @@ -0,0 +1,48 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class MatchingEntityValidatorWithExperimentSystemTest extends MatchingEntityValidatorSystemTest +{ + + @Override + protected MatchingEntity createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + ExperimentPE experimentPE = getExperiment(spacePE, projectPE); + + Space space = new Space(); + space.setCode(experimentPE.getProject().getSpace().getCode()); + + MatchingEntity entity = new MatchingEntity(); + entity.setEntityKind(EntityKind.EXPERIMENT); + entity.setId(experimentPE.getId()); + entity.setSpace(space); + + return entity; + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithMaterialSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithMaterialSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3c935d7d2ee51423d94fa1dd3b07af4a5814b950 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithMaterialSystemTest.java @@ -0,0 +1,48 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestMaterialAssertions; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class MatchingEntityValidatorWithMaterialSystemTest extends MatchingEntityValidatorSystemTest +{ + + @Override + protected MatchingEntity createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + MatchingEntity entity = new MatchingEntity(); + entity.setEntityKind(EntityKind.MATERIAL); + entity.setId(22L); // BACTERIUM1 + + return entity; + } + + @Override + protected CommonValidatorSystemTestAssertions<MatchingEntity> getAssertions() + { + return new CommonValidatorSystemTestMaterialAssertions<MatchingEntity>(super.getAssertions()); + } + +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithSampleSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithSampleSystemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c70be4e45f5b58f16a0e0b24a62ec914819f6621 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/validator/entity/MatchingEntityValidatorWithSampleSystemTest.java @@ -0,0 +1,67 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.entity; + +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestAssertions; +import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.validator.CommonValidatorSystemTestSampleAssertions; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; + +/** + * @author pkupczyk + */ +public class MatchingEntityValidatorWithSampleSystemTest extends MatchingEntityValidatorSystemTest +{ + + @Override + public Object[] getParams() + { + return getSampleKinds(SampleKind.SHARED_READ); + } + + @Override + protected MatchingEntity createObject(SpacePE spacePE, ProjectPE projectPE, Object param) + { + SamplePE samplePE = getSample(spacePE, projectPE, (SampleKind) param); + + Space space = null; + + if (samplePE.getSpace() != null) + { + space = new Space(); + space.setCode(samplePE.getSpace().getCode()); + } + + MatchingEntity entity = new MatchingEntity(); + entity.setEntityKind(EntityKind.SAMPLE); + entity.setId(samplePE.getId()); + entity.setSpace(space); + + return entity; + } + + @Override + protected CommonValidatorSystemTestAssertions<MatchingEntity> getAssertions() + { + return new CommonValidatorSystemTestSampleAssertions<MatchingEntity>(super.getAssertions()); + } + +} diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/internal/InternalOperationExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/internal/InternalOperationExecutor.java index 140aedf49b54ff23c54ec6f4f92a5d82c80f928d..071e9a6f5e3c25b4ea444c194e190e65f29939a5 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/internal/InternalOperationExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/internal/InternalOperationExecutor.java @@ -61,7 +61,7 @@ public class InternalOperationExecutor implements IInternalOperationExecutor for (RoleAssignmentPE role : roles) { - if (RoleCode.ADMIN.equals(role.getRole()) && role.getSpace() == null) + if (RoleCode.ADMIN.equals(role.getRole()) && role.getRoleWithHierarchy().isInstanceLevel()) { return true; } diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/VocabularyTermAuthorizationExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/VocabularyTermAuthorizationExecutor.java index e49f915b5212dfce3aaae376ddce177647030f06..357f5aa91827ec07b12f2ecfb63afbe29025d416 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/VocabularyTermAuthorizationExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/VocabularyTermAuthorizationExecutor.java @@ -90,7 +90,8 @@ public class VocabularyTermAuthorizationExecutor implements IVocabularyTermAutho for (RoleAssignmentPE role : roles) { - if (RoleCode.ETL_SERVER.equals(role.getRole()) || (RoleCode.ADMIN.equals(role.getRole()) && role.getSpace() == null)) + if (RoleCode.ETL_SERVER.equals(role.getRole()) + || (RoleCode.ADMIN.equals(role.getRole()) && role.getRoleWithHierarchy().isInstanceLevel())) { return true; } @@ -99,7 +100,6 @@ public class VocabularyTermAuthorizationExecutor implements IVocabularyTermAutho return false; } - @Override @DatabaseCreateOrDeleteModification(value = { ObjectKind.VOCABULARY_TERM, ObjectKind.DELETION }) @RolesAllowed({ RoleWithHierarchy.SPACE_POWER_USER, RoleWithHierarchy.SPACE_ETL_SERVER }) diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/globalsearch/GlobalSearchObjectTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/globalsearch/GlobalSearchObjectTranslator.java index c459461c1e64324d2acff9efa780edcbcd1fd367..ad21987b504ed62786efbb57ef7bdbc5fe97f168 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/globalsearch/GlobalSearchObjectTranslator.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/globalsearch/GlobalSearchObjectTranslator.java @@ -81,7 +81,7 @@ public class GlobalSearchObjectTranslator extends AbstractCachingTranslator<Matc { MatchingEntityValidator validator = new MatchingEntityValidator(); validator.init(new AuthorizationDataProvider(daoFactory)); - return validator.doValidation(context.getSession().tryGetPerson(), input); + return validator.isValid(context.getSession().tryGetPerson(), input); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java index 874d6e70df9b68266ee6774e9573b85128b40c8d..ba6b1ba197327c67ea2ec8b6febbc6a37dcafe18 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java @@ -922,7 +922,7 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) @ReturnValueFilter(validatorClass = ExpressionValidator.class) public List<GridCustomColumn> listGridCustomColumns(String sessionToken, String gridId) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index 3c0f02dc3ec50b1275ad360c264283727a17494d..f0477fe893c4c39593acf1ed552df05d2c973714 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -81,6 +81,7 @@ import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.SampleUpd import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.SpaceIdentifierPredicate; import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.SpaceUpdatesPredicate; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.DeletionValidator; +import ch.systemsx.cisd.openbis.generic.server.authorization.validator.EntityHistoryValidator; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ExperimentByIdentiferValidator; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ExpressionValidator; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ExternalDataValidator; @@ -489,8 +490,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt boolean isInstanceAdmin = false; for (final RoleAssignmentPE roleAssigment : personPE.getRoleAssignments()) { - if (roleAssigment.getSpace() == null - && roleAssigment.getRole().equals(RoleCode.ADMIN)) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel() && roleAssigment.getRole().equals(RoleCode.ADMIN)) { isInstanceAdmin = true; } @@ -520,7 +520,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt if (roleAssignment.getPerson() != null && roleAssignment.getPerson().equals(session.tryGetPerson()) && roleAssignment.getRole().equals(RoleCode.ADMIN) - && roleAssignment.getSpace() == null) + && roleAssignment.getRoleWithHierarchy().isInstanceLevel()) { throw new UserFailureException( "For safety reason you cannot give away your own omnipotence. " @@ -575,7 +575,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Map<String, List<IManagedInputWidgetDescription>> listManagedInputWidgetDescriptions( String sessionToken, EntityKind entityKind, String entityTypeCode) { @@ -806,7 +806,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<PropertyType> listPropertyTypes(final String sessionToken, boolean withRelations) { final Session session = getSession(sessionToken); @@ -826,7 +826,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<EntityTypePropertyType<?>> listEntityTypePropertyTypes(final String sessionToken) { List<PropertyType> propertyTypes = listPropertyTypes(sessionToken, true); @@ -834,7 +834,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<EntityTypePropertyType<?>> listEntityTypePropertyTypes(final String sessionToken, final EntityType entityType) { @@ -843,11 +843,17 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) + @ReturnValueFilter(validatorClass = EntityHistoryValidator.class) public List<EntityHistory> listEntityHistory(String sessionToken, EntityKind entityKind, TechId entityID) { Session session = getSession(sessionToken); + + AuthorizationServiceUtils authorizationUtils = + new AuthorizationServiceUtils(getDAOFactory(), session.tryGetPerson().getUserId()); + authorizationUtils.checkAccessEntity(entityKind, entityID); + IEntityHistoryDAO entityPropertyHistoryDAO = getDAOFactory().getEntityPropertyHistoryDAO(); List<AbstractEntityPropertyHistoryPE> result = entityPropertyHistoryDAO.getPropertyHistory( @@ -907,7 +913,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) @ReturnValueFilter(validatorClass = MatchingEntityValidator.class) public List<MatchingEntity> listMatchingEntities(final String sessionToken, final SearchableEntity[] searchableEntities, final String queryText, @@ -1092,7 +1098,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<MaterialType> listMaterialTypes(String sessionToken) { final List<MaterialTypePE> materialTypes = @@ -1102,7 +1108,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public MaterialType getMaterialType(String sessionToken, String code) { final EntityTypePE materialType = findEntityType(EntityKind.MATERIAL, code); @@ -1121,7 +1127,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<DataType> listDataTypes(final String sessionToken) { assert sessionToken != null : "Unspecified session token"; @@ -1140,7 +1146,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<FileFormatType> listFileFormatTypes(String sessionToken) { assert sessionToken != null : "Unspecified session token"; @@ -1160,7 +1166,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Vocabulary> listVocabularies(final String sessionToken, final boolean withTerms, boolean excludeInternal) { @@ -1439,7 +1445,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public int countPropertyTypedEntities(String sessionToken, EntityKind entityKind, String propertyTypeCode, String entityTypeCode) { @@ -1505,7 +1511,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_VOCABULARY_TERM") public void addVocabularyTerms(String sessionToken, TechId vocabularyId, List<VocabularyTerm> vocabularyTerms, Long previousTermOrdinal, @@ -1526,7 +1532,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) @Capability("WRITE_UNOFFICIAL_VOCABULARY_TERM") public void addUnofficialVocabularyTerm(String sessionToken, TechId vocabularyId, String code, String label, String description, Long previousTermOrdinal) @@ -1544,7 +1550,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_VOCABULARY_TERM") public void updateVocabularyTerm(final String sessionToken, final IVocabularyTermUpdates updates) { @@ -1558,7 +1564,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_VOCABULARY_TERM") public void deleteVocabularyTerms(String sessionToken, TechId vocabularyId, List<VocabularyTerm> termsToBeDeleted, List<VocabularyTermReplacement> termsToBeReplaced) @@ -1574,7 +1580,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_VOCABULARY") public void makeVocabularyTermsOfficial(String sessionToken, TechId vocabularyId, List<VocabularyTerm> termsToBeOfficial) @@ -1858,7 +1864,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Material> listMaterials(String sessionToken, ListMaterialCriteria criteria, boolean withProperties) { @@ -1868,7 +1874,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Collection<TechId> listMaterialIdsByMaterialProperties(String sessionToken, Collection<TechId> materialIds) { final Session session = getSession(sessionToken); @@ -1877,7 +1883,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Material> listMetaprojectMaterials(String sessionToken, IMetaprojectId metaprojectId) { final Session session = getSession(sessionToken); @@ -2387,7 +2393,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<VocabularyTermWithStats> listVocabularyTermsWithStatistics(String sessionToken, Vocabulary vocabulary) { @@ -2398,7 +2404,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Set<VocabularyTerm> listVocabularyTerms(String sessionToken, Vocabulary vocabulary) { final Session session = getSession(sessionToken); @@ -2408,7 +2414,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<DataSetType> listDataSetTypes(String sessionToken) { final List<DataSetTypePE> dataSetTypes = listEntityTypes(sessionToken, EntityKind.DATA_SET); @@ -2417,7 +2423,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public LastModificationState getLastModificationState(String sessionToken) { checkSession(sessionToken); @@ -2571,7 +2577,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Material getMaterialInfo(String sessionToken, MaterialIdentifier identifier) { Session session = getSession(sessionToken); @@ -2588,7 +2594,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Material getMaterialInfo(String sessionToken, TechId materialId) { final Session session = getSession(sessionToken); @@ -2604,7 +2610,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public IEntityInformationHolderWithPermId getMaterialInformationHolder(String sessionToken, MaterialIdentifier identifier) { @@ -2675,7 +2681,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public String generateCode(String sessionToken, String prefix, EntityKind entityKind) { checkSession(sessionToken); @@ -2768,7 +2774,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public String getTemplateColumns(String sessionToken, EntityKind entityKind, String type, boolean autoGenerate, boolean withExperiments, boolean withSpace, BatchOperationKind operationKind) @@ -3029,7 +3035,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<DataStore> listDataStores(String sessionToken) { checkSession(sessionToken); @@ -3037,7 +3043,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<DatastoreServiceDescription> listDataStoreServices(String sessionToken, DataStoreServiceKind dataStoreServiceKind) { @@ -3208,7 +3214,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Script> listScripts(String sessionToken, ScriptType scriptTypeOrNull, EntityKind entityKindOrNull) { @@ -3340,7 +3346,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) @ReturnValueFilter(validatorClass = ExpressionValidator.class) public List<GridCustomFilter> listFilters(String sessionToken, String gridId) { @@ -3352,7 +3358,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_FILTER") public void registerFilter(String sessionToken, NewColumnOrFilter filter) { @@ -3361,7 +3367,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("DELETE_FILTER") public void deleteFilters(String sessionToken, @AuthorizationGuard(guardClass = DeleteGridCustomFilterPredicate.class) List<TechId> filterIds) @@ -3371,7 +3377,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_FILTER") public void updateFilter(String sessionToken, @AuthorizationGuard(guardClass = UpdateGridCustomFilterPredicate.class) IExpressionUpdates updates) @@ -3383,7 +3389,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt // -- columns @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_CUSTOM_COLUMN") public void registerGridCustomColumn(String sessionToken, NewColumnOrFilter column) { @@ -3392,7 +3398,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("DELETE_CUSTOM_COLUMN") public void deleteGridCustomColumns(String sessionToken, @AuthorizationGuard(guardClass = DeleteGridCustomColumnPredicate.class) List<TechId> columnIds) @@ -3402,7 +3408,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @Capability("WRITE_CUSTOM_COLUMN") public void updateGridCustomColumn(String sessionToken, @AuthorizationGuard(guardClass = UpdateGridCustomColumnPredicate.class) IExpressionUpdates updates) @@ -3414,7 +3420,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt // -- @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public void keepSessionAlive(String sessionToken) { checkSession(sessionToken); @@ -3480,7 +3486,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Script getScriptInfo(String sessionToken, TechId scriptId) { getSession(sessionToken); @@ -3692,7 +3698,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public void updateManagedPropertyOnMaterial(String sessionToken, TechId materialId, IManagedProperty managedProperty, IManagedUiAction updateAction) { @@ -3748,7 +3754,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public String getDefaultPutDataStoreBaseURL(String sessionToken) { checkSession(sessionToken); @@ -3898,7 +3904,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) @ReturnValueFilter(validatorClass = DeletionValidator.class) public List<Deletion> listDeletions(String sessionToken, boolean withDeletedEntities) { @@ -3909,7 +3915,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) @ReturnValueFilter(validatorClass = DeletionValidator.class) public List<Deletion> listOriginalDeletions(String sessionToken) { @@ -4054,7 +4060,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Material> searchForMaterials(String sessionToken, DetailedSearchCriteria criteria) { final Session session = getSession(sessionToken); @@ -4173,7 +4179,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Metaproject> listMetaprojects(String sessionToken) { Session session = getSession(sessionToken); @@ -4205,7 +4211,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<MetaprojectAssignmentsCount> listMetaprojectAssignmentsCounts(String sessionToken) { List<Metaproject> metaprojects = listMetaprojects(sessionToken); @@ -4221,7 +4227,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public MetaprojectAssignmentsCount getMetaprojectAssignmentsCount(String sessionToken, IMetaprojectId metaprojectId) { @@ -4230,7 +4236,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public MetaprojectAssignments getMetaprojectAssignments(String sessionToken, IMetaprojectId metaprojectId) { @@ -4254,7 +4260,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public MetaprojectAssignments getMetaprojectAssignments(String sessionToken, IMetaprojectId metaprojectId, EnumSet<MetaprojectAssignmentsFetchOption> fetchOptions) { @@ -4344,7 +4350,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public void deleteMetaproject(String sessionToken, IMetaprojectId metaprojectId, String reason) { if (metaprojectId == null) @@ -4363,7 +4369,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public void deleteMetaprojects(String sessionToken, List<IMetaprojectId> metaprojectIds, String reason) { @@ -4393,7 +4399,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Metaproject updateMetaproject(String sessionToken, IMetaprojectId metaprojectId, IMetaprojectUpdates updates) { @@ -4411,7 +4417,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public Metaproject getMetaproject(String sessionToken, IMetaprojectId metaprojectId) { Session session = getSession(sessionToken); @@ -4479,7 +4485,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<String> listPredeployedPlugins(String sessionToken, ScriptType scriptType) { checkSession(sessionToken); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java index c647d18255b51260f1a048909671ed965c1346cb..9de55dcf7abf0c509eec169b2a58034df7f18cfe 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java @@ -1572,7 +1572,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD { for (final RoleAssignmentPE roleAssigment : person.getRoleAssignments()) { - if (roleAssigment.getSpace() == null + if (roleAssigment.getRoleWithHierarchy().isInstanceLevel() && roleAssigment.getRole().equals(RoleCode.ADMIN)) { admins.add(person); @@ -2167,7 +2167,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD boolean isInstanceAdmin = false; for (final RoleAssignmentPE roleAssigment : personPE.getRoleAssignments()) { - if (roleAssigment.getSpace() == null + if (roleAssigment.getRoleWithHierarchy().isInstanceLevel() && roleAssigment.getRole().equals(RoleCode.ADMIN)) { isInstanceAdmin = true; @@ -2668,14 +2668,15 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD } private DataSetKind map(ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind dataSetKind) - { - if (dataSetKind != null) { - return DataSetKind.valueOf(dataSetKind.name()); - } - return null; - } + { + if (dataSetKind != null) + { + return DataSetKind.valueOf(dataSetKind.name()); + } + return null; + } - private void injectSampleId(DataSetCreation creation, NewExternalData newData) + private void injectSampleId(DataSetCreation creation, NewExternalData newData) { SampleIdentifier sampleIdentifier = newData.getSampleIdentifierOrNull(); String permId = newData.getSamplePermIdOrNull(); @@ -2936,7 +2937,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD } @Override - @RolesAllowed(value = { RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) public List<Material> listMaterials(String sessionToken, ListMaterialCriteria criteria, boolean withProperties) { @@ -3118,7 +3119,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD } @Override - @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + @RolesAllowed({ RoleWithHierarchy.PROJECT_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) public List<? extends EntityTypePropertyType<?>> listPropertyDefinitionsForType( String sessionToken, String code, EntityKind entityKind) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java index 7b9f62a92f5b0e7218b6c39c20ed1555d90940f6..a2518b55a524842215dd47f817966abe48fecf45 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java @@ -107,7 +107,7 @@ public class GeneralInformationChangingService extends @Override @Transactional - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @DatabaseCreateOrDeleteModification(value = ObjectKind.VOCABULARY_TERM) public void addUnofficialVocabularyTerm(String sessionToken, TechId vocabularyId, String code, String label, String description, Long previousTermOrdinal) @@ -118,7 +118,7 @@ public class GeneralInformationChangingService extends @Override @Transactional - @RolesAllowed(RoleWithHierarchy.SPACE_POWER_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_POWER_USER) @DatabaseCreateOrDeleteModification(value = ObjectKind.VOCABULARY_TERM) public void addUnofficialVocabularyTerm(String sessionToken, Long vocabularyId, NewVocabularyTerm term) @@ -130,7 +130,7 @@ public class GeneralInformationChangingService extends @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) @SuppressWarnings("deprecation") public WebAppSettings getWebAppSettings(String sessionToken, String webAppId) { @@ -141,7 +141,7 @@ public class GeneralInformationChangingService extends @Override @Transactional(readOnly = false) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public void setWebAppSettings(String sessionToken, WebAppSettings webAppSettings) { try @@ -164,7 +164,7 @@ public class GeneralInformationChangingService extends @Override @Transactional(readOnly = false) - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public Metaproject createMetaproject(String sessionToken, String name, String descriptionOrNull) { Metaproject registration = new Metaproject(); @@ -175,7 +175,7 @@ public class GeneralInformationChangingService extends @Override @Transactional(readOnly = false) - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public Metaproject updateMetaproject(String sessionToken, IMetaprojectId metaprojectId, String name, String descriptionOrNull) { @@ -187,7 +187,7 @@ public class GeneralInformationChangingService extends @Override @Transactional(readOnly = false) - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public void deleteMetaproject(String sessionToken, IMetaprojectId metaprojectId) { server.deleteMetaproject(sessionToken, Translator.translate(metaprojectId), null); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java index 5622a3c78f9eb9037f4c946dc614811f9dcc0aed..41680409840f81763fd6b5fc99633b591785220d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java @@ -631,7 +631,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<DataStore> listDataStores(String sessionToken) { return Translator.translateDataStores(commonServer.listDataStores(sessionToken)); @@ -639,7 +639,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public String getDefaultPutDataStoreBaseURL(String sessionToken) { return commonServer.getDefaultPutDataStoreBaseURL(sessionToken); @@ -647,7 +647,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(value = { RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) public String tryGetDataStoreBaseURL(String sessionToken, String dataSetCode) { Session session = getSession(sessionToken); @@ -664,7 +664,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(value = { RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) + @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER }) public List<DataStoreURLForDataSets> getDataStoreBaseURLs(String sessionToken, List<String> dataSetCodes) { @@ -676,7 +676,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<DataSetType> listDataSetTypes(String sessionToken) { List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType> privateDataSetTypes = @@ -695,7 +695,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<SampleType> listSampleTypes(String sessionToken) { List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType> sampleTypes = @@ -712,7 +712,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.ExperimentType> listExperimentTypes( String sessionToken) { @@ -730,7 +730,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public HashMap<ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary, List<ControlledVocabularyPropertyType.VocabularyTerm>> getVocabularyTermsMap( String sessionToken) { @@ -748,7 +748,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Vocabulary> listVocabularies(String sessionToken) { List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary> privateVocabularies = @@ -1139,7 +1139,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Material> getMaterialByCodes(String sessionToken, List<MaterialIdentifier> materialIdentifier) { @@ -1171,7 +1171,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Material> searchForMaterials(String sessionToken, SearchCriteria searchCriteria) { DetailedSearchCriteria detailedSearchCriteria = @@ -1184,7 +1184,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<Metaproject> listMetaprojects(String sessionToken) { return commonServer.listMetaprojects(sessionToken); @@ -1200,7 +1200,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public MetaprojectAssignments getMetaproject(String sessionToken, IMetaprojectId metaprojectId) { ch.systemsx.cisd.openbis.generic.shared.basic.dto.MetaprojectAssignments assignments = @@ -1296,7 +1296,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public final Map<String, String> getUserDisplaySettings(final String sessionToken) { String spaceCode = null; @@ -1331,7 +1331,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.PropertyType> listPropertyTypes(String sessionToken, boolean withRelations) { HashMap<ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary, List<ControlledVocabularyPropertyType.VocabularyTerm>> vocabTerms = @@ -1350,7 +1350,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) // this is not a readOnly transaction - uses nextVal() public String generateCode(String sessionToken, String prefix, String entityKind) { @@ -1360,7 +1360,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public List<Deletion> listDeletions(String sessionToken, EnumSet<DeletionFetchOption> fetchOptions) { if (fetchOptions != null && fetchOptions.contains(DeletionFetchOption.ALL_ENTITIES)) @@ -1383,7 +1383,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Override @Transactional(readOnly = true) - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public Long countNumberOfSamplesForType(String sessionToken, String sampleTypeCode) { org.hibernate.Session currentSession = this.getDAOFactory().getSessionFactory().getCurrentSession(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationDataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationDataProvider.java index d403691262bac4997542d33c9d7d9ec3a89ab532..ddfd34ec81b3a3a666a21fdd923a0297617c794c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationDataProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationDataProvider.java @@ -53,6 +53,45 @@ final public class AuthorizationDataProvider implements IAuthorizationDataProvid } } + private static final class GroupExperimentMapper implements IMapper<List<ExperimentAccessPE>, List<ExperimentAccessPE>> + { + @Override + public List<ExperimentAccessPE> map(List<ExperimentAccessPE> list) + { + for (ExperimentAccessPE item : list) + { + item.setGroup(true); + } + return list; + } + } + + private static final class GroupSampleMapper implements IMapper<List<SampleAccessPE>, List<SampleAccessPE>> + { + @Override + public List<SampleAccessPE> map(List<SampleAccessPE> list) + { + for (SampleAccessPE item : list) + { + item.setGroup(true); + } + return list; + } + } + + private static final class GroupDataSetMapper implements IMapper<List<DataSetAccessPE>, List<DataSetAccessPE>> + { + @Override + public List<DataSetAccessPE> map(List<DataSetAccessPE> list) + { + for (DataSetAccessPE item : list) + { + item.setGroup(true); + } + return list; + } + } + private final IAuthorizationDAOFactory daoFactory; public AuthorizationDataProvider(IAuthorizationDAOFactory daoFactory) @@ -207,64 +246,64 @@ final public class AuthorizationDataProvider implements IAuthorizationDataProvid } @Override - public Set<DataSetAccessPE> getDatasetCollectionAccessDataByTechIds(final List<TechId> dataSetTechIds) + public Set<DataSetAccessPE> getDatasetCollectionAccessDataByTechIds(final List<TechId> dataSetTechIds, boolean grouped) { return getEntityCollectionAccessData("dataset", DataSetAccessPE.DATASET_ACCESS_BY_TECH_IDS_QUERY_NAME, - DataSetAccessPE.DATA_SET_IDS_PARAMETER_NAME, dataSetTechIds, new TechId2LongMapper()); + DataSetAccessPE.DATA_SET_IDS_PARAMETER_NAME, dataSetTechIds, new TechId2LongMapper(), grouped ? new GroupDataSetMapper() : null); } @Override public Set<DataSetAccessPE> getDatasetCollectionAccessDataByCodes(final List<String> dataSetCodes) { return getEntityCollectionAccessData("dataset", DataSetAccessPE.DATASET_ACCESS_BY_CODES_QUERY_NAME, - DataSetAccessPE.DATA_SET_CODES_PARAMETER_NAME, dataSetCodes, null); + DataSetAccessPE.DATA_SET_CODES_PARAMETER_NAME, dataSetCodes, null, new GroupDataSetMapper()); } @Override public Set<DataSetAccessPE> getDeletedDatasetCollectionAccessData(final List<TechId> deletionIds) { return getEntityCollectionAccessData("deletion", DataSetAccessPE.DELETED_DATASET_ACCESS_QUERY_NAME, - DataSetAccessPE.DELETION_IDS_PARAMETER_NAME, deletionIds, new TechId2LongMapper()); + DataSetAccessPE.DELETION_IDS_PARAMETER_NAME, deletionIds, new TechId2LongMapper(), new GroupDataSetMapper()); } @Override - public Set<SampleAccessPE> getSampleCollectionAccessDataByTechIds(List<TechId> sampleTechIds) + public Set<SampleAccessPE> getSampleCollectionAccessDataByTechIds(List<TechId> sampleTechIds, boolean grouped) { return getEntityCollectionAccessData("sample", SampleAccessPE.SAMPLE_ACCESS_BY_TECH_IDS_QUERY_NAME, - SampleAccessPE.SAMPLE_IDS_PARAMETER_NAME, sampleTechIds, new TechId2LongMapper()); + SampleAccessPE.SAMPLE_IDS_PARAMETER_NAME, sampleTechIds, new TechId2LongMapper(), grouped ? new GroupSampleMapper() : null); } @Override public Set<SampleAccessPE> getSampleCollectionAccessDataByPermIds(List<PermId> samplePermIds) { return getEntityCollectionAccessData("sample", SampleAccessPE.SAMPLE_ACCESS_BY_PERM_IDS_QUERY_NAME, - SampleAccessPE.SAMPLE_IDS_PARAMETER_NAME, samplePermIds, new PermId2StringMapper()); + SampleAccessPE.SAMPLE_IDS_PARAMETER_NAME, samplePermIds, new PermId2StringMapper(), new GroupSampleMapper()); } @Override public Set<SampleAccessPE> getDeletedSampleCollectionAccessData(List<TechId> deletionIds) { return getEntityCollectionAccessData("deletion", SampleAccessPE.DELETED_SAMPLE_ACCESS_QUERY_NAME, - SampleAccessPE.DELETION_IDS_PARAMETER_NAME, deletionIds, new TechId2LongMapper()); + SampleAccessPE.DELETION_IDS_PARAMETER_NAME, deletionIds, new TechId2LongMapper(), new GroupSampleMapper()); } @Override - public Set<ExperimentAccessPE> getExperimentCollectionAccessData(final List<TechId> experimentIds) + public Set<ExperimentAccessPE> getExperimentCollectionAccessData(final List<TechId> experimentIds, boolean grouped) { return getEntityCollectionAccessData("experiment", ExperimentAccessPE.EXPERIMENT_ACCESS_QUERY_NAME, - ExperimentAccessPE.EXPERIMENT_IDS_PARAMETER_NAME, experimentIds, new TechId2LongMapper()); + ExperimentAccessPE.EXPERIMENT_IDS_PARAMETER_NAME, experimentIds, new TechId2LongMapper(), + grouped ? new GroupExperimentMapper() : null); } @Override - public Set<ExperimentAccessPE> getDeletedExperimentCollectionAccessData( - final List<TechId> deletionIds) + public Set<ExperimentAccessPE> getDeletedExperimentCollectionAccessData(final List<TechId> deletionIds) { return getEntityCollectionAccessData("deletion", ExperimentAccessPE.DELETED_EXPERIMENT_ACCESS_QUERY_NAME, - ExperimentAccessPE.DELETION_IDS_PARAMETER_NAME, deletionIds, new TechId2LongMapper()); + ExperimentAccessPE.DELETION_IDS_PARAMETER_NAME, deletionIds, new TechId2LongMapper(), new GroupExperimentMapper()); } private <V, R> Set<R> getEntityCollectionAccessData(String entityName, String queryName, String parameterName, List<V> values, - IMapper<List<V>, List<?>> valuesMapperOrNull) + IMapper<List<V>, List<?>> valuesMapperOrNull, IMapper<List<R>, List<R>> resultMapperOrNull) { Session session = daoFactory.getSessionFactory().getCurrentSession(); final Query query = session.getNamedQuery(queryName); @@ -287,6 +326,12 @@ final public class AuthorizationDataProvider implements IAuthorizationDataProvid query.setParameterList(parameterName, mappedValues); List<R> singleResults = cast(query.list()); + + if (resultMapperOrNull != null) + { + singleResults = resultMapperOrNull.map(singleResults); + } + fullResults.addAll(singleResults); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationServiceUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationServiceUtils.java index 5b37aa63ddd6131a6c6452babecd4a78be4c3950..42b88d83544c9afd3f1cefa8c24a8d988cadcc34 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationServiceUtils.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/AuthorizationServiceUtils.java @@ -32,6 +32,7 @@ import ch.systemsx.cisd.openbis.generic.server.authorization.predicate.SpaceIden import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleLevel; @@ -227,6 +228,38 @@ public class AuthorizationServiceUtils } } + public void checkAccessEntity(EntityKind entityKind, TechId entityId) + { + boolean canAccess; + + if (EntityKind.EXPERIMENT.equals(entityKind)) + { + ExperimentPE experiment = daoFactory.getExperimentDAO().getByTechId(entityId); + canAccess = canAccessExperiment(experiment); + } else if (EntityKind.SAMPLE.equals(entityKind)) + { + SamplePE sample = daoFactory.getSampleDAO().getByTechId(entityId); + canAccess = canAccessSample(sample); + } else if (EntityKind.DATA_SET.equals(entityKind)) + { + DataPE dataSet = daoFactory.getDataDAO().getByTechId(entityId); + canAccess = canAccessDataSet(dataSet); + } else if (EntityKind.MATERIAL.equals(entityKind)) + { + canAccess = true; + } else + { + throw new IllegalArgumentException("Unknown entity kind: " + entityKind); + } + + if (false == canAccess) + { + throw new AuthorizationFailureException("User: " + + (user != null ? user.getUserId() : null) + + " doesn't have access to entity: " + entityKind + " with id: " + entityId); + } + } + public boolean canAccessExperiment(Experiment experiment) { return canAccessExperiment(experiment.getIdentifier()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultAccessController.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultAccessController.java index fdc603fc8ffbc4fd2f94d8d69a83fc40a9ce6fef..4672c35c419ffe47fb328ea35c7c90f3549e20b9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultAccessController.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultAccessController.java @@ -41,7 +41,9 @@ import ch.systemsx.cisd.common.reflection.MethodUtils; import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.AuthorizationGuard; import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.RolesAllowed; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IAuthorizationDAOFactory; +import ch.systemsx.cisd.openbis.generic.shared.authorization.IAuthorizationConfig; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleLevel; import ch.systemsx.cisd.openbis.generic.shared.dto.IAuthSession; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; @@ -81,12 +83,15 @@ public final class DefaultAccessController implements IAccessController private PredicateExecutor predicateExecutor; + private IAuthorizationDAOFactory daoFactory; + public DefaultAccessController(final IAuthorizationDAOFactory daoFactory) { capabilities = new CapabilityMap(new File("etc/capabilities"), daoFactory.getAuthorizationConfig()); predicateExecutor = new PredicateExecutor(); predicateExecutor.setPredicateFactory(new PredicateFactory()); predicateExecutor.setDAOFactory(daoFactory); + this.daoFactory = daoFactory; } public final static List<RoleWithIdentifier> getUserRoles(final PersonPE person) @@ -147,7 +152,9 @@ public final class DefaultAccessController implements IAccessController { Set<RoleWithHierarchy> argumentRoles = getArgumentRoles(method, argument, methodRoles); List<RoleWithIdentifier> relevantRoles = getRelevantRoles(userRoles, argumentRoles); + relevantRoles = retainConfiguredRoles(person.getUserId(), relevantRoles); status = checkNotEmpty(relevantRoles, argumentRoles, session); + if (status.isError()) { break; @@ -160,7 +167,9 @@ public final class DefaultAccessController implements IAccessController } } else { - status = checkNotEmpty(getRelevantRoles(userRoles, methodRoles), methodRoles, session); + List<RoleWithIdentifier> relevantRoles = getRelevantRoles(userRoles, methodRoles); + relevantRoles = retainConfiguredRoles(person.getUserId(), relevantRoles); + status = checkNotEmpty(relevantRoles, methodRoles, session); } return status; } finally @@ -278,6 +287,29 @@ public final class DefaultAccessController implements IAccessController return result; } + private List<RoleWithIdentifier> retainConfiguredRoles(String userId, List<RoleWithIdentifier> roles) + { + IAuthorizationConfig config = daoFactory.getAuthorizationConfig(); + + if (config.isProjectLevelEnabled() && config.isProjectLevelUser(userId)) + { + return roles; + } else + { + List<RoleWithIdentifier> nonProjectRoles = new ArrayList<RoleWithIdentifier>(); + + for (RoleWithIdentifier role : roles) + { + if (false == RoleLevel.PROJECT.equals(role.getRoleLevel())) + { + nonProjectRoles.add(role); + } + } + + return nonProjectRoles; + } + } + /** * Retains {@link RoleWithIdentifier}s with {@link RoleWithIdentifier#getRole()} included in the set of {@link RoleWithHierarchy}s. * diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultReturnValueFilter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultReturnValueFilter.java index 048fc33332771c13b9fdc92eb938c5e3e6707937..6e181ccc72cd88ab059927cbbee2314c97e3686e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultReturnValueFilter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/DefaultReturnValueFilter.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.server.authorization; import java.lang.reflect.Array; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.apache.commons.lang.time.StopWatch; @@ -31,6 +32,7 @@ import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.reflection.MethodUtils; import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.ReturnValueFilter; +import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ICollectionValidator; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.IValidator; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IAuthorizationDAOFactory; import ch.systemsx.cisd.openbis.generic.shared.dto.IAuthSession; @@ -97,6 +99,12 @@ public final class DefaultReturnValueFilter implements IReturnValueFilter return (List<T>) value; } + @SuppressWarnings("unchecked") + private final static <T> Collection<T> castToCollection(final Object value) + { + return (Collection<T>) value; + } + @SuppressWarnings("unchecked") private final static <T> T cast(final Object value) { @@ -195,7 +203,7 @@ public final class DefaultReturnValueFilter implements IReturnValueFilter { throw new IllegalArgumentException(String.format("Given validator class '%s' " + "and list type '%s' are not compatible.", validatorClassName, list.get(0) - .getClass().getName())); + .getClass().getName())); } } else if (returnValueClass.isArray()) { @@ -224,6 +232,19 @@ public final class DefaultReturnValueFilter implements IReturnValueFilter } } + private Object proceedCollection(PersonPE person, Method method, Object returnValue, ICollectionValidator<?> validator) + { + if (returnValue instanceof Collection<?>) + { + return validator.getValid(person, castToCollection(returnValue)); + } else + { + throw new IllegalArgumentException( + String.format("Returned value '%s' is not a collection and cannot be validated by a collection validator '%s'.", + returnValue.getClass(), validator.getClass().getName())); + } + } + // // IReturnValueFilter // @@ -253,8 +274,16 @@ public final class DefaultReturnValueFilter implements IReturnValueFilter ReturnValueFilter.class.getSimpleName())); return returnValueOrNull; } + final IValidator<?> validator = getValidator(annotation); - return proceed(session.tryGetPerson(), method, returnValueOrNull, validator); + + if (validator instanceof ICollectionValidator<?>) + { + return proceedCollection(session.tryGetPerson(), method, returnValueOrNull, (ICollectionValidator<?>) validator); + } else + { + return proceed(session.tryGetPerson(), method, returnValueOrNull, validator); + } } finally { logTimeTaken(stopWatch, method); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/IAuthorizationDataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/IAuthorizationDataProvider.java index 3c5df547081627ec381bc2110b89a7117a9edf91..adc645b7ce2c8fb4ac415b268ad2eb8c02d89bdf 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/IAuthorizationDataProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/IAuthorizationDataProvider.java @@ -153,7 +153,7 @@ public interface IAuthorizationDataProvider /** * Returns the information necessary to determine if a user is allowed to access the data sets. */ - public Set<DataSetAccessPE> getDatasetCollectionAccessDataByTechIds(List<TechId> dataSetIds); + public Set<DataSetAccessPE> getDatasetCollectionAccessDataByTechIds(List<TechId> dataSetIds, boolean grouped); /** * Returns the information necessary to determine if a user is allowed to access the data sets. @@ -163,7 +163,7 @@ public interface IAuthorizationDataProvider /** * Returns the information necessary to determine if a user is allowed to access the samples. */ - public Set<SampleAccessPE> getSampleCollectionAccessDataByTechIds(List<TechId> sampleIds); + public Set<SampleAccessPE> getSampleCollectionAccessDataByTechIds(List<TechId> sampleIds, boolean grouped); /** * Returns the information necessary to determine if a user is allowed to access the samples. @@ -173,7 +173,7 @@ public interface IAuthorizationDataProvider /** * Returns the information necessary to determine if a user is allowed to access the experiments. */ - public Set<ExperimentAccessPE> getExperimentCollectionAccessData(List<TechId> experimentIds); + public Set<ExperimentAccessPE> getExperimentCollectionAccessData(List<TechId> experimentIds, boolean grouped); /** * Returns the information necessary to determine if a user is allowed to delete/revert the data sets. diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/RoleWithIdentifier.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/RoleWithIdentifier.java index 178e0900a8687b7ae52a37936604cf288fc98d5b..706be1d221a9604293cca6431041c278163dc04a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/RoleWithIdentifier.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/RoleWithIdentifier.java @@ -94,27 +94,13 @@ public final class RoleWithIdentifier public final static RoleWithIdentifier createRole(final RoleAssignmentPE roleAssignment) { assert roleAssignment != null : "Unspecified role assignment"; - final RoleLevel roleLevel = figureRoleLevel(roleAssignment); + final RoleLevel roleLevel = roleAssignment.getRoleLevel(); final RoleCode roleName = roleAssignment.getRole(); final SpacePE space = roleAssignment.getSpace(); final ProjectPE project = roleAssignment.getProject(); return new RoleWithIdentifier(roleLevel, roleName, space, project); } - private static RoleLevel figureRoleLevel(final RoleAssignmentPE roleAssignment) - { - if (roleAssignment.getProject() != null) - { - return RoleLevel.PROJECT; - } else if (roleAssignment.getSpace() != null) - { - return RoleLevel.SPACE; - } else - { - return RoleLevel.INSTANCE; - } - } - // // Role // diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/AbstractExpressionPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/AbstractExpressionPredicate.java index 310555c950527e46fd6b8db26da4ecb65580af19..cb7ce427163d0836c95bb7d539119b043c5ff3b1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/AbstractExpressionPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/AbstractExpressionPredicate.java @@ -168,7 +168,7 @@ abstract public class AbstractExpressionPredicate<T> extends AbstractPredicate<T final Set<RoleAssignmentPE> roleAssignments = person.getAllPersonRoles(); for (final RoleAssignmentPE roleAssignment : roleAssignments) { - if (roleAssignment.getSpace() == null) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel()) { return true; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdCollectionPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdCollectionPredicate.java index 82ac118586f9fb74fea4451c0b2f6d7eea51b056..41d4b0b1dbaa946101ef0768836ec3850648f161 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdCollectionPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdCollectionPredicate.java @@ -40,7 +40,7 @@ public class DataSetTechIdCollectionPredicate extends DelegatedPredicate<Collect @Override public Collection<DataSetAccessPE> tryConvert(List<TechId> techIds) { - return authorizationDataProvider.getDatasetCollectionAccessDataByTechIds(techIds); + return authorizationDataProvider.getDatasetCollectionAccessDataByTechIds(techIds, true); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdPredicate.java index db3929ba2824f2982b21a6f11a451291dfa7ed3e..a2570f95abf1b1e8a525d4a9c720e6a590a2dc4c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetTechIdPredicate.java @@ -43,7 +43,7 @@ public class DataSetTechIdPredicate extends DelegatedPredicate<Collection<DataSe return Arrays.asList(); } else { - return authorizationDataProvider.getDatasetCollectionAccessDataByTechIds(Arrays.asList(techId)); + return authorizationDataProvider.getDatasetCollectionAccessDataByTechIds(Arrays.asList(techId), true); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/RevertDeletionPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/RevertDeletionPredicate.java index 9e0034066cb8463b02bfb5ea5780d5ed07d78238..c80e4f2bb16d4a1ca39c92a5af5e24fd02c7e7ee 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/RevertDeletionPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/RevertDeletionPredicate.java @@ -97,7 +97,7 @@ public class RevertDeletionPredicate extends AbstractPredicate<List<TechId>> final Set<RoleAssignmentPE> roleAssignments = person.getAllPersonRoles(); for (final RoleAssignmentPE roleAssignment : roleAssignments) { - if (roleAssignment.getSpace() == null && roleAssignment.getProject() == null && roleAssignment.getRole().equals(RoleCode.ADMIN)) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel() && roleAssignment.getRole().equals(RoleCode.ADMIN)) { return true; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdCollectionPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdCollectionPredicate.java index e9a3afaf45ad79e467327f2b5aa4e46f32a5f824..99c289ce354cf351739f897148c7fb0b9f2a0f46 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdCollectionPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdCollectionPredicate.java @@ -45,7 +45,7 @@ public class SampleTechIdCollectionPredicate extends DelegatedPredicate<Collecti @Override public Collection<SampleAccessPE> tryConvert(List<TechId> techIds) { - return authorizationDataProvider.getSampleCollectionAccessDataByTechIds(techIds); + return authorizationDataProvider.getSampleCollectionAccessDataByTechIds(techIds, true); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdPredicate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdPredicate.java index b550773f6a4bbdfc3bd2276ebb2f40984ad5aa71..ec9e81bfe0100e0e2342fd18046b5d05ff88125b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdPredicate.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleTechIdPredicate.java @@ -69,7 +69,7 @@ public class SampleTechIdPredicate extends AbstractDatabaseInstancePredicate<Tec final TechId techId) { Set<SampleAccessPE> samples = - authorizationDataProvider.getSampleCollectionAccessDataByTechIds(techId != null ? Arrays.asList(techId) : Arrays.asList()); + authorizationDataProvider.getSampleCollectionAccessDataByTechIds(techId != null ? Arrays.asList(techId) : Arrays.asList(), true); return sampleAccessPECollectionPredicate.doEvaluation(person, allowedRoles, samples); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/AbstractCollectionValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/AbstractCollectionValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..ec10eb69103463818871267557150b85746c47e2 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/AbstractCollectionValidator.java @@ -0,0 +1,47 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.server.authorization.validator; + +import java.util.Arrays; +import java.util.Collection; + +import ch.systemsx.cisd.openbis.generic.server.authorization.IAuthorizationDataProvider; +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; + +/** + * @author pkupczyk + */ +public abstract class AbstractCollectionValidator<T> implements ICollectionValidator<T> +{ + + protected IAuthorizationDataProvider authorizationDataProvider; + + @Override + public void init( + @SuppressWarnings("hiding") IAuthorizationDataProvider authorizationDataProvider) + { + this.authorizationDataProvider = authorizationDataProvider; + } + + @Override + public boolean isValid(PersonPE person, T value) + { + Collection<T> valid = getValid(person, Arrays.asList(value)); + return false == valid.isEmpty(); + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DeletionValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DeletionValidator.java index e1e348c22acf65551149f6e5d9141f2927b01022..6668ff5378ffd57fd6f868697ec346a28dd950c4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DeletionValidator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/DeletionValidator.java @@ -184,7 +184,7 @@ public final class DeletionValidator extends AbstractValidator<Deletion> final Set<RoleAssignmentPE> roleAssignments = person.getAllPersonRoles(); for (final RoleAssignmentPE roleAssignment : roleAssignments) { - if (roleAssignment.getSpace() == null && roleAssignment.getProject() == null && roleAssignment.getRole().equals(RoleCode.ADMIN)) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel() && roleAssignment.getRole().equals(RoleCode.ADMIN)) { return true; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/EntityHistoryValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/EntityHistoryValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..b816548e5189bacca561d863377f9d313a1a6c55 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/EntityHistoryValidator.java @@ -0,0 +1,101 @@ +/* + * Copyright 2008 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.server.authorization.validator; + +import ch.systemsx.cisd.openbis.generic.server.authorization.IAuthorizationDataProvider; +import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; + +/** + * @author pkupczyk + */ +public final class EntityHistoryValidator extends AbstractValidator<EntityHistory> +{ + + private final IValidator<Space> spaceValidator; + + private final IValidator<Project> projectValidator; + + private final IValidator<Experiment> experimentValidator; + + private final IValidator<Sample> sampleValidator; + + private final IValidator<AbstractExternalData> dataSetValidator; + + public EntityHistoryValidator() + { + spaceValidator = new SpaceValidator(); + projectValidator = new ProjectValidator(); + experimentValidator = new ExperimentValidator(); + sampleValidator = new SampleValidator(); + dataSetValidator = new ExternalDataValidator(); + } + + @Override + public void init(IAuthorizationDataProvider provider) + { + super.init(provider); + spaceValidator.init(provider); + projectValidator.init(provider); + experimentValidator.init(provider); + sampleValidator.init(provider); + dataSetValidator.init(provider); + } + + @Override + public final boolean doValidation(final PersonPE person, final EntityHistory value) + { + boolean valid = true; + + if (valid && value.tryGetRelatedSpace() != null) + { + valid = valid && spaceValidator.isValid(person, value.tryGetRelatedSpace()); + } + + if (valid && value.tryGetRelatedProject() != null) + { + valid = valid && projectValidator.isValid(person, value.tryGetRelatedProject()); + } + + if (valid && value.tryGetRelatedEntity() != null) + { + IEntityInformationHolderWithIdentifier entity = value.tryGetRelatedEntity(); + + if (entity instanceof Experiment) + { + valid = valid && experimentValidator.isValid(person, (Experiment) entity); + } else if (entity instanceof Sample) + { + valid = valid && sampleValidator.isValid(person, (Sample) entity); + } else if (entity instanceof AbstractExternalData) + { + valid = valid && dataSetValidator.isValid(person, (AbstractExternalData) entity); + } else + { + throw new IllegalArgumentException("Unsupporeted related entity: " + entity.getClass()); + } + } + + return valid; + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/ExpressionValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/ExpressionValidator.java index c4c5be5795fda8517a251e9ade853bae0d627061..432d966ca60c1ba7a3fc360247ec201b51c210d9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/ExpressionValidator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/ExpressionValidator.java @@ -56,7 +56,7 @@ public final class ExpressionValidator extends AbstractValidator<AbstractExpress final Set<RoleAssignmentPE> roleAssignments = person.getAllPersonRoles(); for (final RoleAssignmentPE roleAssignment : roleAssignments) { - if (roleAssignment.getSpace() == null && roleAssignment.getRole().equals(RoleCode.ADMIN)) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel() && roleAssignment.getRole().equals(RoleCode.ADMIN)) { return true; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/ICollectionValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/ICollectionValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..4cfc979884c91f0216539c8fb2f9f6786acdda17 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/ICollectionValidator.java @@ -0,0 +1,37 @@ +/* + * Copyright 2008 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.server.authorization.validator; + +import java.util.Collection; + +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; + +/** + * A validator that allows to validate not only a single object but also a collection of objects at once. When validating a whole collection the + * validator can make some optimizations, e.g. fetch the data needed by the validation only once. + * + * @author pkupczyk + */ +public interface ICollectionValidator<T> extends IValidator<T> +{ + + /** + * Validates given <var>values</var> for a given <var>person</var>. Returns only values that the given person is allowed to see. + */ + public Collection<T> getValid(final PersonPE person, final Collection<T> values); + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/MatchingEntityValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/MatchingEntityValidator.java index cc7ec0ce157b835ac2c399744dc910d5f6982a75..6b6ebe2ee2a6398c6974684d746c27d59fd77046 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/MatchingEntityValidator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/MatchingEntityValidator.java @@ -16,17 +16,39 @@ package ch.systemsx.cisd.openbis.generic.server.authorization.validator; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import ch.systemsx.cisd.openbis.generic.server.authorization.project.IProjectAuthorization; +import ch.systemsx.cisd.openbis.generic.server.authorization.project.ProjectAuthorizationBuilder; +import ch.systemsx.cisd.openbis.generic.server.authorization.project.provider.project.ProjectProviderFromProjectIdentifierObject; +import ch.systemsx.cisd.openbis.generic.server.authorization.project.provider.role.RolesProviderFromPersonPE; +import ch.systemsx.cisd.openbis.generic.server.authorization.project.provider.user.UserProviderFromPersonPE; +import ch.systemsx.cisd.openbis.generic.shared.authorization.IAuthorizationConfig; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetAccessPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentAccessPE; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SampleAccessPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; /** * A {@link IValidator} implementation suitable for {@link MatchingEntity}. * * @author Christian Ribeaud */ -public final class MatchingEntityValidator extends AbstractValidator<MatchingEntity> +public final class MatchingEntityValidator extends AbstractCollectionValidator<MatchingEntity> { + private final IValidator<Space> groupValidator; public MatchingEntityValidator() @@ -34,20 +56,213 @@ public final class MatchingEntityValidator extends AbstractValidator<MatchingEnt groupValidator = new SpaceValidator(); } - // - // AbstractValidator - // - @Override - public boolean doValidation(final PersonPE person, final MatchingEntity entity) + public Collection<MatchingEntity> getValid(PersonPE person, Collection<MatchingEntity> entities) + { + if (isInstanceUser(person)) + { + return entities; + } + + Set<String> spacesWithValidProjects = getSpacesWithValidProjects(person); + + Set<Long> validMaterialIds = new HashSet<Long>(); + Set<Long> validExperimentIds = new HashSet<Long>(); + Set<Long> validSampleIds = new HashSet<Long>(); + Set<Long> validDataSetIds = new HashSet<Long>(); + + Set<Long> potentiallyValidExperimentIds = new HashSet<Long>(); + Set<Long> potentiallyValidSampleIds = new HashSet<Long>(); + Set<Long> potentiallyValidDataSetIds = new HashSet<Long>(); + + for (MatchingEntity entity : entities) + { + if (entity == null) + { + continue; + } + + if (entity.tryGetSpace() == null) + { + if (EntityKind.MATERIAL.equals(entity.getEntityKind())) + { + validMaterialIds.add(entity.getId()); + } else if (EntityKind.SAMPLE.equals(entity.getEntityKind())) + { + validSampleIds.add(entity.getId()); + } + } else + { + boolean valid = groupValidator.isValid(person, entity.tryGetSpace()); + + if (valid) + { + if (EntityKind.EXPERIMENT.equals(entity.getEntityKind())) + { + validExperimentIds.add(entity.getId()); + } else if (EntityKind.SAMPLE.equals(entity.getEntityKind())) + { + validSampleIds.add(entity.getId()); + } else if (EntityKind.DATA_SET.equals(entity.getEntityKind())) + { + validDataSetIds.add(entity.getId()); + } + } else + { + boolean potentiallyValid = spacesWithValidProjects.contains(entity.tryGetSpace().getCode()); + + if (potentiallyValid) + { + if (EntityKind.EXPERIMENT.equals(entity.getEntityKind())) + { + potentiallyValidExperimentIds.add(entity.getId()); + } else if (EntityKind.SAMPLE.equals(entity.getEntityKind())) + { + potentiallyValidSampleIds.add(entity.getId()); + } else if (EntityKind.DATA_SET.equals(entity.getEntityKind())) + { + potentiallyValidDataSetIds.add(entity.getId()); + } + } + } + } + } + + IAuthorizationConfig authorizationConfig = authorizationDataProvider.getAuthorizationConfig(); + + if (authorizationConfig.isProjectLevelEnabled() && authorizationConfig.isProjectLevelUser(person.getUserId())) + { + Map<ProjectIdentifier, Boolean> validatedProjects = new HashMap<ProjectIdentifier, Boolean>(); + + if (false == potentiallyValidExperimentIds.isEmpty()) + { + Set<ExperimentAccessPE> accessDatas = authorizationDataProvider.getExperimentCollectionAccessData( + TechId.createList(new ArrayList<Long>(potentiallyValidExperimentIds)), false); + + for (ExperimentAccessPE accessData : accessDatas) + { + if (isValidProject(person, accessData.getProjectIdentifier(), validatedProjects)) + { + validExperimentIds.add(accessData.getExperimentId()); + } + } + } + + if (false == potentiallyValidSampleIds.isEmpty()) + { + Set<SampleAccessPE> accessDatas = authorizationDataProvider.getSampleCollectionAccessDataByTechIds( + TechId.createList(new ArrayList<Long>(potentiallyValidSampleIds)), false); + + for (SampleAccessPE accessData : accessDatas) + { + if (isValidProject(person, accessData.getProjectIdentifier(), validatedProjects)) + { + validSampleIds.add(accessData.getSampleId()); + } + } + } + + if (false == potentiallyValidDataSetIds.isEmpty()) + { + Set<DataSetAccessPE> accessDatas = authorizationDataProvider.getDatasetCollectionAccessDataByTechIds( + TechId.createList(new ArrayList<Long>(potentiallyValidDataSetIds)), false); + + for (DataSetAccessPE accessData : accessDatas) + { + if (isValidProject(person, accessData.getProjectIdentifier(), validatedProjects)) + { + validDataSetIds.add(accessData.getDataSetId()); + } + } + } + } + + List<MatchingEntity> validEntities = new ArrayList<MatchingEntity>(); + + for (MatchingEntity entity : entities) + { + if (entity != null) + { + boolean valid = false; + + if (EntityKind.MATERIAL.equals(entity.getEntityKind())) + { + valid = validMaterialIds.contains(entity.getId()); + } else if (EntityKind.EXPERIMENT.equals(entity.getEntityKind())) + { + valid = validExperimentIds.contains(entity.getId()); + } else if (EntityKind.SAMPLE.equals(entity.getEntityKind())) + { + valid = validSampleIds.contains(entity.getId()); + } else if (EntityKind.DATA_SET.equals(entity.getEntityKind())) + { + valid = validDataSetIds.contains(entity.getId()); + } + + if (valid) + { + validEntities.add(entity); + } + } + } + + return validEntities; + } + + private boolean isInstanceUser(PersonPE person) { - final Space spaceOrNull = entity.tryGetSpace(); - if (spaceOrNull != null) + for (RoleAssignmentPE role : person.getAllPersonRoles()) { - return groupValidator.isValid(person, spaceOrNull); + if (role.getRoleWithHierarchy().isInstanceLevel()) + { + return true; + } + } + return false; + } + + private Set<String> getSpacesWithValidProjects(PersonPE person) + { + Set<String> spaces = new HashSet<String>(); + + for (RoleAssignmentPE role : person.getAllPersonRoles()) + { + if (role.getProject() != null) + { + spaces.add(role.getProject().getSpace().getCode()); + } + } + + return spaces; + } + + private boolean isValidProject(PersonPE person, ProjectIdentifier project, Map<ProjectIdentifier, Boolean> cache) + { + Boolean valid = cache.get(project); + + if (valid != null) + { + return valid; } else { - return true; + if (project == null) + { + valid = false; + } else + { + IProjectAuthorization<ProjectIdentifier> pa = new ProjectAuthorizationBuilder<ProjectIdentifier>() + .withData(authorizationDataProvider) + .withUser(new UserProviderFromPersonPE(person)) + .withRoles(new RolesProviderFromPersonPE(person)) + .withObjects(new ProjectProviderFromProjectIdentifierObject(project)) + .build(); + valid = pa.getObjectsWithoutAccess().isEmpty(); + } + + cache.put(project, valid); + + return valid; } } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SimpleSpaceValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SimpleSpaceValidator.java index cd1faf529788a80ece23872aaee50a11af216de7..83b30d4a333406e5466e1a8c106393b02c9e4b55 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SimpleSpaceValidator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SimpleSpaceValidator.java @@ -20,7 +20,6 @@ import java.util.Set; import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; @@ -41,14 +40,13 @@ public class SimpleSpaceValidator extends AbstractValidator<ICodeHolder> } for (final RoleAssignmentPE roleAssignment : roleAssignments) { - final SpacePE space = roleAssignment.getSpace(); - final ProjectPE project = roleAssignment.getProject(); - - if (space == null && project == null) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel()) { return true; } + final SpacePE space = roleAssignment.getSpace(); + if (space != null && space.getCode().equals(spaceCode)) { return true; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SpaceValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SpaceValidator.java index 595760d1071a3a8434c5975eef72b3531154aef4..9a6856fa2ba5242390600e37cd3b5ac50f4eb2b5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SpaceValidator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SpaceValidator.java @@ -20,7 +20,6 @@ import java.util.Set; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; @@ -42,14 +41,13 @@ public final class SpaceValidator extends AbstractValidator<Space> final Set<RoleAssignmentPE> roleAssignments = person.getAllPersonRoles(); for (final RoleAssignmentPE roleAssignment : roleAssignments) { - final SpacePE group = roleAssignment.getSpace(); - final ProjectPE project = roleAssignment.getProject(); - - if (group == null && project == null) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel()) { return true; } + final SpacePE group = roleAssignment.getSpace(); + if (group != null && group.getCode().equals(value.getCode())) { return true; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetAccessPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetAccessPE.java index 8d432b291162f959b8c9e580142a90509af5d03c..e1121c1c4b94ac4b97991af098d964148df79b27 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetAccessPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetAccessPE.java @@ -45,7 +45,7 @@ public class DataSetAccessPE { private final static String DATASET_ACCESS_QUERY_PART_1 = - "SELECT d.code as dataSetCode, ep.code as experimentProjectCode, es.code as experimentSpaceCode, ss.code as sampleSpaceCode, " + "SELECT d.id as dataSetId, d.code as dataSetCode, ep.code as experimentProjectCode, es.code as experimentSpaceCode, ss.code as sampleSpaceCode, " + "sep.code as sampleExperimentProjectCode, ses.code as sampleExperimentSpaceCode, " + "sp.code as sampleProjectCode, sps.code as sampleProjectSpaceCode " + "FROM "; @@ -95,6 +95,8 @@ public class DataSetAccessPE public final static String RESULT_SET_MAPPING = "dataset_access_implicit"; + private Long dataSetId; + private String dataSetCode; private String experimentProjectCode; @@ -111,6 +113,8 @@ public class DataSetAccessPE private String sampleProjectSpaceCode; + private boolean group; + /** * A factory method that should only be used for testing. */ @@ -162,6 +166,16 @@ public class DataSetAccessPE } @Id + public Long getDataSetId() + { + return dataSetId; + } + + public void setDataSetId(Long dataSetId) + { + this.dataSetId = dataSetId; + } + public String getDataSetCode() { return dataSetCode; @@ -242,6 +256,17 @@ public class DataSetAccessPE this.sampleProjectSpaceCode = sampleProjectSpaceCode; } + public void setGroup(boolean group) + { + this.group = group; + } + + @Transient + public boolean isGroup() + { + return group; + } + // // Object // @@ -257,16 +282,25 @@ public class DataSetAccessPE { return false; } + final DataSetAccessPE that = (DataSetAccessPE) obj; final EqualsBuilder builder = new EqualsBuilder(); - builder.append(getDataSetCode(), that.getDataSetCode()); - builder.append(getExperimentProjectCode(), that.getExperimentProjectCode()); - builder.append(getExperimentSpaceCode(), that.getExperimentSpaceCode()); - builder.append(getSampleSpaceCode(), that.getSampleSpaceCode()); - builder.append(getSampleExperimentProjectCode(), that.getSampleExperimentProjectCode()); - builder.append(getSampleExperimentSpaceCode(), that.getSampleExperimentSpaceCode()); - builder.append(getSampleProjectCode(), that.getSampleProjectCode()); - builder.append(getSampleProjectSpaceCode(), that.getSampleProjectSpaceCode()); + + if (isGroup()) + { + builder.append(getDataSetCode(), that.getDataSetCode()); + builder.append(getExperimentProjectCode(), that.getExperimentProjectCode()); + builder.append(getExperimentSpaceCode(), that.getExperimentSpaceCode()); + builder.append(getSampleSpaceCode(), that.getSampleSpaceCode()); + builder.append(getSampleExperimentProjectCode(), that.getSampleExperimentProjectCode()); + builder.append(getSampleExperimentSpaceCode(), that.getSampleExperimentSpaceCode()); + builder.append(getSampleProjectCode(), that.getSampleProjectCode()); + builder.append(getSampleProjectSpaceCode(), that.getSampleProjectSpaceCode()); + } else + { + builder.append(getDataSetId(), that.getDataSetId()); + } + return builder.isEquals(); } @@ -274,14 +308,23 @@ public class DataSetAccessPE public int hashCode() { final HashCodeBuilder builder = new HashCodeBuilder(); - builder.append(getDataSetCode()); - builder.append(getExperimentProjectCode()); - builder.append(getExperimentSpaceCode()); - builder.append(getSampleSpaceCode()); - builder.append(getSampleExperimentProjectCode()); - builder.append(getSampleExperimentSpaceCode()); - builder.append(getSampleProjectCode()); - builder.append(getSampleProjectSpaceCode()); + + if (isGroup()) + { + builder.append(getDataSetCode()); + builder.append(getExperimentProjectCode()); + builder.append(getExperimentSpaceCode()); + builder.append(getSampleSpaceCode()); + builder.append(getSampleExperimentProjectCode()); + builder.append(getSampleExperimentSpaceCode()); + builder.append(getSampleProjectCode()); + builder.append(getSampleProjectSpaceCode()); + } else + { + builder.append(getDataSetId()); + } + return builder.toHashCode(); } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentAccessPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentAccessPE.java index b4bc7016bf995f635527b19ca9296f5c3feea391..c9091de2cd22ff10d723d9ed58b350cb61ae42e3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentAccessPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentAccessPE.java @@ -22,10 +22,13 @@ import javax.persistence.Id; import javax.persistence.NamedNativeQueries; import javax.persistence.NamedNativeQuery; import javax.persistence.SqlResultSetMapping; +import javax.persistence.Transient; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; + /** * @author Pawel Glyzewski */ @@ -39,7 +42,7 @@ public class ExperimentAccessPE { public final static String EXPERIMENT_ACCESS_QUERY = - "SELECT s.code as spaceCode, p.code as projectCode, e.code as experimentCode " + "SELECT s.code as spaceCode, p.code as projectCode, e.code as experimentCode, e.id as experimentId " + "FROM " + TableNames.EXPERIMENTS_VIEW + " e inner join " @@ -50,7 +53,7 @@ public class ExperimentAccessPE + "WHERE e.id in (:ids)"; public final static String DELETED_EXPERIMENT_ACCESS_QUERY = - "SELECT s.code as spaceCode, p.code as projectCode, e.code as experimentCode " + "SELECT s.code as spaceCode, p.code as projectCode, e.code as experimentCode, e.id as experimentId " + "FROM " + TableNames.DELETED_EXPERIMENTS_VIEW + " e inner join " @@ -66,6 +69,10 @@ public class ExperimentAccessPE private String experimentCode; + private Long experimentId; + + private boolean group; + public final static String EXPERIMENT_ACCESS_QUERY_NAME = "experiment_access"; public final static String DELETED_EXPERIMENT_ACCESS_QUERY_NAME = "deleted_experiment_access"; @@ -81,7 +88,6 @@ public class ExperimentAccessPE this.spaceCode = spaceCode; } - @Id public String getSpaceCode() { return spaceCode; @@ -92,6 +98,18 @@ public class ExperimentAccessPE this.projectCode = projectCode; } + @Transient + public ProjectIdentifier getProjectIdentifier() + { + if (getSpaceCode() != null && getProjectCode() != null) + { + return new ProjectIdentifier(getSpaceCode(), getProjectCode()); + } else + { + return null; + } + } + public String getProjectCode() { return projectCode; @@ -107,6 +125,28 @@ public class ExperimentAccessPE return experimentCode; } + public void setExperimentId(Long experimentId) + { + this.experimentId = experimentId; + } + + @Id + public Long getExperimentId() + { + return experimentId; + } + + public void setGroup(boolean group) + { + this.group = group; + } + + @Transient + public boolean isGroup() + { + return group; + } + // // Object // @@ -122,11 +162,20 @@ public class ExperimentAccessPE { return false; } + final ExperimentAccessPE that = (ExperimentAccessPE) obj; final EqualsBuilder builder = new EqualsBuilder(); - builder.append(getSpaceCode(), that.getSpaceCode()); - builder.append(getProjectCode(), that.getProjectCode()); - builder.append(getExperimentCode(), that.getExperimentCode()); + + if (isGroup()) + { + builder.append(getSpaceCode(), that.getSpaceCode()); + builder.append(getProjectCode(), that.getProjectCode()); + builder.append(getExperimentCode(), that.getExperimentCode()); + } else + { + builder.append(getExperimentId(), that.getExperimentId()); + } + return builder.isEquals(); } @@ -134,9 +183,17 @@ public class ExperimentAccessPE public int hashCode() { final HashCodeBuilder builder = new HashCodeBuilder(); - builder.append(getSpaceCode()); - builder.append(getProjectCode()); - builder.append(getExperimentCode()); + + if (isGroup()) + { + builder.append(getSpaceCode()); + builder.append(getProjectCode()); + builder.append(getExperimentCode()); + } else + { + builder.append(getExperimentId()); + } + return builder.toHashCode(); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/RoleAssignmentPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/RoleAssignmentPE.java index d4947a352ea7fa09a6ff678bf871dbab0e584af5..a64678c41c47dd74a5614741884a47e8cc99fa1e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/RoleAssignmentPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/RoleAssignmentPE.java @@ -42,7 +42,9 @@ import ch.rinn.restrictions.Private; import ch.systemsx.cisd.common.reflection.ModifiedShortPrefixToStringStyle; import ch.systemsx.cisd.openbis.generic.shared.IServer; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleLevel; import ch.systemsx.cisd.openbis.generic.shared.util.EqualsHashUtils; /** @@ -172,6 +174,27 @@ public final class RoleAssignmentPE extends HibernateAbstractRegistrationHolder return id; } + @Transient + public RoleLevel getRoleLevel() + { + if (getProject() != null) + { + return RoleLevel.PROJECT; + } else if (getSpace() != null) + { + return RoleLevel.SPACE; + } else + { + return RoleLevel.INSTANCE; + } + } + + @Transient + public RoleWithHierarchy getRoleWithHierarchy() + { + return RoleWithHierarchy.valueOf(getRoleLevel(), getRole()); + } + // // Object // diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleAccessPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleAccessPE.java index f7b6b3346bac0f750842d6ff73276dd8342324d8..9c442a2203a23140ca0e1ba4fdb5979efa9661f3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleAccessPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleAccessPE.java @@ -16,17 +16,20 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; -import javax.persistence.Id; import javax.persistence.Entity; import javax.persistence.EntityResult; +import javax.persistence.Id; import javax.persistence.NamedNativeQueries; import javax.persistence.NamedNativeQuery; import javax.persistence.SqlResultSetMapping; +import javax.persistence.Transient; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; + /** * A PE for retrieving only the information necessary to determine if a user/person can access a sample. * @@ -42,7 +45,7 @@ public class SampleAccessPE { private final static String SAMPLE_ACCESS_QUERY_PART_1 = - "SELECT g.code as spaceCode, p.code as projectCode, ep.code as experimentProjectCode, e.code as experimentCode, s.code as sampleCode, c.code as containerCode FROM "; + "SELECT g.code as spaceCode, p.code as projectCode, ep.code as experimentProjectCode, e.code as experimentCode, s.code as sampleCode, s.id as sampleId, c.code as containerCode FROM "; private final static String SAMPLE_ACCESS_QUERY_PART_2 = " s left outer join " + TableNames.SPACES_TABLE @@ -85,10 +88,14 @@ public class SampleAccessPE private String experimentCode; + private Long sampleId; + private String sampleCode; private String containerCode; + private boolean group; + public String getSpaceCode() { return spaceCode; @@ -99,6 +106,23 @@ public class SampleAccessPE this.spaceCode = spaceCode; } + @Transient + public ProjectIdentifier getProjectIdentifier() + { + if (getSpaceCode() != null) + { + if (getProjectCode() != null) + { + return new ProjectIdentifier(getSpaceCode(), getProjectCode()); + } else if (getExperimentProjectCode() != null) + { + return new ProjectIdentifier(getSpaceCode(), getExperimentProjectCode()); + } + } + + return null; + } + public String getProjectCode() { return projectCode; @@ -129,7 +153,17 @@ public class SampleAccessPE this.experimentCode = experimentCode; } + public void setSampleId(Long sampleId) + { + this.sampleId = sampleId; + } + @Id + public Long getSampleId() + { + return sampleId; + } + public String getSampleCode() { return sampleCode; @@ -150,6 +184,17 @@ public class SampleAccessPE this.containerCode = containerCode; } + public void setGroup(boolean group) + { + this.group = group; + } + + @Transient + public boolean isGroup() + { + return group; + } + // // Object // @@ -165,14 +210,23 @@ public class SampleAccessPE { return false; } + final SampleAccessPE that = (SampleAccessPE) obj; final EqualsBuilder builder = new EqualsBuilder(); - builder.append(getSpaceCode(), that.getSpaceCode()); - builder.append(getProjectCode(), that.getProjectCode()); - builder.append(getExperimentProjectCode(), that.getExperimentProjectCode()); - builder.append(getExperimentCode(), that.getExperimentCode()); - builder.append(getSampleCode(), that.getSampleCode()); - builder.append(getContainerCode(), that.getContainerCode()); + + if (isGroup()) + { + builder.append(getSpaceCode(), that.getSpaceCode()); + builder.append(getProjectCode(), that.getProjectCode()); + builder.append(getExperimentProjectCode(), that.getExperimentProjectCode()); + builder.append(getExperimentCode(), that.getExperimentCode()); + builder.append(getSampleCode(), that.getSampleCode()); + builder.append(getContainerCode(), that.getContainerCode()); + } else + { + builder.append(getSampleId(), that.getSampleId()); + } + return builder.isEquals(); } @@ -180,12 +234,20 @@ public class SampleAccessPE public int hashCode() { final HashCodeBuilder builder = new HashCodeBuilder(); - builder.append(getSpaceCode()); - builder.append(getProjectCode()); - builder.append(getExperimentProjectCode()); - builder.append(getExperimentCode()); - builder.append(getSampleCode()); - builder.append(getContainerCode()); + + if (isGroup()) + { + builder.append(getSpaceCode()); + builder.append(getProjectCode()); + builder.append(getExperimentProjectCode()); + builder.append(getExperimentCode()); + builder.append(getSampleCode()); + builder.append(getContainerCode()); + } else + { + builder.append(getSampleId()); + } + return builder.toHashCode(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PersonRolesTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PersonRolesTranslator.java index 5dc3b83a6d45d2e1e267a994317d4dd103c598be..36c84e56592ce032f401d7a6c0f04387ddb18a60 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PersonRolesTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PersonRolesTranslator.java @@ -22,8 +22,6 @@ import java.util.List; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PersonRole; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PersonRoles; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleLevel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; @@ -64,18 +62,8 @@ public class PersonRolesTranslator return null; } - RoleWithHierarchy role; - - if (roleAssignment.getSpace() == null) - { - role = RoleWithHierarchy.valueOf(RoleLevel.INSTANCE, roleAssignment.getRole()); - } else - { - role = RoleWithHierarchy.valueOf(RoleLevel.SPACE, roleAssignment.getRole()); - } - Space space = SpaceTranslator.translate(roleAssignment.getSpace()); - return new PersonRole(role, space); + return new PersonRole(roleAssignment.getRoleWithHierarchy(), space); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/RoleAssignmentTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/RoleAssignmentTranslator.java index d00d62ce5a63b51d889018dc9334fef4255a0544..b37cc440229822327e87cbcf52907740ad439f12 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/RoleAssignmentTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/RoleAssignmentTranslator.java @@ -20,8 +20,6 @@ import java.util.ArrayList; import java.util.List; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleAssignment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleLevel; import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE; /** @@ -57,23 +55,8 @@ public final class RoleAssignmentTranslator result.setPerson(PersonTranslator.translate(role.getPerson())); result.setAuthorizationGroup(AuthorizationGroupTranslator.translate(role .getAuthorizationGroup())); - result.setRoleSetCode(getRoleCode(role)); + result.setRoleSetCode(role.getRoleWithHierarchy()); return result; } - private final static RoleWithHierarchy getRoleCode(final RoleAssignmentPE role) - { - RoleLevel roleLevel = null; - if (role.getSpace() != null) - { - roleLevel = RoleLevel.SPACE; - } else if (role.getProject() != null) - { - roleLevel = RoleLevel.PROJECT; - } else - { - roleLevel = RoleLevel.INSTANCE; - } - return RoleWithHierarchy.valueOf(roleLevel, role.getRole()); - } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/server/DemoServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/server/DemoServer.java index 94b6dc139ff54fd5bc461c26ab2935fb115a70b5..ad47705e69d5cf3863f457ce652df05e69ee6725 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/server/DemoServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/server/DemoServer.java @@ -112,7 +112,7 @@ public final class DemoServer extends AbstractServer<IDemoServer> implements IDe } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public SampleParentWithDerived getSampleInfo(final String sessionToken, @AuthorizationGuard(guardClass = SampleTechIdPredicate.class) final TechId sampleId) throws UserFailureException @@ -137,7 +137,7 @@ public final class DemoServer extends AbstractServer<IDemoServer> implements IDe } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_USER) + @RolesAllowed(RoleWithHierarchy.PROJECT_USER) public void registerSample(final String sessionToken, @AuthorizationGuard(guardClass = NewSamplePredicate.class) final NewSample newSample, final Collection<NewAttachment> attachments) @@ -146,7 +146,7 @@ public final class DemoServer extends AbstractServer<IDemoServer> implements IDe } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public int getNumberOfExperiments(String sessionToken) { return getDAOFactory().getExperimentDAO().listExperiments().size(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java index a1187e88b84c45cddc5b24f9834bec33b1212a02..b3594354347a22213553e6cfe5fd5f88bcea1366 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java @@ -764,7 +764,7 @@ public final class GenericServer extends AbstractServer<IGenericServerInternal> } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<String> generateCodes(String sessionToken, String prefix, ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind entityKind, int number) { @@ -773,7 +773,7 @@ public final class GenericServer extends AbstractServer<IGenericServerInternal> } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<String> generateTemporaryCodes(String sessionToken, String prefix, ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind entityKind, int number) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java index 34d45129701995d7c84cbf3d95a7888395ba785e..3c8c4288015c6f793535e4d7dfc522fb5914bed9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java @@ -102,7 +102,7 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public int initDatabases(String sessionToken) { checkSession(sessionToken); @@ -111,7 +111,7 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS } @Override - @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER) public List<QueryDatabase> listQueryDatabases(String sessionToken) { checkSession(sessionToken); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java index 7e07a2a2ccd8df4421ce8fb8b78ae6162411a137..dc12ebbc2bd4ca38e6047227cf60471686f41779 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java @@ -88,6 +88,8 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.SemanticAnnotation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.create.TagCreation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.VocabularyTerm; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyTermPermId; import ch.ethz.sis.openbis.generic.asapi.v3.exceptions.NotFetchedException; @@ -103,7 +105,6 @@ import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.logging.BufferedAppender; import ch.systemsx.cisd.common.test.AssertionUtil; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; @@ -111,6 +112,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.Id; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; +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.SamplePE; import ch.systemsx.cisd.openbis.systemtest.SystemTestCase; import ch.systemsx.cisd.openbis.util.LogRecordingUtils; @@ -139,9 +142,6 @@ public class AbstractTest extends SystemTestCase @Autowired protected IGeneralInformationService generalInformationService; - @Autowired - protected IDAOFactory daoFactory; - @BeforeClass public void beforeClass() { @@ -680,7 +680,7 @@ public class AbstractTest extends SystemTestCase assertExceptionContext(e, expectedContextPattern); } } - + protected void assertAnyAuthorizationException(IDelegatedAction action) { try @@ -691,7 +691,7 @@ public class AbstractTest extends SystemTestCase { // Then Throwable cause = e.getCause(); - if (cause instanceof AuthorizationFailureException == false + if (cause instanceof AuthorizationFailureException == false && cause instanceof UnauthorizedObjectAccessException == false) { throw e; @@ -1304,4 +1304,18 @@ public class AbstractTest extends SystemTestCase return fo; } + protected TagPermId createTag(String owner, TagCreation creation) + { + PersonPE person = daoFactory.getPersonDAO().tryFindPersonByUserId(owner); + + MetaprojectPE tag = new MetaprojectPE(); + tag.setName(creation.getCode()); + tag.setDescription(creation.getDescription()); + tag.setOwner(person); + + daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(tag, person); + + return new TagPermId(owner, creation.getCode()); + } + } diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateDataSetTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateDataSetTest.java index 213e76c739e4213f81555e0b5891aba6441da566..a0433860a59ba46665a51fbbd1719ce1b536f4c5 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateDataSetTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateDataSetTest.java @@ -83,7 +83,7 @@ public class CreateDataSetTest extends AbstractDataSetTest @Test public void testCreateLinkDataSetWithSpaceUser() { - // given + // given String sessionToken = v3api.login(TEST_SPACE_USER, PASSWORD); String code = UUID.randomUUID().toString(); LinkedDataCreation linkedData = new LinkedDataCreation(); @@ -107,17 +107,17 @@ public class CreateDataSetTest extends AbstractDataSetTest assertDataSetKind(sessionToken, dataSetIds, DataSetKind.LINK); } - private void assertDataSetKind(String sessionToken, List<DataSetPermId> dataSetIds, DataSetKind kind) - { - Map<IDataSetId, DataSet> dataSets = v3api.getDataSets(sessionToken, dataSetIds, new DataSetFetchOptions()); + private void assertDataSetKind(String sessionToken, List<DataSetPermId> dataSetIds, DataSetKind kind) + { + Map<IDataSetId, DataSet> dataSets = v3api.getDataSets(sessionToken, dataSetIds, new DataSetFetchOptions()); assertEquals(dataSets.size(), 1); assertEquals(dataSets.get(dataSetIds.get(0)).getKind(), kind); - } + } @Test public void testCreateContainerDataSetWithSpaceUser() { - // given + // given String sessionToken = v3api.login(TEST_SPACE_USER, PASSWORD); String code = UUID.randomUUID().toString(); DataSetCreation creation = new DataSetCreation(); @@ -140,7 +140,7 @@ public class CreateDataSetTest extends AbstractDataSetTest @Test public void testDataSetWhichDefaultsToPhysical() { - // given + // given String sessionToken = v3api.login(TEST_USER, PASSWORD); DataSetCreation creation = physicalDataSetCreation(); creation.setDataSetKind(null); @@ -153,7 +153,7 @@ public class CreateDataSetTest extends AbstractDataSetTest assertEquals(dataSetIds.get(0).getPermId(), creation.getCode().toUpperCase()); assertDataSetKind(sessionToken, dataSetIds, DataSetKind.PHYSICAL); } - + @Test public void testCreateDSWithAdminUserInBehalfOfASpaceObserver() { @@ -1837,7 +1837,17 @@ public class CreateDataSetTest extends AbstractDataSetTest DataSetCreation creation = physicalDataSetCreation(); creation.setExperimentId(new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.createDataSets(sessionToken, Collections.singletonList(creation)); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { List<DataSetPermId> permIds = v3api.createDataSets(sessionToken, Collections.singletonList(creation)); assertEquals(permIds.size(), 1); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java index 5b6a437cc5331070022f44b44c7d1c22fc68e27f..7e8da970568533cf598d81eba2f264cdaaa59384 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateExperimentTest.java @@ -511,7 +511,17 @@ public class CreateExperimentTest extends AbstractExperimentTest String sessionToken = v3api.login(user.getUserId(), PASSWORD); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.createExperiments(sessionToken, Collections.singletonList(creation)); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { List<ExperimentPermId> permIds = v3api.createExperiments(sessionToken, Collections.singletonList(creation)); assertEquals(permIds.size(), 1); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateProjectTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateProjectTest.java index 169c2bcc0c2fa353d05c88b0fbc882f92057c80a..4248f2929c886beb1e0822949c25add9da1985d9 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateProjectTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateProjectTest.java @@ -179,7 +179,7 @@ public class CreateProjectTest extends AbstractTest { List<ProjectPermId> permIds = v3api.createProjects(sessionToken, Collections.singletonList(project)); assertEquals(permIds.size(), 1); - } else if (user.isTestProjectUser()) + } else if (user.isProjectUser()) { assertAuthorizationFailureException(new IDelegatedAction() { diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java index 36cc9ca7bb5d343a79c40332307fb008d08300fb..35ef3012763d55dbf3718fe16e730757d28e0942 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java @@ -1204,7 +1204,17 @@ public class CreateSampleTest extends AbstractSampleTest creation.setSpaceId(new SpacePermId("TEST-SPACE")); creation.setExperimentId(new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.createSamples(sessionToken, Collections.singletonList(creation)); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { List<SamplePermId> permIds = v3api.createSamples(sessionToken, Collections.singletonList(creation)); assertEquals(permIds.size(), 1); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateTagTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateTagTest.java index 92dedc9f7a5c2d52263dfc3001d78dacb82619cf..266dd446756d257020530a9fa91e20ff9d353371 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateTagTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateTagTest.java @@ -32,6 +32,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.create.TagCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.fetchoptions.TagFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.ITagId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagCode; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; import ch.ethz.sis.openbis.systemtest.asapi.v3.index.ReindexingState; import ch.systemsx.cisd.common.action.IDelegatedAction; @@ -329,8 +330,21 @@ public class CreateTagTest extends AbstractTest creation.setCode("TEST_TAG"); creation.setDescription("test description"); - Tag tag = createTag(user.getUserId(), PASSWORD, creation); - assertEquals(tag.getCode(), creation.getCode()); + if (user.isDisabledProjectUser()) + { + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + createTag(user.getUserId(), PASSWORD, creation); + } + }, new TagCode(creation.getCode())); + } else + { + Tag tag = createTag(user.getUserId(), PASSWORD, creation); + assertEquals(tag.getCode(), creation.getCode()); + } } private Tag createTag(String user, String password, TagCreation creation) diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteDataSetTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteDataSetTest.java index 52ea9cbb31a878cd524797c2488997cbeb497fda..8cea12c4e66d12aacd83c7e31c025d081a4240ba 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteDataSetTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteDataSetTest.java @@ -146,7 +146,17 @@ public class DeleteDataSetTest extends AbstractDeletionTest IDataSetId dataSetId = new DataSetPermId("20120628092259000-41"); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.deleteDataSets(sessionToken, Arrays.asList(dataSetId), getOptions()); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { v3api.deleteDataSets(sessionToken, Arrays.asList(dataSetId), getOptions()); } else diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteExperimentTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteExperimentTest.java index 0f583421918fbfc5af88d559cc2b24af80c4d7c6..f621a87bc67c271bacdbd59b10aa2363f5e4dd41 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteExperimentTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteExperimentTest.java @@ -208,7 +208,17 @@ public class DeleteExperimentTest extends AbstractDeletionTest assertExperimentExists(permIds.get(0)); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.deleteExperiments(sessionToken, permIds, options); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { IDeletionId deletionId = v3api.deleteExperiments(sessionToken, permIds, options); Assert.assertNotNull(deletionId); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteProjectTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteProjectTest.java index ef6892a1d266014b887a0523d1a8449b47aee33a..3402d6bf3b066f8c400b7beeb80868a419ae4f5f 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteProjectTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteProjectTest.java @@ -145,7 +145,17 @@ public class DeleteProjectTest extends AbstractDeletionTest assertProjectExists(permIds.get(0)); - if (user.isInstanceUser() || user.isTestSpaceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.deleteProjects(sessionToken, permIds, options); + } + }); + } else if (user.isInstanceUser() || user.isTestSpaceUser()) { v3api.deleteProjects(sessionToken, permIds, options); assertProjectDoesNotExist(permIds.get(0)); @@ -153,6 +163,7 @@ public class DeleteProjectTest extends AbstractDeletionTest { assertUnauthorizedObjectAccessException(new IDelegatedAction() { + @Override public void execute() { diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteSampleTest.java index 01e257db5c010f9a2b16eefbe03aaebed387f100..f370a37234981271ef61a5a6b8e1c67f76de0cc0 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteSampleTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteSampleTest.java @@ -232,7 +232,17 @@ public class DeleteSampleTest extends AbstractDeletionTest SampleDeletionOptions options = new SampleDeletionOptions(); options.setReason("It is just a test"); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.deleteSamples(sessionToken, Arrays.asList(sampleId), options); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { v3api.deleteSamples(sessionToken, Arrays.asList(sampleId), options); } else diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteTagTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteTagTest.java index cb584f2710fd09d5c7d0c5310a84d430a1af749a..ceadde68e38ee400d43a48f627daadb13b0200ca 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteTagTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteTagTest.java @@ -178,12 +178,25 @@ public class DeleteTagTest extends AbstractDeletionTest TagCreation creation = new TagCreation(); creation.setCode("TAG_TO_DELETE"); - final Tag before = createTag(user.getUserId(), PASSWORD, creation); + final TagPermId tagId = createTag(user.getUserId(), creation); final TagDeletionOptions options = new TagDeletionOptions(); options.setReason("It is just a test"); - deleteTag(user.getUserId(), PASSWORD, before.getPermId(), options); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + deleteTag(user.getUserId(), PASSWORD, tagId, options); + } + }); + } else + { + deleteTag(user.getUserId(), PASSWORD, tagId, options); + } } private Tag createTag(String user, String password, TagCreation creation) diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetDataSetTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetDataSetTest.java index 6f213dd9e915253a4dde926cf0f8fa204c55c96b..c2d2af5454e99f79c6abfebcc615a1bbcfbbc2a3 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetDataSetTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetDataSetTest.java @@ -58,6 +58,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.fetchoptions.TagFetchOptions; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; /** @@ -1020,18 +1021,32 @@ public class GetDataSetTest extends AbstractDataSetTest new DataSetPermId("20081105092159188-3")); String sessionToken = v3api.login(user.getUserId(), PASSWORD); - Map<IDataSetId, DataSet> result = v3api.getDataSets(sessionToken, ids, new DataSetFetchOptions()); - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - assertEquals(result.size(), 2); - } else if (user.isTestSpaceUser() || (user.isTestProjectUser() && user.hasPAEnabled())) - { - assertEquals(result.size(), 1); - assertEquals(result.values().iterator().next().getCode(), "20120619092259000-22"); + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.getDataSets(sessionToken, ids, new DataSetFetchOptions()); + } + }); } else { - assertEquals(result.size(), 0); + Map<IDataSetId, DataSet> result = v3api.getDataSets(sessionToken, ids, new DataSetFetchOptions()); + + if (user.isInstanceUser()) + { + assertEquals(result.size(), 2); + } else if (user.isTestSpaceUser() || user.isTestProjectUser()) + { + assertEquals(result.size(), 1); + assertEquals(result.values().iterator().next().getCode(), "20120619092259000-22"); + } else + { + assertEquals(result.size(), 0); + } } v3api.logout(sessionToken); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetExperimentTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetExperimentTest.java index 9d6dc2ad9c7eda0a4bbca8855d522a9b2a0a24dc..0cb0f71033c006553233f0e52878afb758eb9c9e 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetExperimentTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetExperimentTest.java @@ -69,6 +69,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.common.test.AssertionUtil; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; @@ -1146,18 +1147,32 @@ public class GetExperimentTest extends AbstractExperimentTest new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); String sessionToken = v3api.login(user.getUserId(), PASSWORD); - Map<IExperimentId, Experiment> result = v3api.getExperiments(sessionToken, ids, experimentFetchOptionsFull()); - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - assertEquals(result.size(), 2); - } else if (user.isTestSpaceUser() || (user.isTestProjectUser() && user.hasPAEnabled())) - { - assertEquals(result.size(), 1); - assertEquals(result.values().iterator().next().getIdentifier(), new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.getExperiments(sessionToken, ids, experimentFetchOptionsFull()); + } + }); } else { - assertEquals(result.size(), 0); + Map<IExperimentId, Experiment> result = v3api.getExperiments(sessionToken, ids, experimentFetchOptionsFull()); + + if (user.isInstanceUser()) + { + assertEquals(result.size(), 2); + } else if (user.isTestSpaceUser() || user.isTestProjectUser()) + { + assertEquals(result.size(), 1); + assertEquals(result.values().iterator().next().getIdentifier(), new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); + } else + { + assertEquals(result.size(), 0); + } } v3api.logout(sessionToken); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetProjectTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetProjectTest.java index 7f6f6875cf91611c5d5d3b701bb9d0e6d9840b8f..b67282fe97e484d32857e0e526fd406fcff63d3d 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetProjectTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetProjectTest.java @@ -45,6 +45,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.update.ProjectUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; /** @@ -492,18 +493,32 @@ public class GetProjectTest extends AbstractTest List<? extends IProjectId> ids = Arrays.asList(identifier1, identifier2); String sessionToken = v3api.login(user.getUserId(), PASSWORD); - Map<IProjectId, Project> map = v3api.getProjects(sessionToken, ids, projectFetchOptionsFull()); - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - assertEquals(map.size(), 2); - } else if (user.isTestSpaceUser() || (user.isTestProjectUser() && user.hasPAEnabled())) - { - assertEquals(map.size(), 1); - assertEquals(map.get(identifier2).getIdentifier(), identifier2); + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.getProjects(sessionToken, ids, projectFetchOptionsFull()); + } + }); } else { - assertEquals(map.size(), 0); + Map<IProjectId, Project> map = v3api.getProjects(sessionToken, ids, projectFetchOptionsFull()); + + if (user.isInstanceUser()) + { + assertEquals(map.size(), 2); + } else if (user.isTestSpaceUser() || user.isTestProjectUser()) + { + assertEquals(map.size(), 1); + assertEquals(map.get(identifier2).getIdentifier(), identifier2); + } else + { + assertEquals(map.size(), 0); + } } v3api.logout(sessionToken); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetSampleTest.java index 656758c01b75fcda1e85f0a6eaf7f97961b84092..5b2c17fd4d0df4448f81eb4d54852550599931bc 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetSampleTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetSampleTest.java @@ -64,6 +64,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.fetchoptions.TagFetchOptions; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.common.test.AssertionUtil; import ch.systemsx.cisd.openbis.generic.shared.basic.CodeConverter; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; @@ -1601,14 +1602,27 @@ public class GetSampleTest extends AbstractSampleTest ISampleId id = new SampleIdentifier("/TEST-SPACE/EV-TEST"); SampleFetchOptions fetchOptions = new SampleFetchOptions(); - Map<ISampleId, Sample> samples = v3api.getSamples(sessionToken, Arrays.asList(id), fetchOptions); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(samples.size(), 1); + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.getSamples(sessionToken, Arrays.asList(id), fetchOptions); + } + }); } else { - assertEquals(samples.size(), 0); + Map<ISampleId, Sample> samples = v3api.getSamples(sessionToken, Arrays.asList(id), fetchOptions); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(samples.size(), 1); + } else + { + assertEquals(samples.size(), 0); + } } } diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetTagTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetTagTest.java index d6c37f30f88de5477df0fc65e30032bea2080264..a933e49b8ad1e39b8683ba2b7e42d1a27a80d937 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetTagTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetTagTest.java @@ -33,6 +33,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.fetchoptions.TagFetchOptions import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.ITagId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagCode; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; /** @@ -366,10 +367,23 @@ public class GetTagTest extends AbstractTest TagCreation creation = new TagCreation(); creation.setCode("TAG_TO_GET"); - List<TagPermId> permIds = v3api.createTags(sessionToken, Arrays.asList(creation)); - - Map<ITagId, Tag> map = v3api.getTags(sessionToken, permIds, new TagFetchOptions()); - assertEquals(map.size(), 1); + TagPermId permId = createTag(user.getUserId(), creation); + + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.getTags(sessionToken, Arrays.asList(permId), new TagFetchOptions()); + } + }); + } else + { + Map<ITagId, Tag> map = v3api.getTags(sessionToken, Arrays.asList(permId), new TagFetchOptions()); + assertEquals(map.size(), 1); + } } } diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTest.java index 207427deb5f02584cb23aaba19a2c1136a897a1c..105f590cb5149e648df4eba809506bad58c4a77d 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTest.java @@ -33,6 +33,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCrit import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; /** @@ -794,18 +795,32 @@ public class SearchDataSetTest extends AbstractDataSetTest criteria.withId().thatEquals(new DataSetPermId("20081105092159188-3")); String sessionToken = v3api.login(user.getUserId(), PASSWORD); - SearchResult<DataSet> result = v3api.searchDataSets(sessionToken, criteria, new DataSetFetchOptions()); - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - assertEquals(result.getObjects().size(), 2); - } else if (user.isTestSpaceUser() || (user.isTestProjectUser() && user.hasPAEnabled())) - { - assertEquals(result.getObjects().size(), 1); - assertEquals(result.getObjects().get(0).getCode(), "20120619092259000-22"); + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.searchDataSets(sessionToken, criteria, new DataSetFetchOptions()); + } + }); } else { - assertEquals(result.getObjects().size(), 0); + SearchResult<DataSet> result = v3api.searchDataSets(sessionToken, criteria, new DataSetFetchOptions()); + + if (user.isInstanceUser()) + { + assertEquals(result.getObjects().size(), 2); + } else if (user.isTestSpaceUser() || user.isTestProjectUser()) + { + assertEquals(result.getObjects().size(), 1); + assertEquals(result.getObjects().get(0).getCode(), "20120619092259000-22"); + } else + { + assertEquals(result.getObjects().size(), 0); + } } v3api.logout(sessionToken); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTest.java index 60f7c8640b084f8e6e3b55819509843a25ede8d1..67c652e6e2ed13ee28ab1d64420ab8b0296e9595 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTest.java @@ -38,6 +38,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagCode; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; /** @@ -763,18 +764,32 @@ public class SearchExperimentTest extends AbstractExperimentTest criteria.withId().thatEquals(new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); String sessionToken = v3api.login(user.getUserId(), PASSWORD); - SearchResult<Experiment> result = v3api.searchExperiments(sessionToken, criteria, experimentFetchOptionsFull()); - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) { - assertEquals(result.getObjects().size(), 2); - } else if (user.isTestSpaceUser() || (user.isTestProjectUser() && user.hasPAEnabled())) - { - assertEquals(result.getObjects().size(), 1); - assertEquals(result.getObjects().get(0).getIdentifier(), new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.searchExperiments(sessionToken, criteria, experimentFetchOptionsFull()); + } + }); } else { - assertEquals(result.getObjects().size(), 0); + SearchResult<Experiment> result = v3api.searchExperiments(sessionToken, criteria, experimentFetchOptionsFull()); + + if (user.isInstanceUser()) + { + assertEquals(result.getObjects().size(), 2); + } else if (user.isTestSpaceUser() || user.isTestProjectUser()) + { + assertEquals(result.getObjects().size(), 1); + assertEquals(result.getObjects().get(0).getIdentifier(), new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); + } else + { + assertEquals(result.getObjects().size(), 0); + } } v3api.logout(sessionToken); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchProjectTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchProjectTest.java index 921a0fe5b1957a7560ba5d1d5e1bfb221d9e0493..b0f64e6f006ad60fd645bcd85108ba40561af8cd 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchProjectTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchProjectTest.java @@ -29,6 +29,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.search.ProjectSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; /** @@ -220,18 +221,31 @@ public class SearchProjectTest extends AbstractTest criteria.withId().thatEquals(identifier1); criteria.withId().thatEquals(identifier2); - SearchResult<Project> result = v3api.searchProjects(sessionToken, criteria, projectFetchOptionsFull()); - - if (user.isInstanceUser()) - { - assertEquals(result.getObjects().size(), 2); - } else if (user.isTestSpaceUser() || (user.isTestProjectUser() && user.hasPAEnabled())) + if (user.isDisabledProjectUser()) { - assertEquals(result.getObjects().size(), 1); - assertEquals(result.getObjects().get(0).getIdentifier(), identifier2); + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.searchProjects(sessionToken, criteria, projectFetchOptionsFull()); + } + }); } else { - assertEquals(result.getObjects().size(), 0); + SearchResult<Project> result = v3api.searchProjects(sessionToken, criteria, projectFetchOptionsFull()); + + if (user.isInstanceUser()) + { + assertEquals(result.getObjects().size(), 2); + } else if (user.isTestSpaceUser() || user.isTestProjectUser()) + { + assertEquals(result.getObjects().size(), 1); + assertEquals(result.getObjects().get(0).getIdentifier(), identifier2); + } else + { + assertEquals(result.getObjects().size(), 0); + } } v3api.logout(sessionToken); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java index 52e16cbe5c74b45dee64b66b40363b7e5ab137a7..288e897f48f8ea77e1fcb7e57b1a3475e5a34619 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java @@ -44,6 +44,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.semanticannotation.search.Semant import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagCode; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.common.test.AssertionUtil; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; @@ -1325,7 +1326,17 @@ public class SearchSampleTest extends AbstractSampleTest SampleSearchCriteria criteria = new SampleSearchCriteria(); criteria.withId().thatEquals(new SampleIdentifier("/TEST-SPACE/EV-TEST")); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + testSearch(user.getUserId(), criteria); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { testSearch(user.getUserId(), criteria, "/TEST-SPACE/EV-TEST"); } else diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchTagTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchTagTest.java index cae53380974cc8a7c542f7c2c4cd4c1e01d1c65b..ccea88e0ed04333d2b05960119c3a837d1d43814 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchTagTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchTagTest.java @@ -16,7 +16,6 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; -import java.util.Arrays; import java.util.List; import org.testng.annotations.Test; @@ -27,6 +26,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.create.TagCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.fetchoptions.TagFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.search.TagSearchCriteria; +import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; /** @@ -153,17 +153,28 @@ public class SearchTagTest extends AbstractTest @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER_WITH_ETL) public void testSearchWithProjectAuthorization(ProjectAuthorizationUser user) { - String sessionToken = v3api.login(user.getUserId(), PASSWORD); - TagCreation creation = new TagCreation(); creation.setCode("TAG_TO_SEARCH"); - List<TagPermId> permIds = v3api.createTags(sessionToken, Arrays.asList(creation)); + TagPermId permId = createTag(user.getUserId(), creation); TagSearchCriteria criteria = new TagSearchCriteria(); - criteria.withId().thatEquals(permIds.get(0)); - - testSearch(user.getUserId(), criteria, permIds.get(0).getPermId()); + criteria.withId().thatEquals(permId); + + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + testSearch(user.getUserId(), criteria, permId.getPermId()); + } + }); + } else + { + testSearch(user.getUserId(), criteria, permId.getPermId()); + } } private void testSearch(String user, TagSearchCriteria criteria, String... expectedPermIds) diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java index 89e24117e58c0dc5784ecf39ce600093871d6eb6..503e77cff075f13b407f589794ffec0f1cb72e02 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateDataSetTest.java @@ -725,7 +725,17 @@ public class UpdateDataSetTest extends AbstractSampleTest update.setDataSetId(new DataSetPermId("20120619092259000-22")); update.setProperty("COMMENT", "updated comment"); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.updateDataSets(sessionToken, Arrays.asList(update)); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { v3api.updateDataSets(sessionToken, Arrays.asList(update)); } else diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java index a52ff078a3201a4b07ca578f2589530e339c94c5..0bc2194b22f4ea3279afe84bf68f0d35735c5129 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateExperimentTest.java @@ -729,7 +729,17 @@ public class UpdateExperimentTest extends AbstractExperimentTest String sessionToken = v3api.login(user.getUserId(), PASSWORD); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.updateExperiments(sessionToken, Collections.singletonList(update)); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { v3api.updateExperiments(sessionToken, Collections.singletonList(update)); } else diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateProjectTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateProjectTest.java index c57ade0c3ae35ecf044a2ddf737292f1eee52980..497bda346a85ea0df122dffd7ddae6e933316d91 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateProjectTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateProjectTest.java @@ -98,7 +98,17 @@ public class UpdateProjectTest extends AbstractTest String sessionToken = v3api.login(user.getUserId(), PASSWORD); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.updateProjects(sessionToken, Collections.singletonList(update)); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { Map<IProjectId, Project> map = v3api.getProjects(sessionToken, Arrays.asList(projectId), new ProjectFetchOptions()); Project project = map.get(projectId); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java index 940bdc5df6c0a6104f26352ff7b344139eab6408..1c6f755fa572032a74d0bd758ee9d18b3e322923 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java @@ -1439,7 +1439,17 @@ public class UpdateSampleTest extends AbstractSampleTest update.setExperimentId(new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); update.setProperty("COMMENT", "test comment"); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + v3api.updateSamples(sessionToken, Arrays.asList(update)); + } + }); + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { v3api.updateSamples(sessionToken, Arrays.asList(update)); } else diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateTagTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateTagTest.java index 9f7508e58f9a8350cacfb3e19280a929de633cde..2ae55d5ad207044de3e2bd11b292aeccc44f01eb 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateTagTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateTagTest.java @@ -498,18 +498,27 @@ public class UpdateTagTest extends AbstractTest creation.setCode("TEST_TAG"); creation.setDescription("test description"); - String sessionToken = v3api.login(user.getUserId(), PASSWORD); - - List<TagPermId> permIds = v3api.createTags(sessionToken, Arrays.asList(creation)); - assertEquals(permIds.size(), 1); + TagPermId permId = createTag(user.getUserId(), creation); TagUpdate update = new TagUpdate(); - update.setTagId(permIds.get(0)); + update.setTagId(permId); update.setDescription("brand new description"); - Tag after = updateTag(user.getUserId(), PASSWORD, update); - - assertEquals(after.getDescription(), update.getDescription().getValue()); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + updateTag(user.getUserId(), PASSWORD, update); + } + }); + } else + { + Tag after = updateTag(user.getUserId(), PASSWORD, update); + assertEquals(after.getDescription(), update.getDescription().getValue()); + } } private Tag getTag(String user, String password, ITagId tagId) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerTest.java index 9d5505f26da55301fe5d7dd580df494c93cd9b9d..68909be495c7fdc91f8dcf125f90429f0f5b7541 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServerTest.java @@ -162,25 +162,38 @@ public class ServiceForDataStoreServerTest extends SystemTestCase { SessionContextDTO session = etlService.tryAuthenticate(user.getUserId(), PASSWORD); - List<Project> projects = etlService.listProjects(session.getSessionToken()); - - if (user.isInstanceUser()) - { - assertEntities( - "[/CISD/DEFAULT, /CISD/NEMO, /CISD/NOE, /TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT, /TESTGROUP/TESTPROJ]", - projects); - } else if (user.isTestSpaceUser()) - { - assertEntities("[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); - } else if (user.isTestGroupUser()) - { - assertEntities("[/TESTGROUP/TESTPROJ]", projects); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) + if (user.isDisabledProjectUser()) { - assertEntities("[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + try + { + etlService.listProjects(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEntities("[]", projects); + List<Project> projects = etlService.listProjects(session.getSessionToken()); + + if (user.isInstanceUser()) + { + assertEntities( + "[/CISD/DEFAULT, /CISD/NEMO, /CISD/NOE, /TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT, /TESTGROUP/TESTPROJ]", + projects); + } else if (user.isTestSpaceUser()) + { + assertEntities("[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + } else if (user.isTestGroupUser()) + { + assertEntities("[/TESTGROUP/TESTPROJ]", projects); + } else if (user.isTestProjectUser()) + { + assertEntities("[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + } else + { + assertEntities("[]", projects); + } } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicateTest.java index 900b8222fb90792bd237269816136080e48ff8e0..a4e011c70901c809253287493188bf1e66192793 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicateTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/DataSetUpdatesCollectionPredicateTest.java @@ -57,7 +57,7 @@ public class DataSetUpdatesCollectionPredicateTest extends AuthorizationTestCase allowing(provider).getAuthorizationConfig(); will(returnValue(new TestAuthorizationConfig(false, false))); - one(provider).getDatasetCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L))); + one(provider).getDatasetCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L)), true); will(returnValue(new HashSet<DataSetAccessPE>(Arrays.asList(dataSet)))); } }); @@ -89,7 +89,7 @@ public class DataSetUpdatesCollectionPredicateTest extends AuthorizationTestCase allowing(provider).getAuthorizationConfig(); will(returnValue(new TestAuthorizationConfig(false, false))); - one(provider).getDatasetCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L))); + one(provider).getDatasetCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L)), true); will(returnValue(new HashSet<DataSetAccessPE>(Arrays.asList(dataSet)))); } }); @@ -152,7 +152,7 @@ public class DataSetUpdatesCollectionPredicateTest extends AuthorizationTestCase allowing(provider).getAuthorizationConfig(); will(returnValue(new TestAuthorizationConfig(false, false))); - one(provider).getDatasetCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L))); + one(provider).getDatasetCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L)), true); will(returnValue(new HashSet<DataSetAccessPE>(Arrays.asList(dataSet)))); } }); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ListSampleCriteriaPredicateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ListSampleCriteriaPredicateTest.java index c84509207f8f16a057b2ee4a18890805eb97d5b0..e6d9a44a9c407a7639296028a039f9f094550920 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ListSampleCriteriaPredicateTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/ListSampleCriteriaPredicateTest.java @@ -179,7 +179,7 @@ public class ListSampleCriteriaPredicateTest extends AuthorizationTestCase context.checking(new Expectations() { { - one(provider).getSampleCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L))); + one(provider).getSampleCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L)), true); will(returnValue(Collections.singleton(sampleAccess))); } }); @@ -204,7 +204,7 @@ public class ListSampleCriteriaPredicateTest extends AuthorizationTestCase context.checking(new Expectations() { { - one(provider).getSampleCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L))); + one(provider).getSampleCollectionAccessDataByTechIds(Arrays.asList(new TechId(42L)), true); will(returnValue(Collections.singleton(containerAccess))); } }); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicateTest.java index d33feb14477ad7400a3da9c7e4b2cbc92ed15a40..e2da73fca66d29e83a709c7ae8f116003f021080 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicateTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/authorization/predicate/SampleUpdatesCollectionPredicateTest.java @@ -61,7 +61,7 @@ public class SampleUpdatesCollectionPredicateTest extends AuthorizationTestCase allowing(provider).getAuthorizationConfig(); will(returnValue(new TestAuthorizationConfig(false, false))); - one(provider).getSampleCollectionAccessDataByTechIds(TechId.createList(42L, 43L, 44L)); + one(provider).getSampleCollectionAccessDataByTechIds(TechId.createList(42L, 43L, 44L), true); will(returnValue(Collections.singleton(sampleAccess))); } }); @@ -98,7 +98,7 @@ public class SampleUpdatesCollectionPredicateTest extends AuthorizationTestCase allowing(provider).getAuthorizationConfig(); will(returnValue(new TestAuthorizationConfig(false, false))); - one(provider).getSampleCollectionAccessDataByTechIds(TechId.createList(42L, 43L, 44L)); + one(provider).getSampleCollectionAccessDataByTechIds(TechId.createList(42L, 43L, 44L), true); will(returnValue(Collections.singleton(sampleAccess))); } }); @@ -171,7 +171,7 @@ public class SampleUpdatesCollectionPredicateTest extends AuthorizationTestCase allowing(provider).getAuthorizationConfig(); will(returnValue(new TestAuthorizationConfig(false, false))); - one(provider).getSampleCollectionAccessDataByTechIds(TechId.createList(42L, 43L, 44L)); + one(provider).getSampleCollectionAccessDataByTechIds(TechId.createList(42L, 43L, 44L), true); will(returnValue(Collections.singleton(sampleAccess))); } }); 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 c0e525b47f327d084ef7cd6632c6f567bc283e1f..d5ce6d67189a8bb2cd0ad69edf9948cf9f01fe30 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java @@ -26,15 +26,16 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Set; 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; @@ -44,9 +45,9 @@ 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.IEntityInformationHolderWithPermId; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; @@ -58,12 +59,16 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelatedEntities; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelationshipRole; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetUpdateResult; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStore; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletionType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DisplaySettings; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; @@ -72,9 +77,19 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentAttributeSearchFieldKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListMaterialCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialAttributeSearchFieldKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MetaprojectAssignments; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MetaprojectAssignmentsCount; 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; @@ -85,19 +100,26 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleAttributeSearchFieldKind; 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.Script; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteriaConnection; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.displaysettings.IDisplaySettingsUpdate; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.id.metaproject.IMetaprojectId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.id.metaproject.MetaprojectIdentifierId; 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.MetaprojectAssignmentPE; 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.SearchableEntity; import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; @@ -112,9 +134,6 @@ import junit.framework.Assert; public class CommonServerTest extends SystemTestCase { - @Autowired - private IDAOFactory daoFactory; - private Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, getClass()); @Test @@ -291,26 +310,39 @@ public class CommonServerTest extends SystemTestCase ListSampleCriteria criteria = new ListSampleCriteria(); criteria.setIncludeSpace(true); - List<Sample> samples = commonServer.listSamples(session.getSessionToken(), criteria); - - if (user.isInstanceUser()) - { - assertEquals(samples.size(), 38); - } else if (user.isTestSpaceUser()) - { - assertEquals(samples.size(), 7); - assertEntities( - "[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/EV-INVALID, /TEST-SPACE/EV-PARENT, /TEST-SPACE/EV-PARENT-NORMAL, /TEST-SPACE/EV-TEST, /TEST-SPACE/FV-TEST, /TEST-SPACE/SAMPLE-TO-DELETE]", - samples); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) + if (user.isDisabledProjectUser()) { - assertEquals(samples.size(), 6); - assertEntities( - "[/TEST-SPACE/EV-INVALID, /TEST-SPACE/EV-PARENT, /TEST-SPACE/EV-PARENT-NORMAL, /TEST-SPACE/EV-TEST, /TEST-SPACE/FV-TEST, /TEST-SPACE/SAMPLE-TO-DELETE]", - samples); + try + { + commonServer.listSamples(session.getSessionToken(), criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEntities("[]", samples); + List<Sample> samples = commonServer.listSamples(session.getSessionToken(), criteria); + + if (user.isInstanceUser()) + { + assertEquals(samples.size(), 38); + } else if (user.isTestSpaceUser()) + { + assertEquals(samples.size(), 7); + assertEntities( + "[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/EV-INVALID, /TEST-SPACE/EV-PARENT, /TEST-SPACE/EV-PARENT-NORMAL, /TEST-SPACE/EV-TEST, /TEST-SPACE/FV-TEST, /TEST-SPACE/SAMPLE-TO-DELETE]", + samples); + } else if (user.isTestProjectUser()) + { + assertEquals(samples.size(), 6); + assertEntities( + "[/TEST-SPACE/EV-INVALID, /TEST-SPACE/EV-PARENT, /TEST-SPACE/EV-PARENT-NORMAL, /TEST-SPACE/EV-TEST, /TEST-SPACE/FV-TEST, /TEST-SPACE/SAMPLE-TO-DELETE]", + samples); + } else + { + assertEntities("[]", samples); + } } } @@ -390,17 +422,31 @@ public class CommonServerTest extends SystemTestCase SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); List<TechId> materialIds = Arrays.asList(new TechId(34L)); // BACTERIUM-X - List<Sample> samples = commonServer.listSamplesByMaterialProperties(session.getSessionToken(), materialIds); - if (user.isInstanceUser()) - { - assertEntities("[/CISD/CP-TEST-1, /CISD/PLATE_WELLSEARCH:WELL-A01, /TEST-SPACE/FV-TEST]", samples); - } else if (user.isTestSpaceUser() || (user.isTestProjectUser() && user.hasPAEnabled())) + if (user.isDisabledProjectUser()) { - assertEntities("[/TEST-SPACE/FV-TEST]", samples); + try + { + commonServer.listSamplesByMaterialProperties(session.getSessionToken(), materialIds); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEntities("[]", samples); + List<Sample> samples = commonServer.listSamplesByMaterialProperties(session.getSessionToken(), materialIds); + + if (user.isInstanceUser()) + { + assertEntities("[/CISD/CP-TEST-1, /CISD/PLATE_WELLSEARCH:WELL-A01, /TEST-SPACE/FV-TEST]", samples); + } else if (user.isTestSpaceUser() || user.isTestProjectUser()) + { + assertEntities("[/TEST-SPACE/FV-TEST]", samples); + } else + { + assertEntities("[]", samples); + } } } @@ -770,25 +816,38 @@ public class CommonServerTest extends SystemTestCase { SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); - List<Project> projects = commonServer.listProjects(session.getSessionToken()); - - if (user.isInstanceUser()) - { - assertEntities( - "[/CISD/DEFAULT, /CISD/NEMO, /CISD/NOE, /TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT, /TESTGROUP/TESTPROJ]", - projects); - } else if (user.isTestSpaceUser()) + if (user.isDisabledProjectUser()) { - assertEntities("[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); - } else if (user.isTestGroupUser()) - { - assertEntities("[/TESTGROUP/TESTPROJ]", projects); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) - { - assertEntities("[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + try + { + commonServer.listProjects(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEntities("[]", projects); + List<Project> projects = commonServer.listProjects(session.getSessionToken()); + + if (user.isInstanceUser()) + { + assertEntities( + "[/CISD/DEFAULT, /CISD/NEMO, /CISD/NOE, /TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT, /TESTGROUP/TESTPROJ]", + projects); + } else if (user.isTestSpaceUser()) + { + assertEntities("[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + } else if (user.isTestGroupUser()) + { + assertEntities("[/TESTGROUP/TESTPROJ]", projects); + } else if (user.isTestProjectUser()) + { + assertEntities("[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + } else + { + assertEntities("[]", projects); + } } } @@ -977,20 +1036,33 @@ public class CommonServerTest extends SystemTestCase ExperimentType experimentType = new ExperimentType(); experimentType.setCode("SIRNA_HCS"); - List<Experiment> experiments = commonServer.listExperiments(session.getSessionToken(), experimentType, new SpaceIdentifier("TEST-SPACE")); - - if (user.isInstanceUser() || user.isTestSpaceUser()) - { - assertEquals(experiments.size(), 3); - assertEntities("[/TEST-SPACE/NOE/EXP-TEST-2, /TEST-SPACE/NOE/EXPERIMENT-TO-DELETE, /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST]", - experiments); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) + if (user.isDisabledProjectUser()) { - assertEquals(experiments.size(), 1); - assertEntities("[/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST]", experiments); + try + { + commonServer.listExperiments(session.getSessionToken(), experimentType, new SpaceIdentifier("TEST-SPACE")); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(experiments.size(), 0); + List<Experiment> experiments = commonServer.listExperiments(session.getSessionToken(), experimentType, new SpaceIdentifier("TEST-SPACE")); + + if (user.isInstanceUser() || user.isTestSpaceUser()) + { + assertEquals(experiments.size(), 3); + assertEntities("[/TEST-SPACE/NOE/EXP-TEST-2, /TEST-SPACE/NOE/EXPERIMENT-TO-DELETE, /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST]", + experiments); + } else if (user.isTestProjectUser()) + { + assertEquals(experiments.size(), 1); + assertEntities("[/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST]", experiments); + } else + { + assertEquals(experiments.size(), 0); + } } } @@ -1148,18 +1220,31 @@ public class CommonServerTest extends SystemTestCase daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, person); - List<Experiment> experiments = - commonServer.listMetaprojectExperiments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(experiments.size(), 1); - assertEquals(experiments.get(0).isStub(), false); - assertEquals(experiments.get(0).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); + try + { + commonServer.listMetaprojectExperiments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(experiments.size(), 1); - assertEquals(experiments.get(0).isStub(), true); + List<Experiment> experiments = + commonServer.listMetaprojectExperiments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(experiments.size(), 1); + assertEquals(experiments.get(0).isStub(), false); + assertEquals(experiments.get(0).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); + } else + { + assertEquals(experiments.size(), 1); + assertEquals(experiments.get(0).isStub(), true); + } } } @@ -1178,18 +1263,31 @@ public class CommonServerTest extends SystemTestCase daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, person); - List<Sample> samples = - commonServer.listMetaprojectSamples(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(samples.size(), 1); - assertEquals(samples.get(0).isStub(), false); - assertEquals(samples.get(0).getIdentifier(), "/TEST-SPACE/EV-TEST"); + try + { + commonServer.listMetaprojectSamples(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(samples.size(), 1); - assertEquals(samples.get(0).isStub(), true); + List<Sample> samples = + commonServer.listMetaprojectSamples(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(samples.size(), 1); + assertEquals(samples.get(0).isStub(), false); + assertEquals(samples.get(0).getIdentifier(), "/TEST-SPACE/EV-TEST"); + } else + { + assertEquals(samples.size(), 1); + assertEquals(samples.get(0).isStub(), true); + } } } @@ -1208,18 +1306,31 @@ public class CommonServerTest extends SystemTestCase daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, person); - List<AbstractExternalData> dataSets = - commonServer.listMetaprojectExternalData(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(dataSets.size(), 1); - assertEquals(dataSets.get(0).isStub(), false); - assertEquals(dataSets.get(0).getCode(), "20120628092259000-41"); + try + { + commonServer.listMetaprojectExternalData(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(dataSets.size(), 1); - assertEquals(dataSets.get(0).isStub(), true); + List<AbstractExternalData> dataSets = + commonServer.listMetaprojectExternalData(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(dataSets.size(), 1); + assertEquals(dataSets.get(0).isStub(), false); + assertEquals(dataSets.get(0).getCode(), "20120628092259000-41"); + } else + { + assertEquals(dataSets.size(), 1); + assertEquals(dataSets.get(0).isStub(), true); + } } } @@ -1240,19 +1351,31 @@ public class CommonServerTest extends SystemTestCase criteria.setCriteria(Arrays.asList(spaceCriterion, typeCriterion)); criteria.setConnection(SearchCriteriaConnection.MATCH_ALL); - List<Sample> samples = - commonServer.searchForSamples(session.getSessionToken(), criteria); - - if (user.isInstanceUser() || user.isTestSpaceUser()) - { - assertEntities("[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/FV-TEST]", samples); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) + if (user.isDisabledProjectUser()) { - assertEquals(samples.size(), 1); - assertEntities("[/TEST-SPACE/FV-TEST]", samples); + try + { + commonServer.searchForSamples(session.getSessionToken(), criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(samples.size(), 0); + List<Sample> samples = commonServer.searchForSamples(session.getSessionToken(), criteria); + + if (user.isInstanceUser() || user.isTestSpaceUser()) + { + assertEntities("[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/FV-TEST]", samples); + } else if (user.isTestProjectUser()) + { + assertEquals(samples.size(), 1); + assertEntities("[/TEST-SPACE/FV-TEST]", samples); + } else + { + assertEquals(samples.size(), 0); + } } } @@ -1269,16 +1392,28 @@ public class CommonServerTest extends SystemTestCase criteria.setCriteria(Arrays.asList(criterion)); criteria.setConnection(SearchCriteriaConnection.MATCH_ANY); - List<Experiment> experiments = - commonServer.searchForExperiments(session.getSessionToken(), criteria); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(experiments.size(), 1); - assertEquals(experiments.get(0).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); + try + { + commonServer.searchForExperiments(session.getSessionToken(), criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(experiments.size(), 0); + List<Experiment> experiments = commonServer.searchForExperiments(session.getSessionToken(), criteria); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(experiments.size(), 1); + assertEquals(experiments.get(0).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); + } else + { + assertEquals(experiments.size(), 0); + } } } @@ -1295,16 +1430,28 @@ public class CommonServerTest extends SystemTestCase criteria.setCriteria(Arrays.asList(criterion)); criteria.setConnection(SearchCriteriaConnection.MATCH_ANY); - List<AbstractExternalData> dataSets = - commonServer.searchForDataSets(session.getSessionToken(), criteria); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(dataSets.size(), 1); - assertEquals(dataSets.get(0).getCode(), "20120628092259000-41"); + try + { + commonServer.searchForDataSets(session.getSessionToken(), criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(dataSets.size(), 0); + List<AbstractExternalData> dataSets = commonServer.searchForDataSets(session.getSessionToken(), criteria); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(dataSets.size(), 1); + assertEquals(dataSets.get(0).getCode(), "20120628092259000-41"); + } else + { + assertEquals(dataSets.size(), 0); + } } } @@ -1377,7 +1524,7 @@ public class CommonServerTest extends SystemTestCase attachment.setFilePath("testExperiment2.txt"); attachment.setContent("testContent2".getBytes()); - if ((user.isInstanceUser() || user.isTestSpaceUser()) || (user.isTestProjectUser() && user.hasPAEnabled())) + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { commonServer.addExperimentAttachment(session.getSessionToken(), experimentId, attachment); @@ -1803,14 +1950,27 @@ public class CommonServerTest extends SystemTestCase BasicEntityInformationHolder experiment = new BasicEntityInformationHolder(EntityKind.EXPERIMENT, null, null, 23L, null); // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST DataSetRelatedEntities related = new DataSetRelatedEntities(Arrays.asList(experiment)); - List<AbstractExternalData> dataSets = commonServer.listRelatedDataSets(session.getSessionToken(), related, false); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(dataSets.size(), 9); + try + { + commonServer.listRelatedDataSets(session.getSessionToken(), related, false); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(dataSets.size(), 0); + List<AbstractExternalData> dataSets = commonServer.listRelatedDataSets(session.getSessionToken(), related, false); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(dataSets.size(), 9); + } else + { + assertEquals(dataSets.size(), 0); + } } } @@ -2103,41 +2263,806 @@ public class CommonServerTest extends SystemTestCase } } - private void assertAssignedPropertyTypes(String expected, EntityType entityType) + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListPropertyTypesWithProjectAuthorization(ProjectAuthorizationUser user) { - List<? extends EntityTypePropertyType<?>> propTypes = entityType.getAssignedPropertyTypes(); - List<String> propertyCodes = new ArrayList<String>(); - for (EntityTypePropertyType<?> entityTypePropertyType : propTypes) + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) { - String code = entityTypePropertyType.getPropertyType().getCode(); - if (entityTypePropertyType.isMandatory()) + List<PropertyType> types = commonServer.listPropertyTypes(session.getSessionToken(), false); + assertEquals(types.size(), 18); + } else + { + try { - code = code + "*"; + commonServer.listPropertyTypes(session.getSessionToken(), false); + fail(); + } catch (AuthorizationFailureException e) + { + // expected } - propertyCodes.add(code); } - Collections.sort(propertyCodes); - assertEquals(expected, propertyCodes.toString()); } - @Test - @Transactional(propagation = Propagation.NEVER) - public void testConcurrentDisplaySettingsUpdateForOneUserIsSafe() + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListEntityTypesPropertyTypesWithProjectAuthorization(ProjectAuthorizationUser user) { - testConcurrentDisplaySettingsUpdateForUsersIsSafe(new String[] { "test" }, 10, 10); - } + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); - @Test - @Transactional(propagation = Propagation.NEVER) - public void testConcurrentDisplaySettingsUpdateForDifferentUsersIsSafe() - { - testConcurrentDisplaySettingsUpdateForUsersIsSafe(new String[] { "test", "test_role" }, 5, 10); + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<EntityTypePropertyType<?>> types = commonServer.listEntityTypePropertyTypes(session.getSessionToken()); + assertEquals(types.size(), 62); + } else + { + try + { + commonServer.listEntityTypePropertyTypes(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } } - @SuppressWarnings("deprecation") - private void testConcurrentDisplaySettingsUpdateForUsersIsSafe(String[] users, int numberOfThreads, int numberOfIterations) + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListEntityTypesPropertyTypesForTypeWithProjectAuthorization(ProjectAuthorizationUser user) { - final String PANEL_ID = "panel_id"; + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + ExperimentType experimentType = new ExperimentType(); + experimentType.setCode("COMPOUND_HCS"); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<EntityTypePropertyType<?>> types = commonServer.listEntityTypePropertyTypes(session.getSessionToken(), experimentType); + assertEquals(types.size(), 3); + } else + { + try + { + commonServer.listEntityTypePropertyTypes(session.getSessionToken(), experimentType); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListMaterialTypesWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<MaterialType> types = commonServer.listMaterialTypes(session.getSessionToken()); + assertEquals(types.size(), 11); + } else + { + try + { + commonServer.listMaterialTypes(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetMaterialTypeWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + String code = "BACTERIUM"; + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + MaterialType type = commonServer.getMaterialType(session.getSessionToken(), code); + assertEquals(type.getCode(), code); + } else + { + try + { + commonServer.getMaterialType(session.getSessionToken(), code); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListDataTypesWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<DataType> types = commonServer.listDataTypes(session.getSessionToken()); + assertEquals(types.size(), 10); + } else + { + try + { + commonServer.listDataTypes(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListFileFormatTypesWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<FileFormatType> types = commonServer.listFileFormatTypes(session.getSessionToken()); + assertEquals(types.size(), 8); + } else + { + try + { + commonServer.listFileFormatTypes(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListVocabulariesWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<Vocabulary> vocabularies = commonServer.listVocabularies(session.getSessionToken(), false, false); + assertEquals(vocabularies.size(), 6); + } else + { + try + { + commonServer.listVocabularies(session.getSessionToken(), false, false); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListMaterialsWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + ListMaterialCriteria criteria = ListMaterialCriteria.createFromMaterialIds(Arrays.asList(1L, 2L, 3L)); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<Material> materials = commonServer.listMaterials(session.getSessionToken(), criteria, false); + assertEquals(materials.size(), 3); + } else + { + try + { + commonServer.listMaterials(session.getSessionToken(), criteria, false); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListVocabularyTermsWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + Vocabulary vocabulary = new Vocabulary(); + vocabulary.setId(1L); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + Set<VocabularyTerm> terms = commonServer.listVocabularyTerms(session.getSessionToken(), vocabulary); + assertEquals(terms.size(), 3); + } else + { + try + { + commonServer.listVocabularyTerms(session.getSessionToken(), vocabulary); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListDataSetTypesWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<DataSetType> types = commonServer.listDataSetTypes(session.getSessionToken()); + assertEquals(types.size(), 11); + } else + { + try + { + commonServer.listDataSetTypes(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetMaterialInfoWithMaterialIdentifierWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + MaterialIdentifier identifier = new MaterialIdentifier("BACTERIUM1", "BACTERIUM"); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + Material material = commonServer.getMaterialInfo(session.getSessionToken(), identifier); + assertEquals(material.getCode(), "BACTERIUM1"); + } else + { + try + { + commonServer.getMaterialInfo(session.getSessionToken(), identifier); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetMaterialInfoWithMaterialIdWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + TechId materialId = new TechId(22L); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + Material material = commonServer.getMaterialInfo(session.getSessionToken(), materialId); + assertEquals(material.getCode(), "BACTERIUM1"); + } else + { + try + { + commonServer.getMaterialInfo(session.getSessionToken(), materialId); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetMaterialInformationHolderWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + MaterialIdentifier identifier = new MaterialIdentifier("BACTERIUM1", "BACTERIUM"); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + IEntityInformationHolderWithPermId holder = commonServer.getMaterialInformationHolder(session.getSessionToken(), identifier); + assertEquals(holder.getCode(), "BACTERIUM1"); + } else + { + try + { + commonServer.getMaterialInformationHolder(session.getSessionToken(), identifier); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListScriptsWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + ScriptType type = ScriptType.ENTITY_VALIDATION; + EntityKind kind = EntityKind.SAMPLE; + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<Script> scripts = commonServer.listScripts(session.getSessionToken(), type, kind); + assertEquals(scripts.size(), 7); + } else + { + try + { + commonServer.listScripts(session.getSessionToken(), type, kind); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListFiltersWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<GridCustomFilter> filters = commonServer.listFilters(session.getSessionToken(), "test_grid"); + assertEquals(filters.size(), 1); + } else + { + try + { + commonServer.listFilters(session.getSessionToken(), "test_grid"); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListDataStoresWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<DataStore> stores = commonServer.listDataStores(session.getSessionToken()); + assertEquals(stores.size(), 1); + assertEquals(stores.get(0).getCode(), "STANDARD"); + } else + { + try + { + commonServer.listDataStores(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListDataStoreServicesWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + DataStoreServiceKind kind = DataStoreServiceKind.PROCESSING; + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<DatastoreServiceDescription> services = commonServer.listDataStoreServices(session.getSessionToken(), kind); + assertEquals(services.size(), 1); + assertEquals(services.get(0).getKey(), "test_service"); + } else + { + try + { + commonServer.listDataStoreServices(session.getSessionToken(), kind); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetDefaultPutDataStoreBaseURLWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + String url = commonServer.getDefaultPutDataStoreBaseURL(session.getSessionToken()); + assertEquals(url, "http://localhost:8765"); + } else + { + try + { + commonServer.getDefaultPutDataStoreBaseURL(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetScriptInfoWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + TechId scriptId = new TechId(5L); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + Script script = commonServer.getScriptInfo(session.getSessionToken(), scriptId); + assertEquals(script.getName(), "validateOK"); + } else + { + try + { + commonServer.getScriptInfo(session.getSessionToken(), scriptId); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testSearchForMaterialsWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + DetailedSearchCriterion criterion = new DetailedSearchCriterion(); + criterion.setField(DetailedSearchField.createAttributeField(MaterialAttributeSearchFieldKind.CODE)); + criterion.setValue("BACTERIUM1"); + + DetailedSearchCriteria criteria = new DetailedSearchCriteria(); + criteria.setCriteria(Arrays.asList(criterion)); + criteria.setConnection(SearchCriteriaConnection.MATCH_ANY); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<Material> materials = commonServer.searchForMaterials(session.getSessionToken(), criteria); + assertEquals(materials.size(), 1); + assertEquals(materials.get(0).getCode(), "BACTERIUM1"); + } else + { + try + { + commonServer.searchForMaterials(session.getSessionToken(), criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetMetaprojectWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + IMetaprojectId metaprojectId = createMetaprojectId(createMetaproject(user.getUserId(), "PA_TEST")); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + Metaproject metaproject = commonServer.getMetaproject(session.getSessionToken(), metaprojectId); + assertEquals(metaproject.getCode(), "PA_TEST"); + } else + { + try + { + commonServer.getMetaproject(session.getSessionToken(), metaprojectId); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListMetaprojectsWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + createMetaproject(user.getUserId(), "PA_TEST"); + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<Metaproject> metaprojects = commonServer.listMetaprojects(session.getSessionToken()); + assertEquals(metaprojects.size(), 1); + assertEquals(metaprojects.get(0).getCode(), "PA_TEST"); + } else + { + try + { + commonServer.listMetaprojects(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListMetaprojectAssignmentsCountsWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + MetaprojectPE metaproject = createMetaproject(user.getUserId(), "PA_TEST"); + createMetaprojectAssignment(metaproject, "200811050951882-1028", null, null); // /CISD/NEMO/EXP1 + createMetaprojectAssignment(metaproject, "201206190940555-1032", null, null); // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST + createMetaprojectAssignment(metaproject, "200902091255058-1037", null, null); // /TEST-SPACE/NOE/EXP-TEST-2 + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + List<MetaprojectAssignmentsCount> counts = commonServer.listMetaprojectAssignmentsCounts(session.getSessionToken()); + assertEquals(counts.size(), 1); + // all connected entities are counted, the entities user has not access to are returned as stubs + assertEquals(counts.get(0).getExperimentCount(), 3); + } else + { + try + { + commonServer.listMetaprojectAssignmentsCounts(session.getSessionToken()); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetMetaprojectAssignmentsCountWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + MetaprojectPE metaproject = createMetaproject(user.getUserId(), "PA_TEST"); + createMetaprojectAssignment(metaproject, "200811050951882-1028", null, null); // /CISD/NEMO/EXP1 + createMetaprojectAssignment(metaproject, "201206190940555-1032", null, null); // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST + createMetaprojectAssignment(metaproject, "200902091255058-1037", null, null); // /TEST-SPACE/NOE/EXP-TEST-2 + + if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser()) + { + MetaprojectAssignmentsCount count = + commonServer.getMetaprojectAssignmentsCount(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + // all connected entities are counted, the entities user has not access to are returned as stubs + assertEquals(count.getExperimentCount(), 3); + } else + { + try + { + commonServer.getMetaprojectAssignmentsCount(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testGetMetaprojectAssignmentsWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + MetaprojectPE metaproject = createMetaproject(user.getUserId(), "PA_TEST"); + createMetaprojectAssignment(metaproject, "200811050951882-1028", null, null); // /CISD/NEMO/EXP1 + createMetaprojectAssignment(metaproject, "201206190940555-1032", null, null); // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST + createMetaprojectAssignment(metaproject, "200902091255058-1037", null, null); // /TEST-SPACE/NOE/EXP-TEST-2 + + if (user.isDisabledProjectUser()) + { + try + { + commonServer.getMetaprojectAssignments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } else + { + MetaprojectAssignments assignments = + commonServer.getMetaprojectAssignments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier())); + List<Experiment> experiments = assignments.getExperiments(); + + if (user.isInstanceUser()) + { + assertEntities("[/CISD/NEMO/EXP1, /TEST-SPACE/NOE/EXP-TEST-2, /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST]", experiments); + } else if (user.isTestSpaceUser()) + { + assertEquals(experiments.get(0).isStub(), true); + assertEquals(experiments.get(0).getPermId(), "200811050951882-1028"); + + assertEquals(experiments.get(1).isStub(), false); + assertEquals(experiments.get(1).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); + + assertEquals(experiments.get(2).isStub(), false); + assertEquals(experiments.get(2).getIdentifier(), "/TEST-SPACE/NOE/EXP-TEST-2"); + + } else if (user.isTestProjectUser()) + { + assertEquals(experiments.get(0).isStub(), true); + assertEquals(experiments.get(0).getPermId(), "200811050951882-1028"); + + assertEquals(experiments.get(1).isStub(), false); + assertEquals(experiments.get(1).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); + + assertEquals(experiments.get(2).isStub(), true); + assertEquals(experiments.get(2).getPermId(), "200902091255058-1037"); + } else + { + assertEquals(experiments.get(0).isStub(), true); + assertEquals(experiments.get(0).getPermId(), "200811050951882-1028"); + + assertEquals(experiments.get(1).isStub(), true); + assertEquals(experiments.get(1).getPermId(), "201206190940555-1032"); + + assertEquals(experiments.get(2).isStub(), true); + assertEquals(experiments.get(2).getPermId(), "200902091255058-1037"); + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListEntityHistoryWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO adminSession = commonServer.tryAuthenticate(TEST_USER, PASSWORD); + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + EntityKind entityKind = EntityKind.EXPERIMENT; + TechId entityId = new TechId(23L); // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST + + // update project to /TEST-SPACE/NOE + ExperimentUpdatesDTO update = new ExperimentUpdatesDTO(); + update.setExperimentId(entityId); + update.setProjectIdentifier(new ProjectIdentifier("TEST-SPACE", "NOE")); + update.setProperties(new ArrayList<IEntityProperty>()); + update.setAttachments(new ArrayList<NewAttachment>()); + ExperimentUpdateResult updateResult = commonServer.updateExperiment(adminSession.getSessionToken(), update); + + // update project to /TEST-SPACE/PROJECT-TO-DELETE + update.setProjectIdentifier(new ProjectIdentifier("TEST-SPACE", "PROJECT-TO-DELETE")); + update.setVersion(updateResult.getVersion()); + updateResult = commonServer.updateExperiment(adminSession.getSessionToken(), update); + + // update project back to /TEST-SPACE/TEST-PROJECT + update.setProjectIdentifier(new ProjectIdentifier("TEST-SPACE", "TEST-PROJECT")); + update.setVersion(updateResult.getVersion()); + commonServer.updateExperiment(adminSession.getSessionToken(), update); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + List<EntityHistory> history = commonServer.listEntityHistory(session.getSessionToken(), entityKind, entityId); + + Collections.sort(history, new Comparator<EntityHistory>() + { + @Override + public int compare(EntityHistory o1, EntityHistory o2) + { + return o1.tryGetRelatedProject().getIdentifier().compareTo(o2.tryGetRelatedProject().getIdentifier()); + } + }); + + if (user.isInstanceUser() || user.isTestSpaceUser()) + { + assertEquals(history.size(), 2); + assertEquals(history.get(0).tryGetRelatedProject().getIdentifier(), "/TEST-SPACE/NOE"); + assertEquals(history.get(1).tryGetRelatedProject().getIdentifier(), "/TEST-SPACE/PROJECT-TO-DELETE"); + } else + { + assertEquals(history.size(), 1); + assertEquals(history.get(0).tryGetRelatedProject().getIdentifier(), "/TEST-SPACE/PROJECT-TO-DELETE"); + } + } else + { + try + { + commonServer.listEntityHistory(session.getSessionToken(), entityKind, entityId); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } + } + + @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) + public void testListMatchingEntitiesWithProjectAuthorization(ProjectAuthorizationUser user) + { + SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD); + + SearchableEntity[] searchableEntities = SearchableEntity.values(); + String queryText = "\"/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST\""; + boolean useWildcardSearchMode = false; + int maxSize = Integer.MAX_VALUE; + + if (user.isDisabledProjectUser()) + { + try + { + commonServer.listMatchingEntities(session.getSessionToken(), searchableEntities, queryText, useWildcardSearchMode, maxSize); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } else + { + List<MatchingEntity> results = + commonServer.listMatchingEntities(session.getSessionToken(), searchableEntities, queryText, useWildcardSearchMode, maxSize); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(results.size(), 1); + assertEquals(results.get(0).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST"); + } else + { + assertEquals(results.size(), 0); + } + } + } + + private void assertAssignedPropertyTypes(String expected, EntityType entityType) + { + List<? extends EntityTypePropertyType<?>> propTypes = entityType.getAssignedPropertyTypes(); + List<String> propertyCodes = new ArrayList<String>(); + for (EntityTypePropertyType<?> entityTypePropertyType : propTypes) + { + String code = entityTypePropertyType.getPropertyType().getCode(); + if (entityTypePropertyType.isMandatory()) + { + code = code + "*"; + } + propertyCodes.add(code); + } + Collections.sort(propertyCodes); + assertEquals(expected, propertyCodes.toString()); + } + + @Test + @Transactional(propagation = Propagation.NEVER) + public void testConcurrentDisplaySettingsUpdateForOneUserIsSafe() + { + testConcurrentDisplaySettingsUpdateForUsersIsSafe(new String[] { "test" }, 10, 10); + } + + @Test + @Transactional(propagation = Propagation.NEVER) + public void testConcurrentDisplaySettingsUpdateForDifferentUsersIsSafe() + { + testConcurrentDisplaySettingsUpdateForUsersIsSafe(new String[] { "test", "test_role" }, 5, 10); + } + + @SuppressWarnings("deprecation") + private void testConcurrentDisplaySettingsUpdateForUsersIsSafe(String[] users, int numberOfThreads, int numberOfIterations) + { + final String PANEL_ID = "panel_id"; final String FINISHED_MESSAGE = "finished"; MessageChannel sendChannel = new MessageChannel(5000); @@ -2489,4 +3414,46 @@ public class CommonServerTest extends SystemTestCase } + private MetaprojectPE createMetaproject(String owner, String code) + { + PersonPE person = daoFactory.getPersonDAO().tryFindPersonByUserId(owner); + + MetaprojectPE metaproject = new MetaprojectPE(); + metaproject.setName(code); + metaproject.setOwner(person); + + daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, person); + + return metaproject; + } + + private IMetaprojectId createMetaprojectId(MetaprojectPE metaproject) + { + return new MetaprojectIdentifierId(metaproject.getOwner().getUserId(), metaproject.getCode()); + } + + private void createMetaprojectAssignment(MetaprojectPE metaproject, String experimentPermId, String samplePermId, String dataSetPermId) + { + MetaprojectAssignmentPE assignment = new MetaprojectAssignmentPE(); + assignment.setMetaproject(metaproject); + + if (experimentPermId != null) + { + ExperimentPE experiment = daoFactory.getExperimentDAO().tryGetByPermID(experimentPermId); + assignment.setExperiment(experiment); + } + if (samplePermId != null) + { + SamplePE sample = daoFactory.getSampleDAO().tryToFindByPermID(samplePermId); + assignment.setSample(sample); + } + if (dataSetPermId != null) + { + DataPE dataSet = daoFactory.getDataDAO().tryToFindDataSetByCode(dataSetPermId); + assignment.setDataSet(dataSet); + } + + daoFactory.getSessionFactory().getCurrentSession().save(assignment); + } + } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java index 77e613ab5844f3a9d872be5e2aaffdc1bd0a974b..457c0e10dd2ae31a71fb921e35a147f5ef2f224c 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DeletionTestCase.java @@ -42,7 +42,6 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridRowModels; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SessionContext; -import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDeletionDAO; import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer; import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; @@ -76,8 +75,6 @@ public class DeletionTestCase extends SystemTestCase private static final String REASON = "REASON"; - protected IDAOFactory daoFactory; - protected IDeletionDAO deletionDAO; private String sessionToken; @@ -98,12 +95,6 @@ public class DeletionTestCase extends SystemTestCase this.etlService = etlService; } - @Autowired - public final void setDaoFactory(IDAOFactory daoFactory) - { - this.daoFactory = daoFactory; - } - @BeforeMethod public void setUp() { @@ -412,8 +403,7 @@ public class DeletionTestCase extends SystemTestCase new ExperimentIdentifier("CISD", "DEFAULT", code); NewExperiment experiment = new NewExperiment(expIdentifier.toString(), "COMPOUND_HCS"); final GenericEntityProperty property = createDescriptionProperty(); - experiment.setProperties(new IEntityProperty[] - { property }); + experiment.setProperties(new IEntityProperty[] { property }); long id = etlService.registerExperiment(sessionToken, experiment); Experiment exp = commonServer.getExperimentInfo(sessionToken, new TechId(id)); @@ -453,8 +443,7 @@ public class DeletionTestCase extends SystemTestCase boolean shouldBeDeleted) { NewSample newSample = createNewSample(sampleCode); - newSample.setParentsOrNull(new String[] - { parentCode }); + newSample.setParentsOrNull(new String[] { parentCode }); createSample(experimentCode, newSample, shouldBeDeleted); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java index 5f608a22c4423eca49d3826f514cb56025ac6b7a..de1cea0df4893207f95640fbc3f0f50b071854d3 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java @@ -45,6 +45,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SessionContext; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.client.web.server.UploadedFilesBean; import ch.systemsx.cisd.openbis.generic.server.ICommonServerForInternalUse; +import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.server.util.TestInitializer; import ch.systemsx.cisd.openbis.generic.shared.Constants; import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer; @@ -82,7 +83,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.shared.IGenericServer; public abstract class SystemTestCase extends AbstractTransactionalTestNGSpringContextTests { private static final String SOURCE_TEST_CORE_PLUGINS = "sourceTest/core-plugins"; - + protected static final String SYSTEM_USER = "system"; protected static final String NOT_EXISTING_USER = "notexistinguser"; @@ -113,6 +114,8 @@ public abstract class SystemTestCase extends AbstractTransactionalTestNGSpringCo protected static final String SESSION_KEY = "session-key"; + protected IDAOFactory daoFactory; + protected ICommonServerForInternalUse commonServer; protected IGenericServer genericServer; @@ -152,6 +155,18 @@ public abstract class SystemTestCase extends AbstractTransactionalTestNGSpringCo contextProvider.setRequest(request); } + /** + * Sets <code>daoFactory</code>. + * <p> + * Will be automatically dependency injected by type. + * </p> + */ + @Autowired + public final void setDaoFactory(final IDAOFactory daoFactory) + { + this.daoFactory = daoFactory; + } + /** * Sets <code>commonServer</code>. * <p> 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 4895a5d732a694443cfe3f807d237464166b12d3..d06610e91943c90bba173a62cab38b53c0b8eb88 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 @@ -68,6 +68,10 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleParentWithDerived; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectAssignmentPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.systemtest.PropertyHistory; import ch.systemsx.cisd.openbis.systemtest.SystemTestCase; import ch.systemsx.cisd.openbis.systemtest.authorization.ProjectAuthorizationUser; @@ -136,6 +140,7 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase history.toString()); } + @SuppressWarnings("null") @Test public void testVocabularyAdditionAndReplacement() { @@ -748,9 +753,16 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase { String session = generalInformationService.tryToAuthenticateForAllServices(user.getUserId(), PASSWORD); - Metaproject metaproject = new Metaproject(); + // intentionally create a metaproject bypassing authorization as we want to + // concentrate on addToMetaproject method authorization here + + PersonPE owner = daoFactory.getPersonDAO().tryFindPersonByUserId(user.getUserId()); + + MetaprojectPE metaproject = new MetaprojectPE(); metaproject.setName("TEST_ADD_TO_METAPROJECT"); - metaproject = commonServer.registerMetaproject(session, metaproject); + metaproject.setOwner(owner); + + daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, owner); IMetaprojectId metaprojectId = new MetaprojectTechIdId(metaproject.getId()); @@ -778,17 +790,41 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase { String session = generalInformationService.tryToAuthenticateForAllServices(user.getUserId(), PASSWORD); - Metaproject metaproject = new Metaproject(); + // intentionally create a metaproject and an assignment bypassing authorization as we want to + // concentrate on removeFromMetaproject method authorization here + + PersonPE owner = daoFactory.getPersonDAO().tryFindPersonByUserId(user.getUserId()); + ExperimentPE experiment = daoFactory.getExperimentDAO().tryGetByPermID("201206190940555-1032"); // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST + + MetaprojectPE metaproject = new MetaprojectPE(); metaproject.setName("TEST_REMOVE_FROM_METAPROJECT"); - metaproject = commonServer.registerMetaproject(session, metaproject); + metaproject.setOwner(owner); + + MetaprojectAssignmentPE assignment = new MetaprojectAssignmentPE(); + assignment.setExperiment(experiment); + assignment.setMetaproject(metaproject); + + daoFactory.getMetaprojectDAO().createOrUpdateMetaproject(metaproject, owner); IMetaprojectId metaprojectId = new MetaprojectTechIdId(metaproject.getId()); MetaprojectAssignmentsIds assignments = new MetaprojectAssignmentsIds(); - assignments.addMaterial(new MaterialCodeAndTypeCodeId("VIRUS1", "VIRUS")); + assignments.addExperiment(new ExperimentIdentifierId("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST")); - generalInformationChangingService.addToMetaproject(session, metaprojectId, assignments); - generalInformationChangingService.removeFromMetaproject(session, metaprojectId, assignments); + if (user.isDisabledProjectUser()) + { + try + { + generalInformationChangingService.removeFromMetaproject(session, metaprojectId, assignments); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } else + { + generalInformationChangingService.removeFromMetaproject(session, metaprojectId, assignments); + } } @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) @@ -802,7 +838,17 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase "identifier\texperiment\tCOMMENT\n" + "/TEST-SPACE/PA_UPLOAD\t/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST\ttest comment\n"); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + try + { + generalInformationChangingService.registerSamples(session.getSessionID(), sampleType, SESSION_KEY, null); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { generalInformationChangingService.registerSamples(session.getSessionID(), sampleType, SESSION_KEY, null); } else @@ -829,7 +875,17 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase "identifier\tCOMMENT\n" + "/TEST-SPACE/FV-TEST\tupdated comment\n"); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) + { + try + { + generalInformationChangingService.updateSamples(session.getSessionID(), sampleType, SESSION_KEY, null); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } else if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) { generalInformationChangingService.updateSamples(session.getSessionID(), sampleType, SESSION_KEY, null); } else @@ -857,7 +913,21 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase + "/TEST-SPACE/PA_UPLOAD\t/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST\ttest comment\n"); // there are no checks on what has been uploaded before the uploaded data is actually used in the registration or update - generalInformationChangingService.uploadedSamplesInfo(session.getSessionID(), sampleType, SESSION_KEY); + + if (user.isDisabledProjectUser()) + { + try + { + generalInformationChangingService.uploadedSamplesInfo(session.getSessionID(), sampleType, SESSION_KEY); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } + } else + { + generalInformationChangingService.uploadedSamplesInfo(session.getSessionID(), sampleType, SESSION_KEY); + } } @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java index 9ef739bf6dcb02edac551681c593b3d6a31c8b6b..f63efd65e6798ff98a8ecbb0acb883bbc6f0a272 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java @@ -1922,7 +1922,7 @@ public class GeneralInformationServiceTest extends SystemTestCase { String url = generalInformationService.getDefaultPutDataStoreBaseURL(sessionToken); - assertEquals("", url); + assertEquals("http://localhost:8765", url); } @Test @@ -1932,7 +1932,7 @@ public class GeneralInformationServiceTest extends SystemTestCase generalInformationService.tryGetDataStoreBaseURL(sessionToken, "20081105092159111-1"); - assertEquals("", url); + assertEquals("http://localhost:8765", url); } @Test @@ -2168,15 +2168,28 @@ public class GeneralInformationServiceTest extends SystemTestCase SearchCriteria criteria = new SearchCriteria(); criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.PROJECT, "TEST-PROJECT")); - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - List<Experiment> experiments = generalInformationService.searchForExperiments(session, criteria); - assertEquals(1, experiments.size()); - assertEquals("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST", experiments.get(0).getIdentifier()); + try + { + generalInformationService.searchForExperiments(session, criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { List<Experiment> experiments = generalInformationService.searchForExperiments(session, criteria); - assertEquals(0, experiments.size()); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(1, experiments.size()); + assertEquals("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST", experiments.get(0).getIdentifier()); + } else + { + assertEquals(0, experiments.size()); + } } } @@ -2190,17 +2203,30 @@ public class GeneralInformationServiceTest extends SystemTestCase criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.SPACE, "TEST-SPACE")); criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "CELL_PLATE")); - List<Sample> samples = generalInformationService.searchForSamples(session, criteria); - - if (user.isInstanceUser() || user.isTestSpaceUser()) - { - assertEntities("[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/FV-TEST]", samples); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) + if (user.isDisabledProjectUser()) { - assertEntities("[/TEST-SPACE/FV-TEST]", samples); + try + { + generalInformationService.searchForSamples(session, criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEntities("[]", samples); + List<Sample> samples = generalInformationService.searchForSamples(session, criteria); + + if (user.isInstanceUser() || user.isTestSpaceUser()) + { + assertEntities("[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/FV-TEST]", samples); + } else if (user.isTestProjectUser()) + { + assertEntities("[/TEST-SPACE/FV-TEST]", samples); + } else + { + assertEntities("[]", samples); + } } } @@ -2214,17 +2240,30 @@ public class GeneralInformationServiceTest extends SystemTestCase criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.SPACE, "TEST-SPACE")); criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.TYPE, "CELL_PLATE")); - List<Sample> samples = generalInformationService.searchForSamples(session, criteria, EnumSet.of(SampleFetchOption.BASIC)); - - if (user.isInstanceUser() || user.isTestSpaceUser()) - { - assertEntities("[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/FV-TEST]", samples); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) + if (user.isDisabledProjectUser()) { - assertEntities("[/TEST-SPACE/FV-TEST]", samples); + try + { + generalInformationService.searchForSamples(session, criteria, EnumSet.of(SampleFetchOption.BASIC)); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEntities("[]", samples); + List<Sample> samples = generalInformationService.searchForSamples(session, criteria, EnumSet.of(SampleFetchOption.BASIC)); + + if (user.isInstanceUser() || user.isTestSpaceUser()) + { + assertEntities("[/TEST-SPACE/CP-TEST-4, /TEST-SPACE/FV-TEST]", samples); + } else if (user.isTestProjectUser()) + { + assertEntities("[/TEST-SPACE/FV-TEST]", samples); + } else + { + assertEntities("[]", samples); + } } } @@ -2310,29 +2349,38 @@ public class GeneralInformationServiceTest extends SystemTestCase { String session = generalInformationService.tryToAuthenticateForAllServices(user.getUserId(), PASSWORD); - List<Project> projects = generalInformationService.listProjects(session); - - if (user.isInstanceUser()) - { - assertEntities( - "[/CISD/DEFAULT, /CISD/NEMO, /CISD/NOE, /TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT, /TESTGROUP/TESTPROJ]", - projects); - } else if (user.isTestSpaceUser()) + if (user.isDisabledProjectUser()) { - assertEntities( - "[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", - projects); - } else if (user.isTestProjectUser() && user.hasPAEnabled()) - { - assertEntities( - "[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", - projects); - } else if (user.isTestGroupUser()) - { - assertEntities("[/TESTGROUP/TESTPROJ]", projects); + try + { + generalInformationService.listProjects(session); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEntities("[]", projects); + List<Project> projects = generalInformationService.listProjects(session); + + if (user.isInstanceUser()) + { + assertEntities( + "[/CISD/DEFAULT, /CISD/NEMO, /CISD/NOE, /TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT, /TESTGROUP/TESTPROJ]", + projects); + } else if (user.isTestSpaceUser()) + { + assertEntities("[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + } else if (user.isTestProjectUser()) + { + assertEntities("[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); + } else if (user.isTestGroupUser()) + { + assertEntities("[/TESTGROUP/TESTPROJ]", projects); + } else + { + assertEntities("[]", projects); + } } } @@ -2350,14 +2398,10 @@ public class GeneralInformationServiceTest extends SystemTestCase projects); } else if (user.isTestSpaceUser()) { - assertEntities( - "[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", - projects); + assertEntities("[/TEST-SPACE/NOE, /TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); } else if (user.isTestProjectUser() && user.hasPAEnabled()) { - assertEntities( - "[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", - projects); + assertEntities("[/TEST-SPACE/PROJECT-TO-DELETE, /TEST-SPACE/TEST-PROJECT]", projects); } else if (user.isTestGroupUser()) { assertEntities("[/TESTGROUP/TESTPROJ]", projects); @@ -3346,15 +3390,28 @@ public class GeneralInformationServiceTest extends SystemTestCase SearchCriteria criteria = new SearchCriteria(); criteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, "20120628092259000-41")); - List<DataSet> dataSets = generalInformationService.searchForDataSets(session, criteria); - - if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + if (user.isDisabledProjectUser()) { - assertEquals(1, dataSets.size()); - assertEquals("20120628092259000-41", dataSets.get(0).getCode()); + try + { + generalInformationService.searchForDataSets(session, criteria); + fail(); + } catch (AuthorizationFailureException e) + { + // expected + } } else { - assertEquals(0, dataSets.size()); + List<DataSet> dataSets = generalInformationService.searchForDataSets(session, criteria); + + if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser()) + { + assertEquals(1, dataSets.size()); + assertEquals("20120628092259000-41", dataSets.get(0).getCode()); + } else + { + assertEquals(0, dataSets.size()); + } } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/ProjectAuthorizationUser.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/ProjectAuthorizationUser.java index 622e9b847e7bab5e6852b6dd0f288c1de8b39eca..05f2fcd2e5d8a830a6d09f357c5a5c9cf6d36fe2 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/ProjectAuthorizationUser.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/ProjectAuthorizationUser.java @@ -76,6 +76,16 @@ public class ProjectAuthorizationUser this.isInstanceUser = isInstanceUser; } + public boolean isSpaceUser() + { + return isTestSpaceUser() || isTestGroupUser(); + } + + public boolean isProjectUser() + { + return isTestProjectUser(); + } + public boolean isTestGroupUser() { return isTestGroupUser; @@ -115,12 +125,27 @@ public class ProjectAuthorizationUser { this.isTestProjectUser = isTestProjectUser; } - + + public boolean isDisabledProjectUser() + { + return isProjectUser() && false == hasPAEnabled(); + } + + public boolean isEnabledProjectUser() + { + return isProjectUser() && hasPAEnabled(); + } + public boolean isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser() { return isInstanceUser() || isTestSpaceUser() || (isTestProjectUser() && hasPAEnabled()); } + public boolean isInstanceUserOrSpaceUserOrEnabledProjectUser() + { + return isInstanceUser() || isSpaceUser() || isEnabledProjectUser(); + } + @DataProvider(name = PROVIDER) public static Object[][] providerUsers() { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/validator/entity/EntityValidatorTestService.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/validator/entity/EntityValidatorTestService.java new file mode 100644 index 0000000000000000000000000000000000000000..bed33f218a7ddf181e75baa4547b98557d1f5984 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/validator/entity/EntityValidatorTestService.java @@ -0,0 +1,57 @@ +/* + * Copyright 2017 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.systemtest.authorization.validator.entity; + +import java.util.Collections; +import java.util.List; + +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.ReturnValueFilter; +import ch.systemsx.cisd.openbis.generic.server.authorization.annotation.RolesAllowed; +import ch.systemsx.cisd.openbis.generic.server.authorization.validator.EntityHistoryValidator; +import ch.systemsx.cisd.openbis.generic.server.authorization.validator.MatchingEntityValidator; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityHistory; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; +import ch.systemsx.cisd.openbis.generic.shared.dto.IAuthSessionProvider; + +/** + * @author pkupczyk + */ +@Component +public class EntityValidatorTestService +{ + + @Transactional + @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER }) + @ReturnValueFilter(validatorClass = EntityHistoryValidator.class) + public EntityHistory testEntityHistoryValidator(IAuthSessionProvider sessionProvider, EntityHistory history) + { + return history; + } + + @Transactional + @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER }) + @ReturnValueFilter(validatorClass = MatchingEntityValidator.class) + public List<MatchingEntity> testMatchingEntityValidator(IAuthSessionProvider sessionProvider, MatchingEntity matchingEntity) + { + return Collections.singletonList(matchingEntity); + } + +} diff --git a/openbis/sourceTest/sql/postgresql/168/018=data_store_services.tsv b/openbis/sourceTest/sql/postgresql/168/018=data_store_services.tsv new file mode 100644 index 0000000000000000000000000000000000000000..42f34786645814feead6d38be2f8b7f77b2259cc --- /dev/null +++ b/openbis/sourceTest/sql/postgresql/168/018=data_store_services.tsv @@ -0,0 +1 @@ +1 test_service test_label PROCESSING 1 \N diff --git a/openbis/sourceTest/sql/postgresql/168/019=data_stores.tsv b/openbis/sourceTest/sql/postgresql/168/019=data_stores.tsv index 8903eee67d11a8e3382f35e8224ed26e08fd3753..605f2370d5b5d59e104055885dca8c3a55427f93 100644 --- a/openbis/sourceTest/sql/postgresql/168/019=data_stores.tsv +++ b/openbis/sourceTest/sql/postgresql/168/019=data_stores.tsv @@ -1 +1 @@ -1 STANDARD 2008-11-05 09:18:00.622+01 2009-04-09 09:36:34.982+02 f \N 57F0FA8F-80AC-42AB-9C6A-AAADBCC37A3E +1 STANDARD http://localhost:8765 2008-11-05 09:18:00.622+01 2009-04-09 09:36:34.982+02 f \N 57F0FA8F-80AC-42AB-9C6A-AAADBCC37A3E diff --git a/openbis/sourceTest/sql/postgresql/168/034=filters.tsv b/openbis/sourceTest/sql/postgresql/168/034=filters.tsv new file mode 100644 index 0000000000000000000000000000000000000000..6e5a5828d13431cce59f0c168a2d5df0ee2c9ae0 --- /dev/null +++ b/openbis/sourceTest/sql/postgresql/168/034=filters.tsv @@ -0,0 +1 @@ +1 test_filter \N 2017-12-02 20:33:50.865931+01 1 2017-12-02 20:33:50.865931+01 test_expression t test_grid diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningExperimentValidator.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningExperimentValidator.java index db9ce324fbcb5392e002f66c9683cf6c48afdcfb..0e966c7834d7e8f027f82b5279942cac13dd7039 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningExperimentValidator.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/ScreeningExperimentValidator.java @@ -26,7 +26,7 @@ public final class ScreeningExperimentValidator extends AbstractValidator<Experi for (final RoleAssignmentPE roleAssignment : roleAssignments) { - if (roleAssignment.getSpace() == null && roleAssignment.getProject() == null) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel()) { // All roles on the db level allow full read access. // Note: Here we assume that we operate on _the only_ db instance (the home db)! diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/SpaceValidator.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/SpaceValidator.java index 75fd2a7d32ab05aa8c4bd1b9fffb0be3a551be78..9c92919783e6e8461ab45acf331232a5f7b4bca8 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/SpaceValidator.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/authorization/SpaceValidator.java @@ -44,7 +44,7 @@ abstract class SpaceValidator<T> extends AbstractValidator<T> final Set<RoleAssignmentPE> roleAssignments = person.getAllPersonRoles(); for (final RoleAssignmentPE roleAssignment : roleAssignments) { - if (roleAssignment.getSpace() == null && roleAssignment.getProject() == null) + if (roleAssignment.getRoleWithHierarchy().isInstanceLevel()) { // All roles on the db level allow full read access. // Note: Here we assume that we operate on _the only_ db instance (the home db)! diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/dataset/DataSetReferencePredicateSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/dataset/DataSetReferencePredicateSystemTest.java index ba65b0f011c53a336ecf6f715a3bbcd7d573a188..72ecc5b6f1e8df23e7decb271ea4a80fb64ed107 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/dataset/DataSetReferencePredicateSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/dataset/DataSetReferencePredicateSystemTest.java @@ -68,13 +68,25 @@ public class DataSetReferencePredicateSystemTest extends CommonPredicateScreenin @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No data set reference specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No data set reference specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentIdentifierPredicateSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentIdentifierPredicateSystemTest.java index f37f6e0df2c161c1bbee907eea277cab44ef9246..c86e0fd0a5286955c6e9398a182bd70ac31c945f 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentIdentifierPredicateSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentIdentifierPredicateSystemTest.java @@ -45,13 +45,25 @@ public abstract class ExperimentIdentifierPredicateSystemTest extends CommonPred @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No experiment specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No experiment specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateSystemTest.java index cb3affbf38275d384b19f873ce294b18214f45bd..19c38894c007ae6e3f4d70c2d0c823cff11b8548 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateSystemTest.java @@ -44,7 +44,13 @@ public abstract class ExperimentSearchCriteriaPredicateSystemTest extends Common @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithExperimentTechIdSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithExperimentTechIdSystemTest.java index aaf3e405b1c987e12a74419e155179c8d930f2f0..dd85f2d2e951d93539343782ed164e948092b9f5 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithExperimentTechIdSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithExperimentTechIdSystemTest.java @@ -54,7 +54,13 @@ public class ExperimentSearchCriteriaPredicateWithExperimentTechIdSystemTest ext @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertUserFailureExceptionThatExperimentDoesNotExist(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertUserFailureExceptionThatExperimentDoesNotExist(t); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithProjectIdentifierSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithProjectIdentifierSystemTest.java index f7b6eae04a6708b734d6249b78593e3bc5176577..01a4f99278d0f8253cd8e10fe09358cced205b0e 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithProjectIdentifierSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/experiment/ExperimentSearchCriteriaPredicateWithProjectIdentifierSystemTest.java @@ -50,7 +50,10 @@ public class ExperimentSearchCriteriaPredicateWithProjectIdentifierSystemTest ex @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser()) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser()) { assertNoException(t); } else diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateSystemTest.java index efa65c1a515cd4cbff01591bc533da9941d59c0d..0bc12af6b0163435a266746e65167faae06776c9 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateSystemTest.java @@ -51,7 +51,13 @@ public abstract class PlateIdentifierPredicateSystemTest extends CommonPredicate @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No plate identifier specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No plate identifier specified."); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPermIdSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPermIdSystemTest.java index 028842fb810548d6d6078f6c3919b7bd5efa86fd..08d43ed8e90aaf2af1dd401fe4fdea6991d4e130 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPermIdSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPermIdSystemTest.java @@ -49,7 +49,13 @@ public class PlateIdentifierPredicateWithPermIdSystemTest extends PlateIdentifie @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPlateCodeAndSpaceCodeSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPlateCodeAndSpaceCodeSystemTest.java index bea47d0105fbf8c45411c9e4b565622e2439122e..559fa88b9126beeeae578b2a8da30c6b68211239 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPlateCodeAndSpaceCodeSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/PlateIdentifierPredicateWithPlateCodeAndSpaceCodeSystemTest.java @@ -49,7 +49,10 @@ public class PlateIdentifierPredicateWithPlateCodeAndSpaceCodeSystemTest extends @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateSystemTest.java index 5815859bce465464cc233d8cd8b3fc6f01fbd484..40b21abba55bc89c6ec5c56ff75a76c0aa6919e6 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateSystemTest.java @@ -57,13 +57,25 @@ public abstract class ScreeningPlateListReadOnlyPredicateSystemTest extends Comm @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, NullPointerException.class, null); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, NullPointerException.class, null); + } } @Override public void assertWithNullCollection(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No plate specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No plate specified."); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPermIdSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPermIdSystemTest.java index b92f0b060be2f0d4c03196b9c83043c6519dc4c1..c6406989f02ed258d0db647f9a21ca56f028e39d 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPermIdSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPermIdSystemTest.java @@ -49,7 +49,13 @@ public class ScreeningPlateListReadOnlyPredicateWithPermIdSystemTest extends Scr @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertNoException(t); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertNoException(t); + } } }; } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPlateCodeAndSpaceCodeSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPlateCodeAndSpaceCodeSystemTest.java index d1debbaac1b1c53b446cac1cd0b42715b51c02ae..43f9a68b33165cdb84efdaa2a880e9755d76386a 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPlateCodeAndSpaceCodeSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/ScreeningPlateListReadOnlyPredicateWithPlateCodeAndSpaceCodeSystemTest.java @@ -49,7 +49,10 @@ public class ScreeningPlateListReadOnlyPredicateWithPlateCodeAndSpaceCodeSystemT @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param)) { assertNoException(t); } else diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/WellIdentifierPredicateSystemTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/WellIdentifierPredicateSystemTest.java index 3577bdddf0803ad11052a23996a25b8cc9684082..ecc4e3cfa816a0817c01d08a4ddf84c0c7fab9c3 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/WellIdentifierPredicateSystemTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/authorization/predicate/sample/WellIdentifierPredicateSystemTest.java @@ -68,13 +68,25 @@ public class WellIdentifierPredicateSystemTest extends CommonPredicateScreeningS @Override public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, UserFailureException.class, "No well identifier specified."); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, UserFailureException.class, "No well identifier specified."); + } } @Override public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param) { - assertException(t, AuthorizationFailureException.class, ".*There is no sample with perm id 'IDONTEXIST'.*"); + if (user.isDisabledProjectUser()) + { + assertAuthorizationFailureExceptionThatNoRoles(t); + } else + { + assertException(t, AuthorizationFailureException.class, ".*There is no sample with perm id 'IDONTEXIST'.*"); + } } }; }