From 97e678bd6aca6a56456747a45a6f8fe8225ec65d Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Wed, 8 Dec 2021 21:21:13 +0100
Subject: [PATCH] WIP: fix some unit tests

---
 .../server/accessControl/UserSources.java     |  3 +
 .../server/permissions/EntityACLTest.java     | 60 +++++++++++++++++++
 2 files changed, 63 insertions(+)

diff --git a/src/main/java/org/caosdb/server/accessControl/UserSources.java b/src/main/java/org/caosdb/server/accessControl/UserSources.java
index bd63da6f..bbbb1bcb 100644
--- a/src/main/java/org/caosdb/server/accessControl/UserSources.java
+++ b/src/main/java/org/caosdb/server/accessControl/UserSources.java
@@ -88,6 +88,9 @@ public class UserSources extends HashMap<String, UserSource> {
    * @return true iff the user identified by the given {@link Principal} exists.
    */
   public static boolean isUserExisting(final Principal principal) {
+    if (principal.getRealm().equals(OneTimeAuthenticationToken.REALM_NAME)) {
+      return true;
+    }
     UserSource userSource = instance.get(principal.getRealm());
     if (userSource != null) {
       return userSource.isUserExisting(principal.getUsername());
diff --git a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
index 1787c902..437d1aff 100644
--- a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
+++ b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
@@ -23,27 +23,36 @@
 package org.caosdb.server.permissions;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.HashSet;
 import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.caosdb.server.CaosDBServer;
 import org.caosdb.server.accessControl.AnonymousAuthenticationToken;
 import org.caosdb.server.accessControl.AuthenticationUtils;
 import org.caosdb.server.accessControl.Config;
+import org.caosdb.server.accessControl.CredentialsValidator;
 import org.caosdb.server.accessControl.OneTimeAuthenticationToken;
+import org.caosdb.server.accessControl.Principal;
 import org.caosdb.server.accessControl.Role;
 import org.caosdb.server.database.BackendTransaction;
 import org.caosdb.server.database.access.Access;
+import org.caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl;
 import org.caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl;
 import org.caosdb.server.database.backend.interfaces.RetrieveRoleImpl;
+import org.caosdb.server.database.backend.interfaces.RetrieveUserImpl;
 import org.caosdb.server.database.exceptions.TransactionException;
 import org.caosdb.server.database.misc.TransactionBenchmark;
+import org.caosdb.server.database.proto.ProtoUser;
 import org.caosdb.server.resource.AbstractCaosDBServerResource;
 import org.caosdb.server.resource.AbstractCaosDBServerResource.XMLParser;
 import org.caosdb.server.utils.Utils;
@@ -101,6 +110,54 @@ public class EntityACLTest {
     }
   }
 
+  public static class RetrievePasswordValidatorMockup implements RetrievePasswordValidatorImpl {
+
+    public RetrievePasswordValidatorMockup(Access a) {}
+
+    @Override
+    public void setTransactionBenchmark(TransactionBenchmark b) {}
+
+    @Override
+    public TransactionBenchmark getBenchmark() {
+      return null;
+    }
+
+    @Override
+    public CredentialsValidator<String> execute(String name) throws TransactionException {
+      if (name.equals("anonymous")) {
+        return new CredentialsValidator<String>() {
+
+          @Override
+          public boolean isValid(String credential) {
+            return false;
+          }
+        };
+      }
+      return null;
+    }
+  }
+
+  public static class RetrieveUserMockup implements RetrieveUserImpl {
+
+    public RetrieveUserMockup(Access a) {}
+
+    @Override
+    public void setTransactionBenchmark(TransactionBenchmark b) {}
+
+    @Override
+    public TransactionBenchmark getBenchmark() {
+      return null;
+    }
+
+    @Override
+    public ProtoUser execute(Principal principal) throws TransactionException {
+      if (principal.getUsername().equals("anonymous")) {
+        return new ProtoUser();
+      }
+      return null;
+    }
+  }
+
   @BeforeClass
   public static void init() throws IOException {
     CaosDBServer.initServerProperties();
@@ -110,6 +167,9 @@ public class EntityACLTest {
     BackendTransaction.setImpl(
         RetrievePermissionRulesImpl.class, RetrievePermissionRulesMockup.class);
     BackendTransaction.setImpl(RetrieveRoleImpl.class, RetrieveRoleMockup.class);
+    BackendTransaction.setImpl(
+        RetrievePasswordValidatorImpl.class, RetrievePasswordValidatorMockup.class);
+    BackendTransaction.setImpl(RetrieveUserImpl.class, RetrieveUserMockup.class);
   }
 
   @Test
-- 
GitLab