From 8cf92903963d2d4f6bd84a7cb5a1c028f0dad9a4 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 20 Feb 2017 11:18:25 +0000
Subject: [PATCH] SSDM-4824: Forward port new tests in EntityOperationTest also
 to TRUNK (r37775)

SVN: 37776
---
 .../systemtest/EntityOperationTest.java       | 55 +++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java
index ffb017660ca..4dfbf138922 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java
@@ -72,6 +72,8 @@ public class EntityOperationTest extends SystemTestCase
 
     private static final String SIMPLE_USER = PREFIX + "SIMPLE";
 
+    private static final String SPACE_OBSERVER_USER = PREFIX + "OBSERVER";
+
     private static final String SPACE_ADMIN_USER = PREFIX + "SPACE";
 
     private static final String AUTHORIZATION_GROUP = PREFIX + "GROUP";
@@ -91,6 +93,7 @@ public class EntityOperationTest extends SystemTestCase
         assignSpaceRole(registerPerson(SPACE_ETL_SERVER_FOR_A), RoleCode.ETL_SERVER, SPACE_A);
         assignSpaceRole(registerPerson(SPACE_ETL_SERVER_FOR_B), RoleCode.ETL_SERVER, SPACE_B);
         assignSpaceRole(registerPerson(SPACE_ADMIN_USER), RoleCode.ADMIN, SPACE_A);
+        assignSpaceRole(registerPerson(SPACE_OBSERVER_USER), RoleCode.OBSERVER, SPACE_A);
         assignInstanceRole(registerPerson(INSTANCE_ADMIN), RoleCode.ADMIN);
         assignInstanceRole(registerPerson(INSTANCE_ETL_SERVER), RoleCode.ETL_SERVER);
 
@@ -715,6 +718,58 @@ public class EntityOperationTest extends SystemTestCase
         assertEquals("[COMMENT: my data]", dataSet.getProperties().toString());
     }
 
+    @Test
+    public void testCreateDataSetAsSpaceAdmin()
+    {
+        String sessionToken = authenticateAs(INSTANCE_ETL_SERVER);
+        String dataSetCode = "DS-1";
+        AtomicEntityOperationDetails eo =
+                new EntityOperationBuilder()
+                .user(SPACE_ADMIN_USER)
+                .dataSet(
+                        new DataSetBuilder()
+                        .code(dataSetCode)
+                        .type("HCS_IMAGE")
+                        .store(new DataStoreBuilder("STANDARD").getStore())
+                        .fileFormat("XML")
+                        .location("a/b/c")
+                        .property("COMMENT", "my data")
+                        .experiment(new ExperimentBuilder().identifier("/CISD/NEMO/EXP1").getExperiment())
+                        .getDataSet()).create();
+        
+        AtomicEntityOperationResult result = etlService.performEntityOperations(sessionToken, eo);
+        
+        assertEquals(1, result.getDataSetsCreatedCount());
+        AbstractExternalData dataSet = etlService.tryGetDataSet(sessionToken, dataSetCode);
+
+        assertEquals(dataSetCode, dataSet.getCode());
+        assertEquals("HCS_IMAGE", dataSet.getDataSetType().getCode());
+        assertEquals("[COMMENT: my data]", dataSet.getProperties().toString());
+    }
+
+    @Test
+    public void testCreateDataSetAsSpaceObserverThrowsAuthorizationFailure()
+    {
+        String sessionToken = authenticateAs(INSTANCE_ETL_SERVER);
+        String dataSetCode = "DS-1";
+        AtomicEntityOperationDetails eo =
+                new EntityOperationBuilder()
+                .user(SPACE_OBSERVER_USER)
+                .dataSet(
+                        new DataSetBuilder()
+                        .code(dataSetCode)
+                        .type("UNKNOWN")
+                        .store(new DataStoreBuilder("STANDARD").getStore())
+                        .fileFormat("XML")
+                        .location("a/b/c")
+                        .experiment(new ExperimentBuilder().identifier("/CISD/NEMO/EXP1").getExperiment())
+                        .getDataSet()).create();
+
+        performFailingEntityOperations(sessionToken, eo, "Authorization failure: ERROR: \"None of method roles "
+                + "'[SPACE_USER, SPACE_POWER_USER, SPACE_ADMIN, INSTANCE_ADMIN, SPACE_ETL_SERVER, INSTANCE_ETL_SERVER]' "
+                + "could be found in roles of user 'EO_OBSERVER'.\".");
+    }
+    
     @Test
     public void testCreateDataSetAsSpaceETLServerThrowsAuthorizationFailure()
     {
-- 
GitLab