use of com.yahoo.elide.core.PersistentResource in project elide by yahoo.
the class PermissionExecutorTest method testReadCheckExpressionForNewlyCreatedObject.
@Test
public void testReadCheckExpressionForNewlyCreatedObject() {
@Entity
@Include(rootLevel = false)
@ReadPermission(expression = "FailOp")
class Model {
}
PersistentResource resource = newResource(new Model(), Model.class, true);
RequestScope requestScope = resource.getRequestScope();
requestScope.getDictionary().bindEntity(Model.class);
assertEquals(ExpressionResult.DEFERRED, requestScope.getPermissionExecutor().checkPermission(ReadPermission.class, resource));
assertThrows(ForbiddenAccessException.class, () -> requestScope.getPermissionExecutor().executeCommitChecks());
}
use of com.yahoo.elide.core.PersistentResource in project elide by yahoo.
the class PermissionExecutorTest method testSuccessfulCommitChecks.
@Test
public void testSuccessfulCommitChecks() throws Exception {
@Entity
@Include(rootLevel = false)
@UpdatePermission(expression = "sampleOperation")
class Model implements SampleOperationModel {
}
PersistentResource resource = newResource(new Model(), Model.class, true);
RequestScope requestScope = resource.getRequestScope();
// Because the object is newly created, the check is DEFERRED.
assertEquals(ExpressionResult.DEFERRED, requestScope.getPermissionExecutor().checkPermission(UpdatePermission.class, resource, ALL_FIELDS));
requestScope.getPermissionExecutor().executeCommitChecks();
}
use of com.yahoo.elide.core.PersistentResource in project elide by yahoo.
the class PermissionExecutorTest method testSpecificFieldCommitCheckFailByOveriddenField.
@Test
public void testSpecificFieldCommitCheckFailByOveriddenField() {
PersistentResource resource = newResource(CheckedEntity.class, true);
RequestScope requestScope = resource.getRequestScope();
assertEquals(ExpressionResult.DEFERRED, requestScope.getPermissionExecutor().checkSpecificFieldPermissions(resource, new ChangeSpec(null, null, null, null), UpdatePermission.class, "hello"));
assertThrows(ForbiddenAccessException.class, () -> requestScope.getPermissionExecutor().executeCommitChecks());
}
use of com.yahoo.elide.core.PersistentResource in project elide by yahoo.
the class PermissionExpressionBuilderTest method testAnyFieldExpressionText.
@Test
public void testAnyFieldExpressionText() {
@Entity
@Include(rootLevel = false)
@ReadPermission(expression = "user has all access AND user has no access")
class Model {
}
dictionary.bindEntity(Model.class);
PersistentResource resource = newResource(new Model(), Model.class);
Expression expression = builder.buildAnyFieldExpressions(resource, ReadPermission.class, null, null);
assertEquals("READ PERMISSION WAS INVOKED ON PersistentResource{type=model, id=null} " + "FOR EXPRESSION [((user has all access \u001B[34mWAS UNEVALUATED\u001B[m)) " + "AND ((user has no access \u001B[34mWAS UNEVALUATED\u001B[m))]", expression.toString());
expression.evaluate(Expression.EvaluationMode.ALL_CHECKS);
assertEquals("READ PERMISSION WAS INVOKED ON PersistentResource{type=model, id=null} " + "FOR EXPRESSION [((user has all access [32mPASSED[m)) " + "AND ((user has no access [31mFAILED[m))]", expression.toString());
}
use of com.yahoo.elide.core.PersistentResource in project elide by yahoo.
the class PermissionExecutorTest method testUpdateFieldAwareSuccessAny.
@Test
public void testUpdateFieldAwareSuccessAny() {
SampleBean sampleBean = new SampleBean();
sampleBean.id = 1L;
PersistentResource resource = newResource(sampleBean, SampleBean.class, true);
RequestScope requestScope = resource.getRequestScope();
assertEquals(ExpressionResult.DEFERRED, requestScope.getPermissionExecutor().checkSpecificFieldPermissions(resource, new ChangeSpec(null, null, null, null), UpdatePermission.class, "mayFailInCommit"));
requestScope.getPermissionExecutor().executeCommitChecks();
}
Aggregations