From b305c83f056009e19f0fbc70e87bf25974251c53 Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Thu, 23 Feb 2017 15:34:25 +0000 Subject: [PATCH] SSDM-4824 : V3 Roles bugfix, operation executions tests. SVN: 37814 --- .../systemtest/asapi/v3/AbstractTest.java | 19 ++++++---- .../v3/DeleteOperationExecutionTest.java | 29 +++++++++++++- .../v3/UpdateOperationExecutionTest.java | 38 ++++++++++++++++++- .../sql/postgresql/159/045=persons.tsv | 3 +- .../postgresql/159/052=role_assignments.tsv | 3 +- 5 files changed, 81 insertions(+), 11 deletions(-) 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 9e2810d1772..07861d11b78 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 @@ -128,6 +128,8 @@ public class AbstractTest extends SystemTestCase protected static final String TEST_GROUP_OBSERVER = "observer"; + protected static final String TEST_INSTANCE_OBSERVER = "instance_observer"; + protected static final String TEST_OBSERVER_CISD = "observer_cisd"; protected static final String TEST_GROUP_POWERUSER = "poweruser"; @@ -685,14 +687,17 @@ public class AbstractTest extends SystemTestCase assertNotNull(e.getCause()); assertEquals(e.getCause().getClass(), UnauthorizedObjectAccessException.class); - List<? extends IObjectId> objectIds = ((UnauthorizedObjectAccessException) e.getCause()).getObjectIds(); - if (objectIds != null) - { - assertEquals(true, objectIds.contains(expectedObjectId)); - } else + if (expectedObjectId != null) { - IObjectId objectId = ((UnauthorizedObjectAccessException) e.getCause()).getObjectId(); - assertEquals(objectId, expectedObjectId); + List<? extends IObjectId> objectIds = ((UnauthorizedObjectAccessException) e.getCause()).getObjectIds(); + if (objectIds != null) + { + assertEquals(true, objectIds.contains(expectedObjectId)); + } else + { + IObjectId objectId = ((UnauthorizedObjectAccessException) e.getCause()).getObjectId(); + assertEquals(objectId, expectedObjectId); + } } assertExceptionContext(e, expectedContextPattern); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteOperationExecutionTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteOperationExecutionTest.java index 555677df731..b3b62831933 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteOperationExecutionTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/DeleteOperationExecutionTest.java @@ -37,7 +37,6 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOpt import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.get.GetSpacesOperation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.systemsx.cisd.common.action.IDelegatedAction; - import junit.framework.Assert; /** @@ -92,6 +91,34 @@ public class DeleteOperationExecutionTest extends AbstractOperationExecutionTest }, options.getExecutionId()); } + @Test + public void testDeleteWithOperationExecutionUnauthorizedInstanceObserver() + { + String sessionTokenAdmin = v3api.login(TEST_USER, PASSWORD); + + final SynchronousOperationExecutionOptions options = new SynchronousOperationExecutionOptions(); + options.setExecutionId(new OperationExecutionPermId()); + + List<? extends IOperation> operations = + Arrays.asList(new GetSpacesOperation(Arrays.asList(new SpacePermId("CISD")), new SpaceFetchOptions())); + + v3api.executeOperations(sessionTokenAdmin, operations, options); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionTokenUser = v3api.login(TEST_INSTANCE_OBSERVER, PASSWORD); + + OperationExecutionDeletionOptions deletionOptions = new OperationExecutionDeletionOptions(); + deletionOptions.setReason("test reason"); + + v3api.deleteOperationExecutions(sessionTokenUser, Arrays.asList(options.getExecutionId()), deletionOptions); + } + }, options.getExecutionId()); + } + @Test public void testDeleteWithOperationExecutionNonexistent() { diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateOperationExecutionTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateOperationExecutionTest.java index bfe15c69eca..91a82a3bf9d 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateOperationExecutionTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateOperationExecutionTest.java @@ -43,7 +43,6 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.get.GetSpacesOperationResu import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.ISpaceId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; import ch.systemsx.cisd.common.action.IDelegatedAction; - import junit.framework.Assert; /** @@ -275,4 +274,41 @@ public class UpdateOperationExecutionTest extends AbstractOperationExecutionTest Assert.assertEquals(update.getDescription().getValue(), executionAfter.getDescription()); } + @Test + public void testUpdateWithDescriptionWithInstanceObserver() + { + String sessionToken = v3api.login(TEST_USER, PASSWORD); + + final SynchronousOperationExecutionOptions options = new SynchronousOperationExecutionOptions(); + options.setDescription("initial description"); + options.setExecutionId(new OperationExecutionPermId()); + + List<? extends IOperation> operations = + Arrays.asList(new GetSpacesOperation(Arrays.asList(new SpacePermId("CISD")), new SpaceFetchOptions())); + + v3api.executeOperations(sessionToken, operations, options); + + assertUnauthorizedObjectAccessException(new IDelegatedAction() + { + @Override + public void execute() + { + String sessionTokenInstance = v3api.login(TEST_INSTANCE_OBSERVER, PASSWORD); + OperationExecution executionBefore = + getExecution(sessionTokenInstance, options.getExecutionId(), new OperationExecutionFetchOptions()); + Assert.assertEquals(options.getDescription(), executionBefore.getDescription()); + + OperationExecutionUpdate update = new OperationExecutionUpdate(); + update.setExecutionId(options.getExecutionId()); + update.setDescription("updated description"); + + v3api.updateOperationExecutions(sessionTokenInstance, Arrays.asList(update)); + + OperationExecution executionAfter = + getExecution(sessionTokenInstance, options.getExecutionId(), new OperationExecutionFetchOptions()); + Assert.assertEquals(update.getDescription().getValue(), executionAfter.getDescription()); + } + }, options.getExecutionId()); + } + } diff --git a/openbis/sourceTest/sql/postgresql/159/045=persons.tsv b/openbis/sourceTest/sql/postgresql/159/045=persons.tsv index 7111c207abe..a61c959e37c 100644 --- a/openbis/sourceTest/sql/postgresql/159/045=persons.tsv +++ b/openbis/sourceTest/sql/postgresql/159/045=persons.tsv @@ -9,4 +9,5 @@ 9 John Power User poweruser poweruser@o.o 1 2008-11-05 09:18:10.581+01 \N \\xaced00057372004163682e73797374656d73782e636973642e6f70656e6269732e67656e657269632e7368617265642e62617369632e64746f2e446973706c617953657474696e677300000000000000010200035a001575736557696c64636172645365617263684d6f64654c000e636f6c756d6e53657474696e677374000f4c6a6176612f7574696c2f4d61703b4c000f73656374696f6e53657474696e677371007e0001787001737200176a6176612e7574696c2e4c696e6b6564486173684d617034c04e5c106cc0fb0200015a000b6163636573734f72646572787200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000078007371007e00043f4000000000000c7708000000100000000078 t 10 John Admin admin admin@o.o 1 2008-11-05 09:18:10.581+01 \N \\xaced00057372004163682e73797374656d73782e636973642e6f70656e6269732e67656e657269632e7368617265642e62617369632e64746f2e446973706c617953657474696e677300000000000000010200035a001575736557696c64636172645365617263684d6f64654c000e636f6c756d6e53657474696e677374000f4c6a6176612f7574696c2f4d61703b4c000f73656374696f6e53657474696e677371007e0001787001737200176a6176612e7574696c2e4c696e6b6564486173684d617034c04e5c106cc0fb0200015a000b6163636573734f72646572787200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000078007371007e00043f4000000000000c7708000000100000000078 t 11 John Homeless homeless admin@o.o \N 2008-11-05 09:18:10.581+01 \N \\xaced00057372004163682e73797374656d73782e636973642e6f70656e6269732e67656e657269632e7368617265642e62617369632e64746f2e446973706c617953657474696e677300000000000000010200035a001575736557696c64636172645365617263684d6f64654c000e636f6c756d6e53657474696e677374000f4c6a6176612f7574696c2f4d61703b4c000f73656374696f6e53657474696e677371007e0001787001737200176a6176612e7574696c2e4c696e6b6564486173684d617034c04e5c106cc0fb0200015a000b6163636573734f72646572787200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000078007371007e00043f4000000000000c7708000000100000000078 t -12 John ObserverCISD observer_cisd observer_cisd@o.o 1 2008-11-05 09:18:10.581+01 \N \\xaced00057372004163682e73797374656d73782e636973642e6f70656e6269732e67656e657269632e7368617265642e62617369632e64746f2e446973706c617953657474696e677300000000000000010200035a001575736557696c64636172645365617263684d6f64654c000e636f6c756d6e53657474696e677374000f4c6a6176612f7574696c2f4d61703b4c000f73656374696f6e53657474696e677371007e0001787001737200176a6176612e7574696c2e4c696e6b6564486173684d617034c04e5c106cc0fb0200015a000b6163636573734f72646572787200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000078007371007e00043f4000000000000c7708000000100000000078 t \ No newline at end of file +12 John ObserverCISD observer_cisd observer_cisd@o.o 1 2008-11-05 09:18:10.581+01 \N \\xaced00057372004163682e73797374656d73782e636973642e6f70656e6269732e67656e657269632e7368617265642e62617369632e64746f2e446973706c617953657474696e677300000000000000010200035a001575736557696c64636172645365617263684d6f64654c000e636f6c756d6e53657474696e677374000f4c6a6176612f7574696c2f4d61703b4c000f73656374696f6e53657474696e677371007e0001787001737200176a6176612e7574696c2e4c696e6b6564486173684d617034c04e5c106cc0fb0200015a000b6163636573734f72646572787200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000078007371007e00043f4000000000000c7708000000100000000078 t +13 John InstanceObserver instance_observer instance_observer@o.o 1 2008-11-05 09:18:10.581+01 \N \\xaced00057372004163682e73797374656d73782e636973642e6f70656e6269732e67656e657269632e7368617265642e62617369632e64746f2e446973706c617953657474696e677300000000000000010200035a001575736557696c64636172645365617263684d6f64654c000e636f6c756d6e53657474696e677374000f4c6a6176612f7574696c2f4d61703b4c000f73656374696f6e53657474696e677371007e0001787001737200176a6176612e7574696c2e4c696e6b6564486173684d617034c04e5c106cc0fb0200015a000b6163636573734f72646572787200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000078007371007e00043f4000000000000c7708000000100000000078 t diff --git a/openbis/sourceTest/sql/postgresql/159/052=role_assignments.tsv b/openbis/sourceTest/sql/postgresql/159/052=role_assignments.tsv index 906e0fdb1b1..34dad3b5286 100644 --- a/openbis/sourceTest/sql/postgresql/159/052=role_assignments.tsv +++ b/openbis/sourceTest/sql/postgresql/159/052=role_assignments.tsv @@ -14,4 +14,5 @@ 14 POWER_USER 1 11 2 2008-11-05 09:18:11.471+01 \N 15 OBSERVER 1 12 2 2008-11-05 09:18:11.471+01 \N 16 ADMIN 2 12 2 2008-11-05 09:18:11.471+01 \N -17 ADMIN 2 11 2 2008-11-05 09:18:11.471+01 \N \ No newline at end of file +17 ADMIN 2 11 2 2008-11-05 09:18:11.471+01 \N +18 OBSERVER \N 13 2 2008-11-05 09:18:11.471+01 \N \ No newline at end of file -- GitLab