diff --git a/src/test/java/org/caosdb/server/query/QueryTest.java b/src/test/java/org/caosdb/server/query/QueryTest.java index c1e53294ca4731c84ed0106c26765ec300731bb2..1755023f434c5bfa63f0e47ba80116c2c7119e47 100644 --- a/src/test/java/org/caosdb/server/query/QueryTest.java +++ b/src/test/java/org/caosdb/server/query/QueryTest.java @@ -26,7 +26,11 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; import java.io.IOException; +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.database.access.InitAccess; import org.caosdb.server.transaction.WriteTransaction; import org.junit.BeforeClass; @@ -37,6 +41,7 @@ public class QueryTest { @BeforeClass public static void initServerProperties() throws IOException { CaosDBServer.initServerProperties(); + CaosDBServer.initShiro(); } String getCacheKey(String query) { @@ -45,6 +50,15 @@ public class QueryTest { return q.getCacheKey(true); } + String getCacheKeyWithUser(String query) { + Subject anonymous = SecurityUtils.getSubject(); + CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true"); + anonymous.login(AnonymousAuthenticationToken.getInstance()); + Query q = new Query(query, anonymous); + q.parse(); + return q.getCacheKey(true); + } + @Test public void testGetKey() { assertEquals("enamePOV(pname,=,val1)", getCacheKey("FIND ename WITH pname = val1")); @@ -72,6 +86,8 @@ public class QueryTest { assertEquals( "ename@(ref1,null)SUB(POV(pname,>,val1)", getCacheKey("FIND ename WHICH IS REFERENCED BY ref1 WITH pname > val1 ")); + + assertEquals("anonymous@anonymous@enamePOV(pname,=,val1)", getCacheKeyWithUser("FIND ename WITH pname = val1")); } @Test