From e643a846cd1d78ac3562d16e46ac9b70e9b2b4e3 Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Mon, 18 Dec 2017 09:07:13 +0000
Subject: [PATCH] SSDM-6019 : Project Authorization - modify @RolesAllowed
 annotations at non-entity related methods - fix openbis tests

SVN: 39050
---
 .../openbis/systemtest/CommonServerTest.java  | 63 ++++++++++++++++---
 .../DataStoreServiceRegistrationTest.java     |  4 +-
 2 files changed, 56 insertions(+), 11 deletions(-)

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 d5ce6d67189..17779ab96af 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java
@@ -45,6 +45,7 @@ import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.IEntityPropertyTypeDAO;
 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;
@@ -2292,8 +2293,16 @@ public class CommonServerTest extends SystemTestCase
 
         if (user.isInstanceUserOrSpaceUserOrEnabledProjectUser())
         {
+            int count = 0;
+            for (ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind entityKind : ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind
+                    .values())
+            {
+                IEntityPropertyTypeDAO entityPropertyTypeDAO = daoFactory.getEntityPropertyTypeDAO(entityKind);
+                count += entityPropertyTypeDAO.listEntityPropertyTypes().size();
+            }
+
             List<EntityTypePropertyType<?>> types = commonServer.listEntityTypePropertyTypes(session.getSessionToken());
-            assertEquals(types.size(), 62);
+            assertEquals(types.size(), count);
         } else
         {
             try
@@ -2872,8 +2881,8 @@ public class CommonServerTest extends SystemTestCase
 
         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
+        createMetaprojectAssignment(metaproject, "201206190940555-1032", null, null); // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST
 
         if (user.isDisabledProjectUser())
         {
@@ -2891,6 +2900,15 @@ public class CommonServerTest extends SystemTestCase
                     commonServer.getMetaprojectAssignments(session.getSessionToken(), new MetaprojectIdentifierId(metaproject.getIdentifier()));
             List<Experiment> experiments = assignments.getExperiments();
 
+            Collections.sort(experiments, new Comparator<Experiment>()
+                {
+                    @Override
+                    public int compare(Experiment o1, Experiment o2)
+                    {
+                        return o1.getPermId().compareTo(o2.getPermId());
+                    }
+                });
+
             if (user.isInstanceUser())
             {
                 assertEntities("[/CISD/NEMO/EXP1, /TEST-SPACE/NOE/EXP-TEST-2, /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST]", experiments);
@@ -2900,31 +2918,31 @@ public class CommonServerTest extends SystemTestCase
                 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(1).getIdentifier(), "/TEST-SPACE/NOE/EXP-TEST-2");
 
                 assertEquals(experiments.get(2).isStub(), false);
-                assertEquals(experiments.get(2).getIdentifier(), "/TEST-SPACE/NOE/EXP-TEST-2");
+                assertEquals(experiments.get(2).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST");
 
             } 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(1).isStub(), true);
+                assertEquals(experiments.get(1).getPermId(), "200902091255058-1037");
 
-                assertEquals(experiments.get(2).isStub(), true);
-                assertEquals(experiments.get(2).getPermId(), "200902091255058-1037");
+                assertEquals(experiments.get(2).isStub(), false);
+                assertEquals(experiments.get(2).getIdentifier(), "/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST");
             } 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(1).getPermId(), "200902091255058-1037");
 
                 assertEquals(experiments.get(2).isStub(), true);
-                assertEquals(experiments.get(2).getPermId(), "200902091255058-1037");
+                assertEquals(experiments.get(2).getPermId(), "201206190940555-1032");
             }
         }
     }
@@ -3028,6 +3046,31 @@ public class CommonServerTest extends SystemTestCase
         }
     }
 
+    @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER)
+    public void testGetEntityInformationHolderWithProjectAuthorization(ProjectAuthorizationUser user)
+    {
+        SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD);
+
+        EntityKind entityKind = EntityKind.EXPERIMENT;
+        String permId = "201206190940555-1032"; // /TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST
+
+        if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser())
+        {
+            IEntityInformationHolderWithPermId entity = commonServer.getEntityInformationHolder(session.getSessionToken(), entityKind, permId);
+            assertEquals(entity.getCode(), "EXP-SPACE-TEST");
+        } else
+        {
+            try
+            {
+                commonServer.getEntityInformationHolder(session.getSessionToken(), entityKind, permId);
+                fail();
+            } catch (AuthorizationFailureException e)
+            {
+                // expected
+            }
+        }
+    }
+
     private void assertAssignedPropertyTypes(String expected, EntityType entityType)
     {
         List<? extends EntityTypePropertyType<?>> propTypes = entityType.getAssignedPropertyTypes();
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DataStoreServiceRegistrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DataStoreServiceRegistrationTest.java
index 4df44ffc772..0b9c2648680 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DataStoreServiceRegistrationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/DataStoreServiceRegistrationTest.java
@@ -144,6 +144,7 @@ public class DataStoreServiceRegistrationTest extends SystemTestCase
         List<DatastoreServiceDescription> services =
                 commonServer
                         .listDataStoreServices(systemSessionToken, DataStoreServiceKind.QUERIES);
+        Collections.sort(services);
         assertEquals("R1", services.get(0).getKey());
         assertEquals("r1", services.get(0).getLabel());
         assertEquals(DOWNLOAD_URL, services.get(0).getDownloadURL());
@@ -154,6 +155,7 @@ public class DataStoreServiceRegistrationTest extends SystemTestCase
         services =
                 commonServer.listDataStoreServices(systemSessionToken,
                         DataStoreServiceKind.PROCESSING);
+        Collections.sort(services);
         assertEquals("P1", services.get(0).getKey());
         assertEquals("p1", services.get(0).getLabel());
         assertEquals(DOWNLOAD_URL, services.get(0).getDownloadURL());
@@ -161,7 +163,7 @@ public class DataStoreServiceRegistrationTest extends SystemTestCase
         assertEquals(DATASTORE_CODE, services.get(0).getDatastoreCode());
         assertEquals(expectedProcessingDataSetTypes, getDataSetTypeCodes(services.get(0))
                 .toString());
-        assertEquals(1, services.size());
+        assertEquals(2, services.size());
     }
 
     private List<String> getDataSetTypeCodes(DatastoreServiceDescription description)
-- 
GitLab