From a0ea0ca2af41e2dff02780d08c36d0e7ef7c5095 Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Mon, 6 Feb 2017 14:23:37 +0000 Subject: [PATCH] SSDM-4686 : v3 roles bug - tests for create/update/delete projects, experiments, samples and datasets SVN: 37694 --- .../asapi/v3/CreateDataSetTest.java | 33 +++++++++++++++++-- .../asapi/v3/CreateExperimentTest.java | 25 +++++++++++++- .../asapi/v3/CreateProjectTest.java | 21 ++++++++++++ .../systemtest/asapi/v3/CreateSampleTest.java | 25 +++++++++++++- .../asapi/v3/DeleteDataSetTest.java | 2 +- .../asapi/v3/DeleteExperimentTest.java | 2 +- .../asapi/v3/DeleteProjectTest.java | 2 +- .../systemtest/asapi/v3/DeleteSampleTest.java | 2 +- .../asapi/v3/UpdateDataSetTest.java | 20 +++++++++++ .../asapi/v3/UpdateExperimentTest.java | 21 ++++++++++++ .../asapi/v3/UpdateProjectTest.java | 21 +++++++++++- .../systemtest/asapi/v3/UpdateSampleTest.java | 27 +++++++++++++-- .../postgresql/156/051=role_assignments.tsv | 2 +- 13 files changed, 190 insertions(+), 13 deletions(-) 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 8d0fb577928..cc044907126 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 @@ -90,6 +90,37 @@ public class CreateDataSetTest extends AbstractDataSetTest assertDataSetsReindexed(state, permIds.get(0).getPermId()); } + @Test + public void testCreateDSWithAdminUserInAnotherSpace() + { + final DataSetPermId permId = new DataSetPermId("NO_SHALL_CREATE"); + + assertUserFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + + PhysicalDataCreation physicalCreation = new PhysicalDataCreation(); + physicalCreation.setLocation("test/location/" + permId.getPermId()); + physicalCreation.setFileFormatTypeId(new FileFormatTypePermId("TIFF")); + physicalCreation.setLocatorTypeId(new RelativeLocationLocatorTypePermId()); + physicalCreation.setStorageFormatId(new ProprietaryStorageFormatPermId()); + + DataSetCreation creation = new DataSetCreation(); + creation.setCode(permId.getPermId()); + creation.setTypeId(new EntityTypePermId("UNKNOWN")); + creation.setExperimentId(new ExperimentIdentifier("/TEST-SPACE/TEST-PROJECT/EXP_SPACE_TEST")); + creation.setDataStoreId(new DataStorePermId("STANDARD")); + creation.setPhysicalData(physicalCreation); + creation.setCreationId(new CreationId(permId.getPermId())); + + v3api.createDataSets(sessionToken, Collections.singletonList(creation)); + } + }, "Data set creation can be only executed by a system user or a user with at least SPACE_ETL_SERVER role"); + } + @Test public void testCreateWithNonAutogeneratedCodeNull() { @@ -962,8 +993,6 @@ public class CreateDataSetTest extends AbstractDataSetTest } }, "Data set creation can be only executed by a system user or a user with at least SPACE_ETL_SERVER role"); } - - @Test public void testCreateWithUserEtlServer() 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 1ecfe9c4b51..e442e1e008d 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 @@ -22,6 +22,7 @@ import static org.testng.Assert.assertTrue; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; @@ -36,6 +37,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.IProjectId; @@ -48,7 +50,6 @@ import ch.ethz.sis.openbis.systemtest.asapi.v3.index.ReindexingState; import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewETPTAssignment; - import junit.framework.Assert; /** @@ -94,6 +95,28 @@ public class CreateExperimentTest extends AbstractExperimentTest }, "Code cannot be empty"); } + @Test + public void testCreateWithAdminUserInAnotherSpace() + { + final String code = "WILL-FAIL"; + final ExperimentIdentifier identifier = new ExperimentIdentifier("/TEST-SPACE/NOE/" + code); + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + + final ExperimentCreation experiment = new ExperimentCreation(); + experiment.setTypeId(new EntityTypePermId("SIRNA_HCS")); + experiment.setProjectId(new ProjectIdentifier("/TEST-SPACE/NOE")); + experiment.setCode(code); + + v3api.createExperiments(sessionToken, Collections.singletonList(experiment)); + } + }, identifier); + } + @Test public void testCreateWithCodeExisting() { 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 bfd8df35022..904d1bee66d 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 @@ -19,6 +19,7 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; import static org.testng.Assert.assertEquals; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -140,6 +141,26 @@ public class CreateProjectTest extends AbstractTest }, spaceId); } + @Test + public void testCreateProjectWithAdminUserInAnotherSpace() + { + + final ISpaceId spaceId = new SpacePermId("TEST-SPACE"); + final ProjectCreation project = new ProjectCreation(); + project.setCode("TEST_PROJECT_FAIL"); + project.setSpaceId(spaceId); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + v3api.createProjects(sessionToken, Collections.singletonList(project)); + } + }, spaceId); + } + @Test public void testCreateWithSpaceNonexistent() { 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 ee9faa8a9cb..d80c1b2f63d 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 @@ -53,7 +53,6 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.batch.Batch; import ch.ethz.sis.openbis.systemtest.asapi.v3.index.ReindexingState; import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.common.test.AssertionUtil; - import junit.framework.Assert; /** @@ -122,6 +121,30 @@ public class CreateSampleTest extends AbstractSampleTest AssertionUtil.assertCollectionSize(sampleWithAutogeneratedCode, 2); } + @Test + public void testCreateSampleWithAdminUserInAnotherSpace() + { + final String code = "TEST_TO_FAIL"; + final SampleIdentifier identifier = new SampleIdentifier("/TEST-SPACE/" + code); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + + SampleCreation creation = new SampleCreation(); + creation.setCode(code); + creation.setTypeId(new EntityTypePermId("CELL_PLATE")); + creation.setSpaceId(new SpacePermId("TEST-SPACE")); + creation.setCreationId(new CreationId("creation " + code)); + + v3api.createSamples(sessionToken, Collections.singletonList(creation)); + } + }, identifier); + } + @Test public void testCreateWithCodeExisting() { 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 ffcb34fb3fd..548f9d15c59 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 @@ -119,7 +119,7 @@ public class DeleteDataSetTest extends AbstractDeletionTest } @Test - public void testDeleteDSWithPowerUserInAnotherSpace() + public void testDeleteDSWithAdminUserInAnotherSpace() { final DataSetPermId permId = new DataSetPermId("20120619092259000-22"); 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 2853224f1ec..d77f8af4ca6 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 @@ -165,7 +165,7 @@ public class DeleteExperimentTest extends AbstractDeletionTest } @Test - public void testExperimentWithPowerUserInAnotherSpace() + public void testExperimentWithAdminUserInAnotherSpace() { final ExperimentPermId permId = new ExperimentPermId("200902091255058-1037"); 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 7c4361b4c74..443dad3580c 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 @@ -104,7 +104,7 @@ public class DeleteProjectTest extends AbstractDeletionTest } @Test - public void testDeleteProjectWithPowerUserInAnotherSpace() + public void testDeleteProjectWithAdminUserInAnotherSpace() { final ProjectPermId permId = new ProjectPermId("20120814110011738-105"); 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 427077d5b12..a552e91f276 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 @@ -57,7 +57,7 @@ public class DeleteSampleTest extends AbstractDeletionTest } @Test - public void testDeleteSampleWithPowerUserInAnotherSpace() + public void testDeleteSampleWithAdminUserInAnotherSpace() { final SamplePermId permId = new SamplePermId("200902091250077-1060"); 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 11bb12ad8cc..d742a26f9c5 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 @@ -106,6 +106,26 @@ public class UpdateDataSetTest extends AbstractSampleTest assertEquals(result.getProperties().get("COMMENT"), "Updated description"); } + @Test + public void testUpdateDSWithAdminUserInAnotherSpace() + { + final DataSetPermId permId = new DataSetPermId("20120619092259000-22"); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + + DataSetUpdate update = new DataSetUpdate(); + update.setDataSetId(permId); + + v3api.updateDataSets(sessionToken, Collections.singletonList(update)); + } + }, permId); + } + @Test public void testUpdateWithDataSetNonexistent() { 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 8e32bbb16bd..7e0cb3c6859 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 @@ -20,6 +20,7 @@ import static org.testng.Assert.assertEquals; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -692,6 +693,26 @@ public class UpdateExperimentTest extends AbstractExperimentTest }, tagId); } + @Test + public void testUpdateWithAdminUserInAnotherSpace() + { + final ExperimentPermId permId = new ExperimentPermId("200902091255058-1037"); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + + final ExperimentUpdate update = new ExperimentUpdate(); + update.setExperimentId(permId); + + v3api.updateExperiments(sessionToken, Collections.singletonList(update)); + } + }, permId); + } + private ExperimentPermId createExperimentWithoutAttachments() { final String sessionToken = v3api.login(TEST_USER, PASSWORD); 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 b5996314cf3..f266e3eecdc 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 @@ -16,10 +16,11 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; -import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -85,6 +86,24 @@ public class UpdateProjectTest extends AbstractTest }, projectId); } + @Test + public void testUpdateProjectWithAdminUserInAnotherSpace() + { + final IProjectId projectId = new ProjectIdentifier("/TEST-SPACE/TEST-PROJECT"); + final ProjectUpdate update = new ProjectUpdate(); + update.setProjectId(projectId); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + v3api.updateProjects(sessionToken, Collections.singletonList(update)); + } + }, projectId); + } + @Test public void testUpdateWithProjectNonexistent() { 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 ace8542abf8..af3540354de 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 @@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -744,7 +745,8 @@ public class UpdateSampleTest extends AbstractSampleTest { v3api.updateSamples(sessionToken, Arrays.asList(update)); } - }, "/CISD/A01:CL1 (perm id: 200811050919915-8) cannot be it's own container", patternContains("verifying (1/1)", toDblQuotes("'identifier' : '/CISD/A01:CL1'"))); + }, "/CISD/A01:CL1 (perm id: 200811050919915-8) cannot be it's own container", + patternContains("verifying (1/1)", toDblQuotes("'identifier' : '/CISD/A01:CL1'"))); } @Test @@ -920,8 +922,8 @@ public class UpdateSampleTest extends AbstractSampleTest { v3api.updateSamples(sessionToken, Arrays.asList(update)); } - }, "/CISD/CL1:A01 (perm id: 200811050919915-9) cannot be it's own container", - patternContains("verifying (1/1)", toDblQuotes("'identifier' : '/CISD/CL1:A01'"))); + }, "/CISD/CL1:A01 (perm id: 200811050919915-9) cannot be it's own container", + patternContains("verifying (1/1)", toDblQuotes("'identifier' : '/CISD/CL1:A01'"))); } @Test @@ -1246,6 +1248,25 @@ public class UpdateSampleTest extends AbstractSampleTest patternContains("verifying (1/1)", toDblQuotes("'identifier' : '/CISD/3V-125'"))); } + @Test + public void testUpdateSampleWithAdminUserInAnotherSpace() + { + final SamplePermId permId = new SamplePermId("200902091250077-1060"); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionToken = v3api.login(TEST_ROLE_V3, PASSWORD); + + final SampleUpdate update = new SampleUpdate(); + update.setSampleId(permId); + v3api.updateSamples(sessionToken, Collections.singletonList(update)); + } + }, permId); + } + @Test public void testUpdateWithAttachmentsSetAddRemove() { diff --git a/openbis/sourceTest/sql/postgresql/156/051=role_assignments.tsv b/openbis/sourceTest/sql/postgresql/156/051=role_assignments.tsv index 2ff08b28cdf..36836f23cca 100644 --- a/openbis/sourceTest/sql/postgresql/156/051=role_assignments.tsv +++ b/openbis/sourceTest/sql/postgresql/156/051=role_assignments.tsv @@ -8,4 +8,4 @@ 8 POWER_USER 1 6 2 2008-11-05 09:18:11.471+01 \N 9 ADMIN 3 7 2 2008-11-05 09:18:11.471+01 \N 10 OBSERVER 3 8 2 2008-11-05 09:18:11.471+01 \N -11 POWER_USER 1 8 2 2008-11-05 09:18:11.471+01 \N +11 ADMIN 1 8 2 2008-11-05 09:18:11.471+01 \N -- GitLab