From 37420b71f34eaded3d6a2967d178ebc5bd17d30c Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Mon, 18 Dec 2017 15:51:32 +0000
Subject: [PATCH] SSDM-6019 : Project Authorization - modify @RolesAllowed
 annotations at non-entity related methods

SVN: 39054
---
 ...nPredicateSystemTestAssertionsDefault.java |  2 +-
 ...aSetCodeCollectionPredicateSystemTest.java | 12 ---
 .../DataSetCodePredicateSystemTest.java       | 12 ---
 ...etTechIdCollectionPredicateSystemTest.java | 11 ---
 .../DataSetTechIdPredicateSystemTest.java     | 12 ---
 ...nPredicateWithDataSetTechIdSystemTest.java | 16 +---
 ...sPredicateWithDataSetTechIdSystemTest.java | 18 +----
 ...ewDataSetsWithTypePredicateSystemTest.java | 12 ---
 .../NewExternalDataPredicateSystemTest.java   | 13 ----
 ...onTechIdCollectionPredicateSystemTest.java | 12 ---
 .../RevertDeletionPredicateSystemTest.java    | 11 ---
 .../V3DeletionIdPredicateSystemTest.java      | 11 ---
 ...cEntityDescriptionPredicateSystemTest.java | 60 +++++++++++++++
 ...riptionPredicateWithDataSetSystemTest.java | 60 +++++++++++++++
 ...tionPredicateWithExperimentSystemTest.java | 72 +++++++++++++++++
 ...criptionPredicateWithSampleSystemTest.java | 77 +++++++++++++++++++
 ...rimentIdPredicateWithPermIdSystemTest.java | 22 ------
 .../ExperimentListPredicateSystemTest.java    | 13 ++++
 .../ExperimentPermIdPredicateSystemTest.java  | 12 ---
 ...ntTechIdCollectionPredicateSystemTest.java | 12 ---
 .../NewExperimentPredicateSystemTest.java     | 12 ---
 .../NewProjectPredicateSystemTest.java        | 12 ---
 ...rojectIdPredicateWithPermIdSystemTest.java | 12 ---
 ...ifierExistingSpacePredicateSystemTest.java | 12 ---
 .../ProjectPermIdPredicateSystemTest.java     | 12 ---
 ...rojectPermIdStringPredicateSystemTest.java | 12 ---
 ...ctTechIdCollectionPredicateSystemTest.java | 12 ---
 ...tUpdatesPredicateWithPermIdSystemTest.java | 12 ---
 ...CriteriaPredicateWithSampleSystemTest.java | 15 +---
 ...eCriteriaPredicateWithSpaceSystemTest.java | 22 ------
 ...ateWithExperimentIdentifierSystemTest.java | 22 ------
 ...dicateWithProjectIdentifierSystemTest.java | 22 ------
 ...ampleAugmentedCodePredicateSystemTest.java | 39 ++--------
 ...IdPredicateWithSampleTechIdSystemTest.java | 22 ------
 ...leTechIdCollectionPredicateSystemTest.java | 12 ---
 .../SampleTechIdPredicateSystemTest.java      | 12 ---
 ...esPredicateWithSampleTechIdSystemTest.java | 22 ------
 .../openbis/generic/server/CommonServer.java  |  2 +-
 .../api/v1/GeneralInformationService.java     |  4 +-
 .../openbis/systemtest/CommonServerTest.java  | 29 ++++++-
 .../entity/EntityPredicateTestService.java    | 43 +++++++++++
 .../DataSetReferencePredicateSystemTest.java  | 14 +---
 ...ReadOnlyPredicateWithPermIdSystemTest.java | 22 ------
 43 files changed, 368 insertions(+), 500 deletions(-)
 create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateSystemTest.java
 create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithDataSetSystemTest.java
 create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithExperimentSystemTest.java
 create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithSampleSystemTest.java
 create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/predicate/entity/EntityPredicateTestService.java

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 9723cbc752d..926819bbe22 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
@@ -63,7 +63,7 @@ public class CommonPredicateSystemTestAssertionsDefault<O> extends CommonPredica
             CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNoRoles(t);
         } else
         {
-            CommonAuthorizationSystemTest.assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t);
+            CommonAuthorizationSystemTest.assertNoException(t);
         }
     }
 
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 c818a8038b9..a9d3dfc4b13 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
@@ -92,18 +92,6 @@ public class DataSetCodeCollectionPredicateSystemTest extends CommonPredicateSys
                         assertException(t, UserFailureException.class, "No data set codes specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 a0fa84667e6..39d000fe4b6 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
@@ -74,18 +74,6 @@ public class DataSetCodePredicateSystemTest extends CommonPredicateSystemTest<St
                         assertException(t, UserFailureException.class, "No data set code specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 c14226dc42e..f911300d4d8 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
@@ -94,17 +94,6 @@ public class DataSetTechIdCollectionPredicateSystemTest extends CommonPredicateS
                     }
                 }
 
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 14640377672..b8e3fd561fd 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
@@ -75,18 +75,6 @@ public class DataSetTechIdPredicateSystemTest extends CommonPredicateSystemTest<
                         assertException(t, UserFailureException.class, "No data set technical id specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 2302c8b298b..814e3d1d8ac 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
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.dataset;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.DataSetTechIdUtil;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestDataSetAssertions;
@@ -55,20 +54,7 @@ public class DataSetUpdatesCollectionPredicateWithDataSetTechIdSystemTest extend
     @Override
     protected CommonPredicateSystemTestAssertions<DataSetUpdatesDTO> getAssertions()
     {
-        return new CommonPredicateSystemTestDataSetAssertions<DataSetUpdatesDTO>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
+        return new CommonPredicateSystemTestDataSetAssertions<DataSetUpdatesDTO>(super.getAssertions());
     }
 
 }
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 f697f52fc61..5ff10fed68c 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
@@ -16,10 +16,9 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.dataset;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.DataSetTechIdUtil;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestDataSetAssertions;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestDataSetAssertions;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
@@ -55,20 +54,7 @@ public class DataSetUpdatesPredicateWithDataSetTechIdSystemTest extends DataSetU
     @Override
     protected CommonPredicateSystemTestAssertions<DataSetUpdatesDTO> getAssertions()
     {
-        return new CommonPredicateSystemTestDataSetAssertions<DataSetUpdatesDTO>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
+        return new CommonPredicateSystemTestDataSetAssertions<DataSetUpdatesDTO>(super.getAssertions());
     }
 
 }
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 d1206eda1d5..b37251b6f9e 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
@@ -97,18 +97,6 @@ public abstract class NewDataSetsWithTypePredicateSystemTest<O> extends CommonPr
                         assertNoException(t);
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 d1620dde845..c5b6ad1ce40 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
@@ -56,19 +56,6 @@ public abstract class NewExternalDataPredicateSystemTest<O> extends CommonPredic
                         assertNoException(t);
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-
             };
     }
 
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 bd90af61151..47cc6abc3d3 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
@@ -94,18 +94,6 @@ public abstract class DeletionTechIdCollectionPredicateSystemTest extends Common
                         assertException(t, UserFailureException.class, "No deletion technical id specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 584117de94b..56690c6e381 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
@@ -98,17 +98,6 @@ public abstract class RevertDeletionPredicateSystemTest extends CommonPredicateS
                     }
                 }
 
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 08c7cd41649..b959af3f8df 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
@@ -95,17 +95,6 @@ public abstract class V3DeletionIdPredicateSystemTest extends CommonPredicateSys
                     }
                 }
 
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateSystemTest.java
new file mode 100644
index 00000000000..f91b5407507
--- /dev/null
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateSystemTest.java
@@ -0,0 +1,60 @@
+/*
+ * 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.predicate.entity;
+
+import java.util.List;
+
+import ch.systemsx.cisd.common.exceptions.UserFailureException;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTest;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityDescription;
+import ch.systemsx.cisd.openbis.systemtest.authorization.predicate.entity.EntityPredicateTestService;
+
+/**
+ * @author pkupczyk
+ */
+public abstract class BasicEntityDescriptionPredicateSystemTest extends CommonPredicateSystemTest<BasicEntityDescription>
+{
+
+    @Override
+    protected void evaluateObjects(ProjectAuthorizationUser user, List<BasicEntityDescription> objects, Object param)
+    {
+        getBean(EntityPredicateTestService.class).testBasicEntityDescriptionPredicate(user.getSessionProvider(), objects.get(0));
+    }
+
+    @Override
+    protected CommonPredicateSystemTestAssertions<BasicEntityDescription> getAssertions()
+    {
+        return new CommonPredicateSystemTestAssertionsDelegate<BasicEntityDescription>(super.getAssertions())
+            {
+                @Override
+                public void assertWithNullObject(ProjectAuthorizationUser user, Throwable t, Object param)
+                {
+                    if (user.isDisabledProjectUser())
+                    {
+                        assertAuthorizationFailureExceptionThatNoRoles(t);
+                    } else
+                    {
+                        assertException(t, UserFailureException.class, "No basic entity description specified.");
+                    }
+                }
+            };
+    }
+
+}
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithDataSetSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithDataSetSystemTest.java
new file mode 100644
index 00000000000..f111fbdf8fa
--- /dev/null
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithDataSetSystemTest.java
@@ -0,0 +1,60 @@
+/*
+ * 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.predicate.entity;
+
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.DataSetCodeUtil;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestDataSetAssertions;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityDescription;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
+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 BasicEntityDescriptionPredicateWithDataSetSystemTest extends BasicEntityDescriptionPredicateSystemTest
+{
+
+    @Override
+    public Object[] getParams()
+    {
+        return getDataSetKinds();
+    }
+
+    @Override
+    protected BasicEntityDescription createNonexistentObject(Object param)
+    {
+        String code = DataSetCodeUtil.createNonexistentObject(param);
+        return new BasicEntityDescription(EntityKind.DATA_SET, code);
+    }
+
+    @Override
+    protected BasicEntityDescription createObject(SpacePE spacePE, ProjectPE projectPE, Object param)
+    {
+        DataPE dataSetPE = getDataSet(spacePE, projectPE, (DataSetKind) param);
+        return new BasicEntityDescription(EntityKind.DATA_SET, dataSetPE.getCode());
+    }
+
+    @Override
+    protected CommonPredicateSystemTestAssertions<BasicEntityDescription> getAssertions()
+    {
+        return new CommonPredicateSystemTestDataSetAssertions<BasicEntityDescription>(super.getAssertions());
+    }
+
+}
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithExperimentSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithExperimentSystemTest.java
new file mode 100644
index 00000000000..12a7b7a15ea
--- /dev/null
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithExperimentSystemTest.java
@@ -0,0 +1,72 @@
+/*
+ * 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.predicate.entity;
+
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.ExperimentIdentifierUtil;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityDescription;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
+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;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier;
+
+/**
+ * @author pkupczyk
+ */
+public class BasicEntityDescriptionPredicateWithExperimentSystemTest extends BasicEntityDescriptionPredicateSystemTest
+{
+
+    @Override
+    protected BasicEntityDescription createNonexistentObject(Object param)
+    {
+        ExperimentIdentifier identifier = ExperimentIdentifierUtil.createNonexistentObject(param);
+        return new BasicEntityDescription(EntityKind.EXPERIMENT, identifier.toString());
+    }
+
+    @Override
+    protected BasicEntityDescription createObject(SpacePE spacePE, ProjectPE projectPE, Object param)
+    {
+        ExperimentPE experimentPE = getExperiment(spacePE, projectPE);
+        return new BasicEntityDescription(EntityKind.EXPERIMENT, experimentPE.getIdentifier());
+    }
+
+    @Override
+    protected CommonPredicateSystemTestAssertions<BasicEntityDescription> getAssertions()
+    {
+        return new CommonPredicateSystemTestAssertionsDelegate<BasicEntityDescription>(super.getAssertions())
+            {
+                @Override
+                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
+                {
+                    if (user.isDisabledProjectUser())
+                    {
+                        assertAuthorizationFailureExceptionThatNoRoles(t);
+                    } else if (user.isInstanceUser())
+                    {
+                        assertNoException(t);
+                    } else
+                    {
+                        assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t);
+                    }
+                }
+            };
+    }
+
+}
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithSampleSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithSampleSystemTest.java
new file mode 100644
index 00000000000..180b7ea9695
--- /dev/null
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/authorization/predicate/entity/BasicEntityDescriptionPredicateWithSampleSystemTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.predicate.entity;
+
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.SampleIdentifierUtil;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestSampleAssertions;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityDescription;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
+import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
+
+/**
+ * @author pkupczyk
+ */
+public class BasicEntityDescriptionPredicateWithSampleSystemTest extends BasicEntityDescriptionPredicateSystemTest
+{
+
+    @Override
+    public Object[] getParams()
+    {
+        return getSampleKinds(SampleKind.SHARED_READ);
+    }
+
+    @Override
+    protected BasicEntityDescription createNonexistentObject(Object param)
+    {
+        SampleIdentifier identifier = SampleIdentifierUtil.createNonexistentObject(param);
+        return new BasicEntityDescription(EntityKind.SAMPLE, identifier.toString());
+    }
+
+    @Override
+    protected BasicEntityDescription createObject(SpacePE spacePE, ProjectPE projectPE, Object param)
+    {
+        SampleIdentifier identifier = SampleIdentifierUtil.createObject(this, spacePE, projectPE, param);
+        return new BasicEntityDescription(EntityKind.SAMPLE, identifier.toString());
+    }
+
+    @Override
+    protected CommonPredicateSystemTestAssertions<BasicEntityDescription> getAssertions()
+    {
+        return new CommonPredicateSystemTestSampleAssertions<BasicEntityDescription>(super.getAssertions())
+            {
+                @Override
+                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
+                {
+                    if (user.isDisabledProjectUser())
+                    {
+                        assertAuthorizationFailureExceptionThatNoRoles(t);
+                    } else if (user.isInstanceUser() || SampleKind.SHARED_READ.equals(param))
+                    {
+                        assertNoException(t);
+                    } else
+                    {
+                        assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t);
+                    }
+                }
+            };
+    }
+
+}
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 765e175be20..08fa832272c 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
@@ -16,9 +16,6 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.experiment;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.experiment.ExperimentPermIdId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
@@ -43,23 +40,4 @@ public class ExperimentIdPredicateWithPermIdSystemTest extends ExperimentIdPredi
         return new ExperimentPermIdId(experimentPE.getPermId());
     }
 
-    @Override
-    protected CommonPredicateSystemTestAssertions<ExperimentPermIdId> getAssertions()
-    {
-        return new CommonPredicateSystemTestAssertionsDelegate<ExperimentPermIdId>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(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 cac493d9539..52f5b71aa94 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
@@ -106,6 +106,19 @@ public class ExperimentListPredicateSystemTest extends CommonPredicateSystemTest
                         assertException(t, UserFailureException.class, "No experiment specified.");
                     }
                 }
+
+                @Override
+                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
+                {
+                    if (user.isDisabledProjectUser())
+                    {
+                        assertAuthorizationFailureExceptionThatNoRoles(t);
+                    } else
+                    {
+                        assertAuthorizationFailureExceptionThatNotEnoughPrivileges(t);
+                    }
+                }
+
             };
     }
 
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 48c25ddc30a..f5f736bdefb 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
@@ -70,18 +70,6 @@ public class ExperimentPermIdPredicateSystemTest extends CommonPredicateSystemTe
                         assertException(t, UserFailureException.class, "No experiment perm id specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 5acd8e07ea8..e6cbd15e179 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
@@ -88,18 +88,6 @@ public class ExperimentTechIdCollectionPredicateSystemTest extends CommonPredica
                         assertException(t, UserFailureException.class, "No EXPERIMENT technical id collection specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 604b94ab7ae..f28ac501f66 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
@@ -68,18 +68,6 @@ public class NewExperimentPredicateSystemTest extends CommonPredicateSystemTest<
                         assertException(t, UserFailureException.class, "No new experiment specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 39bedd3dc20..43c45aff113 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
@@ -68,18 +68,6 @@ public class NewProjectPredicateSystemTest extends CommonPredicateSystemTest<New
                         assertException(t, UserFailureException.class, "No new project specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 50e360313c7..ee242b446d1 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
@@ -68,18 +68,6 @@ public class ProjectIdPredicateWithPermIdSystemTest extends CommonPredicateSyste
                         assertException(t, UserFailureException.class, "No project id specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(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 afbd04c0a95..65e397ac27f 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
@@ -68,18 +68,6 @@ public class ProjectIdentifierExistingSpacePredicateSystemTest extends CommonPre
                         assertException(t, UserFailureException.class, "No project specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 99b70128db7..d691ab16b3f 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
@@ -68,18 +68,6 @@ public class ProjectPermIdPredicateSystemTest extends CommonPredicateSystemTest<
                         assertException(t, UserFailureException.class, "No project perm id specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 3cf21bb59de..4bde9d121a1 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
@@ -67,18 +67,6 @@ public class ProjectPermIdStringPredicateSystemTest extends CommonPredicateSyste
                         assertException(t, UserFailureException.class, "No project perm id specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 c8b7a592e6f..551dbb849a4 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
@@ -86,18 +86,6 @@ public class ProjectTechIdCollectionPredicateSystemTest extends CommonPredicateS
                         assertException(t, UserFailureException.class, "No PROJECT technical id collection specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 7fc6ff4ff6b..6eae9601490 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
@@ -72,18 +72,6 @@ public class ProjectUpdatesPredicateWithPermIdSystemTest extends CommonPredicate
                         assertException(t, UserFailureException.class, "No project updates specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(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 afa1a5178f4..af78946284d 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
@@ -64,20 +64,7 @@ public abstract class ListSampleCriteriaPredicateWithSampleSystemTest extends Li
     @Override
     protected CommonPredicateSystemTestAssertions<ListSampleCriteria> getAssertions()
     {
-        return new CommonPredicateSystemTestSampleAssertions<ListSampleCriteria>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
+        return new CommonPredicateSystemTestSampleAssertions<ListSampleCriteria>(super.getAssertions());
     }
 
 }
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 e1de513cc35..677481db05d 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
@@ -16,9 +16,6 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.sample;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
@@ -47,23 +44,4 @@ public class ListSampleCriteriaPredicateWithSpaceSystemTest extends ListSampleCr
         return criteria;
     }
 
-    @Override
-    protected CommonPredicateSystemTestAssertions<ListSampleCriteria> getAssertions()
-    {
-        return new CommonPredicateSystemTestAssertionsDelegate<ListSampleCriteria>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
-    }
-
 }
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 f527aacf73c..6376c5f3fff 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
@@ -16,9 +16,6 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.sample;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
@@ -48,23 +45,4 @@ public class NewSamplePredicateWithExperimentIdentifierSystemTest extends NewSam
         return newSample;
     }
 
-    @Override
-    protected CommonPredicateSystemTestAssertions<NewSample> getAssertions()
-    {
-        return new CommonPredicateSystemTestAssertionsDelegate<NewSample>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 a9e86898c64..fda6f6fc479 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
@@ -16,9 +16,6 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.sample;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
@@ -45,23 +42,4 @@ public class NewSamplePredicateWithProjectIdentifierSystemTest extends NewSample
         return newSample;
     }
 
-    @Override
-    protected CommonPredicateSystemTestAssertions<NewSample> getAssertions()
-    {
-        return new CommonPredicateSystemTestAssertionsDelegate<NewSample>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
-    }
-
 }
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 28a94df1ec7..6bcb5c02c9e 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
@@ -20,12 +20,13 @@ import java.util.List;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.SampleIdentifierUtil;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTest;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestSampleAssertions;
 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;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 import ch.systemsx.cisd.openbis.systemtest.authorization.predicate.sample.SamplePredicateTestService;
 
 /**
@@ -43,43 +44,15 @@ public class SampleAugmentedCodePredicateSystemTest extends CommonPredicateSyste
     @Override
     protected String createNonexistentObject(Object param)
     {
-        switch ((SampleKind) param)
-        {
-            case SHARED_READ:
-                return "/IDONTEXIST";
-            case SPACE:
-                return "/IDONTEXIST/IDONTEXIST";
-            case SPACE_CONTAINED:
-                return "/IDONTEXIST/IDONTEXIST:IDONTEXIST";
-            case PROJECT:
-                return "/IDONTEXIST/IDONTEXIST/IDONTEXIST";
-            case EXPERIMENT:
-                return "/IDONTEXIST/IDONTEXIST";
-            default:
-                throw new RuntimeException();
-        }
+        SampleIdentifier identifier = SampleIdentifierUtil.createNonexistentObject(param);
+        return identifier.toString();
     }
 
     @Override
     protected String createObject(SpacePE spacePE, ProjectPE projectPE, Object param)
     {
-        SamplePE samplePE = getSample(spacePE, projectPE, (SampleKind) param);
-
-        switch ((SampleKind) param)
-        {
-            case SHARED_READ:
-                return "/" + samplePE.getCode();
-            case SPACE:
-                return "/" + spacePE.getCode() + "/" + samplePE.getCode();
-            case SPACE_CONTAINED:
-                return "/" + spacePE.getCode() + "/" + samplePE.getContainer().getCode() + ":" + samplePE.getCode();
-            case PROJECT:
-                return "/" + spacePE.getCode() + "/" + projectPE.getCode() + "/" + samplePE.getCode();
-            case EXPERIMENT:
-                return "/" + spacePE.getCode() + "/" + samplePE.getCode();
-            default:
-                throw new RuntimeException();
-        }
+        SampleIdentifier identifier = SampleIdentifierUtil.createObject(this, spacePE, projectPE, param);
+        return identifier.toString();
     }
 
     @Override
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 91b3f706721..63647a2adf7 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
@@ -16,10 +16,7 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.sample;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.SampleTechIdUtil;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.sample.ISampleId;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.sample.SampleTechIdId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
@@ -46,23 +43,4 @@ public class SampleIdPredicateWithSampleTechIdSystemTest extends SampleIdPredica
         return new SampleTechIdId(techId.getId());
     }
 
-    @Override
-    protected CommonPredicateSystemTestAssertions<ISampleId> getAssertions()
-    {
-        return new CommonPredicateSystemTestAssertionsDelegate<ISampleId>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
-    }
-
 }
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 60ddf7dfebb..9cb3723dd19 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
@@ -93,18 +93,6 @@ public class SampleTechIdCollectionPredicateSystemTest extends CommonPredicateSy
                         assertException(t, UserFailureException.class, "No sample technical ids specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    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 2225ff49f6d..08e177462b8 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
@@ -75,18 +75,6 @@ public class SampleTechIdPredicateSystemTest extends CommonPredicateSystemTest<T
                         assertException(t, UserFailureException.class, "No sample technical id specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 82b3b99e841..378893a0f22 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
@@ -16,10 +16,7 @@
 
 package ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.sample;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.SampleTechIdUtil;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO;
@@ -45,23 +42,4 @@ public class SampleUpdatesPredicateWithSampleTechIdSystemTest extends SampleUpda
         return new SampleUpdatesDTO(techId, null, null, null, null, 0, null, null, null);
     }
 
-    @Override
-    protected CommonPredicateSystemTestAssertions<SampleUpdatesDTO> getAssertions()
-    {
-        return new CommonPredicateSystemTestAssertionsDelegate<SampleUpdatesDTO>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
-    }
-
 }
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 97db5241bc1..aa3b83f67fa 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
@@ -3585,7 +3585,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
     }
 
     @Override
-    @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
+    @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER)
     public IEntityInformationHolderWithPermId getEntityInformationHolder(String sessionToken,
             @AuthorizationGuard(guardClass = BasicEntityDescriptionPredicate.class) BasicEntityDescription info)
     {
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 41680409840..fbddb097e39 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
@@ -975,7 +975,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
 
     @Override
     @Transactional(readOnly = true)
-    @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
+    @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER)
     // There is no @ReturnValueFilter because commonServer.searchForDataSetsWithSequences() does already the filtering.
     public List<SearchDomainSearchResult> searchOnSearchDomain(String sessionToken, String preferredSearchDomainOrNull,
             String searchString, Map<String, String> optionalParametersOrNull)
@@ -994,7 +994,7 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
 
     @Override
     @Transactional(readOnly = true)
-    @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
+    @RolesAllowed(RoleWithHierarchy.PROJECT_OBSERVER)
     public List<SearchDomain> listAvailableSearchDomains(String sessionToken)
     {
         checkSession(sessionToken);
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 17779ab96af..c4f20e504ea 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java
@@ -55,6 +55,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Attachment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AttachmentWithContent;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AuthorizationGroup;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityDescription;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelatedEntities;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelationshipRole;
@@ -3047,7 +3048,7 @@ public class CommonServerTest extends SystemTestCase
     }
 
     @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER)
-    public void testGetEntityInformationHolderWithProjectAuthorization(ProjectAuthorizationUser user)
+    public void testGetEntityInformationHolderByPermIdWithProjectAuthorization(ProjectAuthorizationUser user)
     {
         SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD);
 
@@ -3071,6 +3072,32 @@ public class CommonServerTest extends SystemTestCase
         }
     }
 
+    @Test(dataProviderClass = ProjectAuthorizationUser.class, dataProvider = ProjectAuthorizationUser.PROVIDER)
+    public void testGetEntityInformationHolderByDescriptionWithProjectAuthorization(ProjectAuthorizationUser user)
+    {
+        SessionContextDTO session = commonServer.tryAuthenticate(user.getUserId(), PASSWORD);
+
+        BasicEntityDescription description = new BasicEntityDescription();
+        description.setEntityIdentifier("/TEST-SPACE/TEST-PROJECT/EXP-SPACE-TEST");
+        description.setEntityKind(EntityKind.EXPERIMENT);
+
+        if (user.isInstanceUserOrTestSpaceUserOrEnabledTestProjectUser())
+        {
+            IEntityInformationHolderWithPermId entity = commonServer.getEntityInformationHolder(session.getSessionToken(), description);
+            assertEquals(entity.getCode(), "EXP-SPACE-TEST");
+        } else
+        {
+            try
+            {
+                commonServer.getEntityInformationHolder(session.getSessionToken(), description);
+                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/authorization/predicate/entity/EntityPredicateTestService.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/predicate/entity/EntityPredicateTestService.java
new file mode 100644
index 00000000000..382401d1761
--- /dev/null
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/authorization/predicate/entity/EntityPredicateTestService.java
@@ -0,0 +1,43 @@
+/*
+ * 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.predicate.entity;
+
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+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.authorization.predicate.BasicEntityDescriptionPredicate;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityDescription;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy;
+import ch.systemsx.cisd.openbis.generic.shared.dto.IAuthSessionProvider;
+
+/**
+ * @author pkupczyk
+ */
+@Component
+public class EntityPredicateTestService
+{
+
+    @Transactional
+    @RolesAllowed(value = { RoleWithHierarchy.PROJECT_OBSERVER })
+    public void testBasicEntityDescriptionPredicate(IAuthSessionProvider sessionProvider,
+            @AuthorizationGuard(guardClass = BasicEntityDescriptionPredicate.class) BasicEntityDescription description)
+    {
+    }
+
+}
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 72ecc5b6f1e..29696c5ba7d 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
@@ -21,8 +21,8 @@ import java.util.List;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.common.DataSetCodeUtil;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestDataSetAssertions;
 import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
+import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestDataSetAssertions;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.DatasetReference;
@@ -76,18 +76,6 @@ public class DataSetReferencePredicateSystemTest extends CommonPredicateScreenin
                         assertException(t, UserFailureException.class, "No data set reference specified.");
                     }
                 }
-
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
             };
     }
 
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 c6406989f02..0a18272c7b0 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
@@ -16,9 +16,6 @@
 
 package ch.systemsx.cisd.openbis.screening.systemtests.authorization.predicate.sample;
 
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.ProjectAuthorizationUser;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertions;
-import ch.systemsx.cisd.openbis.datastoreserver.systemtests.authorization.predicate.CommonPredicateSystemTestAssertionsDelegate;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.PlateIdentifier;
@@ -41,23 +38,4 @@ public class ScreeningPlateListReadOnlyPredicateWithPermIdSystemTest extends Scr
         return PlateIdentifierUtil.createObjectWithPermId(this, spacePE, projectPE, param);
     }
 
-    @Override
-    protected CommonPredicateSystemTestAssertions<PlateIdentifier> getAssertions()
-    {
-        return new CommonPredicateSystemTestAssertionsDelegate<PlateIdentifier>(super.getAssertions())
-            {
-                @Override
-                public void assertWithNonexistentObject(ProjectAuthorizationUser user, Throwable t, Object param)
-                {
-                    if (user.isDisabledProjectUser())
-                    {
-                        assertAuthorizationFailureExceptionThatNoRoles(t);
-                    } else
-                    {
-                        assertNoException(t);
-                    }
-                }
-            };
-    }
-
 }
-- 
GitLab