From 4610f4f36a7291aee84b48f6cade4fa7bd6342ae Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Mon, 20 Dec 2021 17:37:43 +0100
Subject: [PATCH] TST: fix tests

---
 .../java/org/caosdb/server/CaosDBServer.java  |  5 ++-
 .../server/authentication/AuthTokenTest.java  |  1 +
 .../server/permissions/EntityACLTest.java     | 32 ++-----------------
 .../TestAbstractCaosDBServerResource.java     |  1 +
 .../resource/TestScriptingResource.java       |  4 +++
 .../resource/TestSharedFileResource.java      |  8 +----
 6 files changed, 14 insertions(+), 37 deletions(-)

diff --git a/src/main/java/org/caosdb/server/CaosDBServer.java b/src/main/java/org/caosdb/server/CaosDBServer.java
index f238bdd7..fab783b7 100644
--- a/src/main/java/org/caosdb/server/CaosDBServer.java
+++ b/src/main/java/org/caosdb/server/CaosDBServer.java
@@ -284,7 +284,10 @@ public class CaosDBServer extends Application {
     final Ini config = getShiroConfig();
     initShiro(config);
 
-    // Init Permissions
+    // Init ACMPermissions.ALL -  the whole point is to fill all these
+    // permissions into ACMPermissions.ALL for retrieval by clients. If we don't
+    // do this, every work, but the list of known permissions grows over time
+    // (as soon as these classes are used for the first time)
     logger.debug("Register permissions: ", ScriptingPermissions.PERMISSION_EXECUTION("*"));
     logger.debug("Register permissions: ", CheckStateTransition.STATE_PERMISSIONS.toString());
     logger.debug(
diff --git a/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java b/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java
index 2f636e61..0b19b414 100644
--- a/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java
+++ b/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java
@@ -396,6 +396,7 @@ public class AuthTokenTest {
     OneTimeAuthenticationToken.initConfig(new CharSequenceInputStream(testYaml, "utf-8"));
 
     Subject anonymous = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     anonymous.login(AnonymousAuthenticationToken.getInstance());
 
     OneTimeAuthenticationToken token =
diff --git a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
index b606346a..30c0cd99 100644
--- a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
+++ b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
@@ -35,6 +35,7 @@ import java.util.Set;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.caosdb.server.CaosDBServer;
+import org.caosdb.server.ServerProperties;
 import org.caosdb.server.accessControl.AnonymousAuthenticationToken;
 import org.caosdb.server.accessControl.AuthenticationUtils;
 import org.caosdb.server.accessControl.Config;
@@ -328,6 +329,7 @@ public class EntityACLTest {
   @Test
   public void testEntityACLForAnonymous() {
     Subject anonymous = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     anonymous.login(AnonymousAuthenticationToken.getInstance());
     assertTrue(AuthenticationUtils.isAnonymous(anonymous));
     EntityACL acl = EntityACL.getOwnerACLFor(anonymous);
@@ -335,35 +337,6 @@ public class EntityACLTest {
     assertTrue(acl.getOwners().isEmpty());
   }
 
-  //   @Test
-  //   public void testParseFromElement() throws JDOMException, IOException {
-  //   Assert.assertEquals("[]",
-  //   EntityACL.serialize(EntityACL.parseFromElement(stringToJdom("<ACL></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant></Grant></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Deny></Deny></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant role='bla'></Grant></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Deny role='bla'></Deny></ACL>"))));
-  //   Assert.assertEquals(
-  //   "{bla:2;}",
-  //   EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant role='bla'><Permission
-  // name='DELETE'/></Grant></ACL>"))));
-  //   Assert.assertEquals(
-  //   "{bla:" + (Long.MIN_VALUE + 2) + ";}",
-  //   EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Deny role='bla'><Permission name='DELETE'
-  // /></Deny></ACL>"))));
-  //   Assert.assertEquals(
-  //   "{bla:32;}",
-  //   EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant role='bla'><Permission name='RETRIEVE:ACL'
-  // /></Grant></ACL>"))));
-  //   }
-
   @Test
   public void testFactory() {
     final AbstractEntityACLFactory<EntityACL> f = new EntityACLFactory();
@@ -476,6 +449,7 @@ public class EntityACLTest {
     EntityACL acl = f.create();
 
     Subject anonymous = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     anonymous.login(AnonymousAuthenticationToken.getInstance());
     assertTrue(AuthenticationUtils.isAnonymous(anonymous));
 
diff --git a/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java b/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java
index 5d81ca73..226c9aaa 100644
--- a/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java
+++ b/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java
@@ -89,6 +89,7 @@ public class TestAbstractCaosDBServerResource {
   @Test
   public void testReponseRootElement() throws IOException {
     final Subject user = new DelegatingSubject(new DefaultSecurityManager(new AnonymousRealm()));
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     AbstractCaosDBServerResource s =
         new AbstractCaosDBServerResource() {
diff --git a/src/test/java/org/caosdb/server/resource/TestScriptingResource.java b/src/test/java/org/caosdb/server/resource/TestScriptingResource.java
index d8c1074c..566c8a09 100644
--- a/src/test/java/org/caosdb/server/resource/TestScriptingResource.java
+++ b/src/test/java/org/caosdb/server/resource/TestScriptingResource.java
@@ -32,6 +32,7 @@ import java.util.List;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.caosdb.server.CaosDBServer;
+import org.caosdb.server.ServerProperties;
 import org.caosdb.server.accessControl.AnonymousAuthenticationToken;
 import org.caosdb.server.accessControl.CredentialsValidator;
 import org.caosdb.server.accessControl.Principal;
@@ -205,6 +206,7 @@ public class TestScriptingResource {
   @Test
   public void testAnonymousWithOutPermission() {
     Subject user = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     Form form = new Form("call=anonymous_no_permission");
     Representation entity = form.getWebRepresentation();
@@ -222,6 +224,7 @@ public class TestScriptingResource {
   @Test
   public void testAnonymousWithPermission() {
     Subject user = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     Form form = new Form("call=anonymous_ok");
     Representation entity = form.getWebRepresentation();
@@ -254,6 +257,7 @@ public class TestScriptingResource {
   @Test
   public void testHandleForm() throws Message, IOException {
     Subject user = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     Form form = new Form("call=anonymous_ok");
     assertEquals(0, resource.handleForm(form));
diff --git a/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java b/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java
index 8dbbd5b1..bff03a45 100644
--- a/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java
+++ b/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java
@@ -122,16 +122,10 @@ public class TestSharedFileResource {
 
     provideUserSourcesFile();
     final Subject user = new DelegatingSubject(new DefaultSecurityManager(new AnonymousRealm()));
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     SharedFileResource resource =
         new SharedFileResource() {
-          // @Override
-          // protected Representation httpGetInChildClass()
-          //     throws ConnectionException, IOException, SQLException, CaosDBException,
-          //         NoSuchAlgorithmException, Exception {
-          //   // TODO Auto-generated method stub
-          //   return super.httpGetInChildClass();
-          // }
 
           @Override
           public String getSRID() {
-- 
GitLab