Skip to content
Snippets Groups Projects
Verified Commit 2edfcff6 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

TST: more unit tests for Retrieve transactions

parent efe146b3
No related branches found
No related tags found
2 merge requests!58REL: prepare release 0.7.2,!57F 220
Pipeline #20573 passed
This commit is part of merge request !58. Comments created here will be created in the context of that merge request.
...@@ -79,7 +79,7 @@ public class Retrieve extends Transaction<RetrieveContainer> { ...@@ -79,7 +79,7 @@ public class Retrieve extends Transaction<RetrieveContainer> {
protected void postTransaction() { protected void postTransaction() {
// generate Error for missing RETRIEVE:ENTITY Permission. // generate Error for missing RETRIEVE:ENTITY Permission.
for (final EntityInterface e : getContainer()) { for (final EntityInterface e : getContainer()) {
if (e.getEntityACL() != null) { if (e.getEntityStatus() != EntityStatus.NONEXISTENT) {
try { try {
e.checkPermission(EntityPermission.RETRIEVE_ENTITY); e.checkPermission(EntityPermission.RETRIEVE_ENTITY);
} catch (final AuthorizationException exc) { } catch (final AuthorizationException exc) {
......
package org.caosdb.server.transaction;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
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.accessControl.Role;
import org.caosdb.server.database.BackendTransaction;
import org.caosdb.server.database.access.Access;
import org.caosdb.server.database.backend.interfaces.RetrieveRoleImpl;
import org.caosdb.server.database.exceptions.TransactionException;
import org.caosdb.server.database.misc.TransactionBenchmark;
import org.caosdb.server.entity.EntityInterface;
import org.caosdb.server.entity.RetrieveEntity;
import org.caosdb.server.entity.container.RetrieveContainer;
import org.caosdb.server.entity.xml.IdAndServerMessagesOnlyStrategy;
import org.caosdb.server.permissions.EntityACLFactory;
import org.caosdb.server.utils.EntityStatus;
import org.caosdb.server.utils.ServerMessages;
import org.junit.BeforeClass;
import org.junit.Test;
public class RetrieveTest {
@BeforeClass
public static void setup() throws IOException {
CaosDBServer.initServerProperties();
CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "TRUE");
CaosDBServer.initShiro();
BackendTransaction.setImpl(RetrieveRoleImpl.class, RetrieveRoleMockup.class);
}
/** a mock-up which returns null */
public static class RetrieveRoleMockup implements RetrieveRoleImpl {
public RetrieveRoleMockup(Access a) {}
@Override
public void setTransactionBenchmark(TransactionBenchmark b) {}
@Override
public TransactionBenchmark getBenchmark() {
return null;
}
@Override
public Role retrieve(String role) throws TransactionException {
return null;
}
}
@Test
public void testMissingRetrievePermission() {
Subject subject = SecurityUtils.getSubject();
subject.login(AnonymousAuthenticationToken.getInstance());
EntityInterface entity = new RetrieveEntity(1234);
EntityACLFactory fac = new EntityACLFactory();
fac.deny(AnonymousAuthenticationToken.PRINCIPAL, "RETRIEVE:ENTITY");
entity.setEntityACL(fac.create());
RetrieveContainer container = new RetrieveContainer(null, null, null, null);
assertTrue(entity.getMessages().isEmpty());
assertEquals(entity.getEntityStatus(), EntityStatus.QUALIFIED);
container.add(entity);
Retrieve retrieve = new Retrieve(container);
retrieve.postTransaction();
assertFalse(entity.getMessages().isEmpty());
assertEquals(entity.getMessages("error").get(0), ServerMessages.AUTHORIZATION_ERROR);
assertEquals(entity.getEntityStatus(), EntityStatus.UNQUALIFIED);
assertTrue(entity.getSerializeFieldStrategy() instanceof IdAndServerMessagesOnlyStrategy);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment