CCM NG: Inherited permissions are now stored in the database for each object making it possible to check permissions when querying data from the database. The InheritsPermissions interface has been removed.

Also, the usage of the cleanup script has been changed. The automatic cleanup of Arquillian is not longer disabled (in ccm-core). Instead a custom cleanup script is applied using the @CleanupUsingScript annotation on the test classes.


git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4536 8810af33-2d31-482b-a856-94f89814c4df
jensp 2017-01-25 20:18:00 +00:00
parent 39b74d511a
commit 22dda86fee
45 changed files with 478 additions and 376 deletions

View File

@ -195,17 +195,12 @@ public class BrowsePane extends LayoutPanel implements Resettable {
if (object instanceof Category) { if (object instanceof Category) {
final Category category = (Category) object; final Category category = (Category) object;
if (category.getParent().isPresent()) { if (category.getParentCategory() != null) {
final CcmObject result = category.getParent().get(); final Category result = category.getParentCategory();
object = result;
if (result instanceof Category) { tree.expand(
object = result; ((Long) object.getObjectId()).toString(),
tree.expand( state);
((Long) object.getObjectId()).toString(),
state);
} else {
object = null;
}
} else { } else {
object = null; object = null;
} }

View File

@ -52,7 +52,7 @@ class FolderEditForm extends FolderBaseForm {
final FolderRequestLocal parent = new FolderRequestLocal(null) { final FolderRequestLocal parent = new FolderRequestLocal(null) {
@Override @Override
protected final Object initialValue(final PageState state) { protected final Object initialValue(final PageState state) {
return folder.getFolder(state).getParent().get(); return folder.getFolder(state).getParentFolder();
} }
}; };

View File

@ -22,7 +22,6 @@ import org.hibernate.envers.Audited;
import org.libreccm.categorization.Categorization; import org.libreccm.categorization.Categorization;
import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObject;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.libreccm.security.InheritsPermissions;
import org.librecms.CmsConstants; import org.librecms.CmsConstants;
import java.util.ArrayList; import java.util.ArrayList;
@ -133,7 +132,7 @@ import static org.librecms.CmsConstants.*;
+ "AND LOWER(a.displayName) LIKE CONCAT(LOWER(:name), '%') " + "AND LOWER(a.displayName) LIKE CONCAT(LOWER(:name), '%') "
+ "AND TYPE(a) = :type") + "AND TYPE(a) = :type")
}) })
public class Asset extends CcmObject implements InheritsPermissions { public class Asset extends CcmObject {
private static final long serialVersionUID = -3499741368562653529L; private static final long serialVersionUID = -3499741368562653529L;
@ -191,23 +190,6 @@ public class Asset extends CcmObject implements InheritsPermissions {
itemAttachments.remove(itemAttachment); itemAttachments.remove(itemAttachment);
} }
@Override
public Optional<CcmObject> getParent() {
// For sharable assets the parent is the folder in the asset is stored
final Optional<CcmObject> folder = getFolder();
if (folder.isPresent()) {
return folder;
}
if (itemAttachments == null || itemAttachments.isEmpty()) {
return Optional.empty();
} else {
return Optional.of(itemAttachments.get(0).getAttachmentList()
.getItem());
}
}
private Optional<CcmObject> getFolder() { private Optional<CcmObject> getFolder() {
final Optional<Categorization> result = getCategories() final Optional<Categorization> result = getCategories()
.stream() .stream()

View File

@ -19,10 +19,8 @@
package org.librecms.contentsection; package org.librecms.contentsection;
import org.hibernate.envers.Audited; import org.hibernate.envers.Audited;
import org.libreccm.core.CcmObject;
import org.libreccm.core.Identifiable; import org.libreccm.core.Identifiable;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.libreccm.security.InheritsPermissions;
import org.libreccm.security.RecursivePermissions; import org.libreccm.security.RecursivePermissions;
import org.librecms.contentsection.privileges.AssetPrivileges; import org.librecms.contentsection.privileges.AssetPrivileges;
@ -31,7 +29,6 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import javax.persistence.AssociationOverride; import javax.persistence.AssociationOverride;
import javax.persistence.Column; import javax.persistence.Column;
@ -71,7 +68,6 @@ import static org.librecms.CmsConstants.*;
}) })
public class AttachmentList implements Comparable<AttachmentList>, public class AttachmentList implements Comparable<AttachmentList>,
Identifiable, Identifiable,
InheritsPermissions,
Serializable { Serializable {
private static final long serialVersionUID = -7931234562247075541L; private static final long serialVersionUID = -7931234562247075541L;
@ -174,15 +170,6 @@ public class AttachmentList implements Comparable<AttachmentList>,
protected void setItem(final ContentItem item) { protected void setItem(final ContentItem item) {
this.item = item; this.item = item;
} }
@Override
public Optional<CcmObject> getParent() {
if (item == null) {
return Optional.empty();
} else {
return Optional.of(item);
}
}
public String getName() { public String getName() {
return name; return name;

View File

@ -21,11 +21,9 @@ package org.librecms.contentsection;
import org.hibernate.envers.Audited; import org.hibernate.envers.Audited;
import org.hibernate.envers.RelationTargetAuditMode; import org.hibernate.envers.RelationTargetAuditMode;
import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.libreccm.categorization.Categorization; import org.libreccm.categorization.Categorization;
import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObject;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.libreccm.security.InheritsPermissions;
import org.libreccm.workflow.Workflow; import org.libreccm.workflow.Workflow;
import org.librecms.CmsConstants; import org.librecms.CmsConstants;
import org.librecms.lifecycle.Lifecycle; import org.librecms.lifecycle.Lifecycle;
@ -56,9 +54,6 @@ import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import org.hibernate.search.annotations.IndexedEmbedded; import org.hibernate.search.annotations.IndexedEmbedded;
import org.libreccm.security.RecursivePermissions;
import org.librecms.contentsection.privileges.AssetPrivileges;
import org.librecms.contentsection.privileges.ItemPrivileges;
import static org.librecms.CmsConstants.*; import static org.librecms.CmsConstants.*;
@ -72,6 +67,16 @@ import static org.librecms.CmsConstants.*;
@Table(name = "CONTENT_ITEMS", schema = DB_SCHEMA) @Table(name = "CONTENT_ITEMS", schema = DB_SCHEMA)
//@Indexed //@Indexed
@NamedQueries({ @NamedQueries({
@NamedQuery(
name = "ContentItem.findById",
query = "SELECT i FROM ContentItem i "
+ "WHERE i.objectId = :objectId "
+ "AND (EXISTS(SELECT p FROM Permission p "
+ "WHERE p.grantedPrivilege = 'read' "
+ "AND p.grantee IN :roles "
+ "AND p.object = i)"
+ "OR true = :admin)")
,
@NamedQuery( @NamedQuery(
name = "ContentItem.findByType", name = "ContentItem.findByType",
query = "SELECT i FROM ContentItem i WHERE TYPE(i) = :type") query = "SELECT i FROM ContentItem i WHERE TYPE(i) = :type")
@ -152,8 +157,7 @@ import static org.librecms.CmsConstants.*;
+ "WHERE i.workflow = :workflow" + "WHERE i.workflow = :workflow"
) )
}) })
public class ContentItem extends CcmObject implements Serializable, public class ContentItem extends CcmObject implements Serializable {
InheritsPermissions {
private static final long serialVersionUID = 5897287630227129653L; private static final long serialVersionUID = 5897287630227129653L;
@ -370,21 +374,6 @@ public class ContentItem extends CcmObject implements Serializable,
this.workflow = workflow; this.workflow = workflow;
} }
@Override
public Optional<CcmObject> getParent() {
final List<Categorization> result = getCategories().stream().filter(
categorization -> CmsConstants.CATEGORIZATION_TYPE_FOLDER.
equals(
categorization.getType()))
.collect(Collectors.toList());
if (result.isEmpty()) {
return Optional.empty();
} else {
return Optional.of(result.get(0).getCategory());
}
}
@Override @Override
public int hashCode() { public int hashCode() {
int hash = super.hashCode(); int hash = super.hashCode();

View File

@ -25,13 +25,11 @@ import static org.librecms.CmsConstants.*;
import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObject;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.libreccm.security.InheritsPermissions;
import org.libreccm.workflow.WorkflowTemplate; import org.libreccm.workflow.WorkflowTemplate;
import org.librecms.lifecycle.LifecycleDefinition; import org.librecms.lifecycle.LifecycleDefinition;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import javax.persistence.AssociationOverride; import javax.persistence.AssociationOverride;
import javax.persistence.Column; import javax.persistence.Column;
@ -71,8 +69,7 @@ import javax.persistence.Table;
+ "WHERE i.contentType = :type" + "WHERE i.contentType = :type"
) )
}) })
public class ContentType extends CcmObject implements InheritsPermissions, public class ContentType extends CcmObject implements Serializable {
Serializable {
private static final long serialVersionUID = -2708659750560382851L; private static final long serialVersionUID = -2708659750560382851L;
@ -193,11 +190,6 @@ public class ContentType extends CcmObject implements InheritsPermissions,
protected void setDefaultWorkflow(final WorkflowTemplate defaultWorkflow) { protected void setDefaultWorkflow(final WorkflowTemplate defaultWorkflow) {
this.defaultWorkflow = defaultWorkflow; this.defaultWorkflow = defaultWorkflow;
} }
@Override
public Optional<CcmObject> getParent() {
return Optional.of(contentSection);
}
@Override @Override
public int hashCode() { public int hashCode() {

View File

@ -25,7 +25,6 @@ import javax.persistence.Table;
import org.libreccm.categorization.Category; import org.libreccm.categorization.Category;
import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObject;
import org.libreccm.security.InheritsPermissions;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections; import java.util.Collections;
@ -60,8 +59,7 @@ import static org.librecms.CmsConstants.*;
name = "Folder.findByName", name = "Folder.findByName",
query = "SELECT f FROM Folder f WHERE f.name = :name") query = "SELECT f FROM Folder f WHERE f.name = :name")
}) })
public class Folder extends Category implements InheritsPermissions, public class Folder extends Category implements Serializable {
Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -94,15 +92,6 @@ public class Folder extends Category implements InheritsPermissions,
this.type = type; this.type = type;
} }
@Override
public Optional<CcmObject> getParent() {
if (getParentFolder() == null) {
return Optional.of(section);
} else {
return Optional.of(getParentFolder());
}
}
/** /**
* A convenient method for getting all sub folders of folder. * A convenient method for getting all sub folders of folder.
* *

View File

@ -28,7 +28,6 @@ import org.libreccm.core.CcmObject;
import org.libreccm.core.DefaultEntityGraph; import org.libreccm.core.DefaultEntityGraph;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.libreccm.portation.Portable; import org.libreccm.portation.Portable;
import org.libreccm.security.InheritsPermissions;
import org.libreccm.security.RecursivePermissions; import org.libreccm.security.RecursivePermissions;
import java.io.Serializable; import java.io.Serializable;
@ -75,7 +74,8 @@ import javax.xml.bind.annotation.XmlRootElement;
@NamedQueries({ @NamedQueries({
@NamedQuery( @NamedQuery(
name = "Category.topLevelCategories", name = "Category.topLevelCategories",
query = "SELECT c FROM Category c WHERE c.parentCategory IS NULL"), query = "SELECT c FROM Category c WHERE c.parentCategory IS NULL")
,
@NamedQuery( @NamedQuery(
name = "Category.findByName", name = "Category.findByName",
query = "SELECT c FROM Category c WHERE c.name = :name") query = "SELECT c FROM Category c WHERE c.name = :name")
@ -103,8 +103,7 @@ import javax.xml.bind.annotation.XmlRootElement;
}) })
@DefaultEntityGraph("Category.withSubCategoriesAndObjects") @DefaultEntityGraph("Category.withSubCategoriesAndObjects")
@XmlRootElement(name = "category", namespace = CAT_XML_NS) @XmlRootElement(name = "category", namespace = CAT_XML_NS)
public class Category extends CcmObject implements InheritsPermissions, public class Category extends CcmObject implements Serializable, Portable {
Serializable, Portable {
private static final long serialVersionUID = -7250208963391878547L; private static final long serialVersionUID = -7250208963391878547L;
@ -348,11 +347,6 @@ public class Category extends CcmObject implements InheritsPermissions,
this.categoryOrder = categoryOrder; this.categoryOrder = categoryOrder;
} }
@Override
public Optional<CcmObject> getParent() {
return Optional.ofNullable(getParentCategory());
}
@Override @Override
public int hashCode() { public int hashCode() {
int hash = super.hashCode(); int hash = super.hashCode();

View File

@ -1,49 +0,0 @@
/*
* Copyright (C) 2015 LibreCCM Foundation.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
package org.libreccm.security;
import org.libreccm.core.CcmObject;
import java.util.Optional;
/**
* Subclasses of {@link CcmObject} can implement this interface to inherit
* the permissions of their parent object. This interface is processed by the
* {@link PermissionChecker}.
*
* @see PermissionChecker#checkPermission(java.lang.String,
* org.libreccm.core.CcmObject)
* @see PermissionChecker#isPermitted(java.lang.String,
* org.libreccm.core.CcmObject)
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public interface InheritsPermissions {
/**
* This method needs to be overwritten by implementers of interface
*
* @return The parent object of the implementing object. The
* {@link PermissionChecker} will use the permissions granted on the parent
* object in addition to the permissions granted on the object itself to
* determine if a user is granted a specific privilege on the object.
*/
Optional<CcmObject> getParent();
}

View File

@ -63,7 +63,15 @@ import javax.persistence.OneToOne;
query = "SELECT COUNT(p) FROM Permission p " query = "SELECT COUNT(p) FROM Permission p "
+ "WHERE p.grantedPrivilege = :privilege " + "WHERE p.grantedPrivilege = :privilege "
+ "AND p.grantee = :grantee " + "AND p.grantee = :grantee "
+ "AND p.object = :object") + "AND p.object = :object "
+ "AND p.inherited = false")
,
@NamedQuery(name = "Permission.existsInheritedForPrivilegeRoleObject",
query = "SELECT COUNT(p) FROM Permission p "
+ "WHERE p.grantedPrivilege = :privilege "
+ "AND p.grantee = :grantee "
+ "AND p.object = :object "
+ "AND p.inherited = true")
, ,
@NamedQuery(name = "Permission.existsForPrivilegeAndRole", @NamedQuery(name = "Permission.existsForPrivilegeAndRole",
query = "SELECT count(p) FROM Permission p " query = "SELECT count(p) FROM Permission p "
@ -78,6 +86,7 @@ import javax.persistence.OneToOne;
@NamedQuery(name = "Permission.findPermissionsForCcmObject", @NamedQuery(name = "Permission.findPermissionsForCcmObject",
query = "SELECT p FROM Permission p " query = "SELECT p FROM Permission p "
+ "WHERE p.object = :object") + "WHERE p.object = :object")
}) })
@XmlRootElement(name = "permission", namespace = CORE_XML_NS) @XmlRootElement(name = "permission", namespace = CORE_XML_NS)
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)

View File

@ -105,8 +105,7 @@ public class PermissionChecker {
/** /**
* Checks if the current subject has a permission granting the provided * Checks if the current subject has a permission granting the provided
* {@code privilege} on the provided {@code object} or its parent object(s) * {@code privilege} on the provided {@code object}.
* if the object implements the {@link InheritsPermissions} interface.
* *
* @param privilege The granted privilege. * @param privilege The granted privilege.
* @param object The object on which the privilege is granted. * @param object The object on which the privilege is granted.
@ -116,33 +115,18 @@ public class PermissionChecker {
* subject. * subject.
*/ */
public boolean isPermitted(final String privilege, final CcmObject object) { public boolean isPermitted(final String privilege, final CcmObject object) {
final boolean result;
if (subject.isAuthenticated()) { if (subject.isAuthenticated()) {
result = subject.isPermitted(generatePermissionString( return subject.isPermitted(generatePermissionString(
privilege, object)); privilege, object));
} else { } else {
result = shiro.getPublicUser().isPermitted(generatePermissionString( return shiro.getPublicUser().isPermitted(generatePermissionString(
privilege, object)); privilege, object));
} }
if (result) {
return result;
} else if (object instanceof InheritsPermissions) {
if (((InheritsPermissions) object).getParent().isPresent()) {
return isPermitted(
privilege,
((InheritsPermissions) object).getParent().get());
} else {
return result;
}
} else {
return result;
}
} }
/** /**
* Checks if the provided {@code role} has a permission granting the * Checks if the provided {@code role} has a permission granting the
* provided {@code privilege} on the provided object or its parent object(s) * provided {@code privilege} on the provided object.
* if the object implements the {@link InheritsPermissions} interface.
* *
* @param privilege The granted privilege. * @param privilege The granted privilege.
* @param object The object on which the {@code privilege} is granted. * @param object The object on which the {@code privilege} is granted.
@ -181,23 +165,7 @@ public class PermissionChecker {
.filter(granted -> granted.getObject() != null) .filter(granted -> granted.getObject() != null)
.filter(granted -> object.equals(granted.getObject())) .filter(granted -> object.equals(granted.getObject()))
.findFirst(); .findFirst();
result = permission.isPresent(); return permission.isPresent();
if (result) {
return result;
} else if (object instanceof InheritsPermissions) {
if (((InheritsPermissions) object).getParent().isPresent()) {
return isPermitted(
privilege,
((InheritsPermissions) object).getParent().get(),
role);
} else {
return result;
}
} else {
return result;
}
} }
/** /**
@ -224,11 +192,8 @@ public class PermissionChecker {
* Checks if the current subject has a permission granting the provided * Checks if the current subject has a permission granting the provided
* privilege on the provided object. * privilege on the provided object.
* *
* If the object implements the {@link InheritsPermissions} interface the
* method also checks the parent objects for a permission granting the
* provided privilege.
* *
* @param privilege The privilige to check for. * @param privilege The privilege to check for.
* @param object The object on which the privilege is granted. * @param object The object on which the privilege is granted.
* *
* @throws AuthorizationException If there is no permission granting the * @throws AuthorizationException If there is no permission granting the
@ -238,23 +203,7 @@ public class PermissionChecker {
public void checkPermission(final String privilege, public void checkPermission(final String privilege,
final CcmObject object) final CcmObject object)
throws AuthorizationException { throws AuthorizationException {
if (object instanceof InheritsPermissions) { if (subject.isAuthenticated()) {
final boolean result = isPermitted(privilege, object);
if (!result) {
if (((InheritsPermissions) object).getParent().isPresent()) {
checkPermission(
privilege,
((InheritsPermissions) object).getParent().get());
} else if (subject.isAuthenticated()) {
subject.checkPermission(generatePermissionString(
privilege, object));
} else {
shiro.getPublicUser().checkPermission(
generatePermissionString(privilege, object));
}
}
} else if (subject.isAuthenticated()) {
subject.checkPermission(generatePermissionString(privilege, object)); subject.checkPermission(generatePermissionString(privilege, object));
} else { } else {
shiro.getPublicUser().checkPermission(generatePermissionString( shiro.getPublicUser().checkPermission(generatePermissionString(

View File

@ -97,40 +97,51 @@ public class PermissionManager {
"Can't grant a permission on object NULL."); "Can't grant a permission on object NULL.");
} }
if (existsInheritedPermission(privilege, grantee, object)) {
revokePrivilege(privilege, grantee, object);
}
if (!existsPermission(privilege, grantee, object)) { if (!existsPermission(privilege, grantee, object)) {
final Permission permission = new Permission(); final Permission permission = new Permission();
permission.setGrantee(grantee); permission.setGrantee(grantee);
permission.setGrantedPrivilege(privilege); permission.setGrantedPrivilege(privilege);
permission.setObject(object); permission.setObject(object);
permission.setInherited(false);
entityManager.persist(permission); entityManager.persist(permission);
grantRecursive(privilege, grantee, object, object.getClass()); grantRecursive(privilege, grantee, object, object.getClass(), object);
} }
} }
private void grantRecursive(final String privilege, private void grantRecursive(final String privilege,
final Role grantee, final Role grantee,
final CcmObject object, final CcmObject object,
final Class<?> clazz) { final Class<?> clazz,
final CcmObject inheritedFrom) {
final Field[] fields = clazz.getDeclaredFields(); final Field[] fields = clazz.getDeclaredFields();
Arrays.stream(fields) Arrays.stream(fields)
.filter(field -> field.isAnnotationPresent( .filter(field -> field.isAnnotationPresent(
RecursivePermissions.class)) RecursivePermissions.class))
.forEach(field -> { .forEach(field -> {
field.setAccessible(true); field.setAccessible(true);
grantRecursive(privilege, grantee, field, object); grantRecursive(privilege, grantee, field, object, inheritedFrom);
}); });
if (clazz.getSuperclass() != null) { if (clazz.getSuperclass() != null) {
grantRecursive(privilege, grantee, object, clazz.getSuperclass()); grantRecursive(privilege,
grantee,
object,
clazz.getSuperclass(),
inheritedFrom);
} }
} }
private void grantRecursive(final String privilege, private void grantRecursive(final String privilege,
final Role grantee, final Role grantee,
final Field field, final Field field,
final CcmObject owner) { final CcmObject owner,
final CcmObject inheritedFrom) {
final Object value; final Object value;
try { try {
value = field.get(owner); value = field.get(owner);
@ -147,19 +158,28 @@ public class PermissionManager {
collection.stream() collection.stream()
.filter(obj -> obj instanceof CcmObject) .filter(obj -> obj instanceof CcmObject)
.map(obj -> (CcmObject) obj) .map(obj -> (CcmObject) obj)
.forEach(obj -> grantPrivilege(privilege, grantee, obj)); .forEach(obj -> grantInherited(privilege,
grantee,
obj,
inheritedFrom));
collection.stream() collection.stream()
.filter(obj -> obj instanceof Relation) .filter(obj -> obj instanceof Relation)
.map(obj -> (Relation) obj) .map(obj -> (Relation) obj)
.filter(relation -> relation.getRelatedObject() != null) .filter(relation -> relation.getRelatedObject() != null)
.map(relation -> relation.getRelatedObject()) .map(relation -> relation.getRelatedObject())
.forEach(obj -> grantPrivilege(privilege, grantee, obj)); .forEach(obj -> grantInherited(privilege,
grantee,
obj,
inheritedFrom));
} else if (CcmObject.class.isAssignableFrom(field.getType())) { } else if (CcmObject.class.isAssignableFrom(field.getType())) {
grantPrivilege(privilege, grantee, (CcmObject) value); grantPrivilege(privilege, grantee, (CcmObject) value);
} else if (Relation.class.isAssignableFrom(field.getType())) { } else if (Relation.class.isAssignableFrom(field.getType())) {
final Relation relation = (Relation) value; final Relation relation = (Relation) value;
if (relation.getRelatedObject() != null) { if (relation.getRelatedObject() != null) {
grantPrivilege(privilege, grantee, relation.getRelatedObject()); grantInherited(privilege,
grantee,
relation.getRelatedObject(),
inheritedFrom);
} }
} else { } else {
throw new IllegalArgumentException(String.format( throw new IllegalArgumentException(String.format(
@ -170,6 +190,29 @@ public class PermissionManager {
} }
} }
private void grantInherited(final String privilege,
final Role grantee,
final CcmObject object,
final CcmObject inheritedFrom) {
if (!existsPermission(privilege, grantee, object)) {
final Permission permission = new Permission();
permission.setGrantee(grantee);
permission.setGrantedPrivilege(privilege);
permission.setObject(object);
permission.setInherited(true);
permission.setInheritedFrom(inheritedFrom);
entityManager.persist(permission);
grantRecursive(privilege,
grantee,
object,
object.getClass(),
inheritedFrom);
}
}
/** /**
* Grants a privilege to a role. If the privilege was already granted, the * Grants a privilege to a role. If the privilege was already granted, the
* method does nothing. * method does nothing.
@ -250,8 +293,8 @@ public class PermissionManager {
+ "AND p.inherited = true"); + "AND p.inherited = true");
deleteInheritedQuery.setParameter(QUERY_PARAM_PRIVILEGE, privilege); deleteInheritedQuery.setParameter(QUERY_PARAM_PRIVILEGE, privilege);
deleteInheritedQuery.setParameter(QUERY_PARAM_GRANTEE, grantee); deleteInheritedQuery.setParameter(QUERY_PARAM_GRANTEE, grantee);
deleteInheritedQuery.setParameter("p.inheritedFrom", object); deleteInheritedQuery.setParameter("object", object);
deleteQuery.executeUpdate(); deleteInheritedQuery.executeUpdate();
} }
} }
@ -361,8 +404,9 @@ public class PermissionManager {
} }
/** /**
* Checks if a permission granting the provided {@code privilege} on the * Checks if a not inherited permission granting the provided
* provided {@code object} to the provided {@code role} exists. * {@code privilege} on the provided {@code object} to the provided
* {@code role} exists.
* *
* @param privilege The privilege granted by the permission. * @param privilege The privilege granted by the permission.
* @param grantee The role to which the privilege was granted. * @param grantee The role to which the privilege was granted.
@ -383,6 +427,18 @@ public class PermissionManager {
return query.getSingleResult() > 0; return query.getSingleResult() > 0;
} }
private boolean existsInheritedPermission(final String privilege,
final Role grantee,
final CcmObject object) {
final TypedQuery<Long> query = entityManager.createNamedQuery(
"Permission.existsInheritedForPrivilegeRoleObject", Long.class);
query.setParameter(QUERY_PARAM_PRIVILEGE, privilege);
query.setParameter(QUERY_PARAM_GRANTEE, grantee);
query.setParameter(QUERY_PARAM_OBJECT, object);
return query.getSingleResult() > 0;
}
/** /**
* Checks if a permission granting the provided {@code privilege}to the * Checks if a permission granting the provided {@code privilege}to the
* provided {@code role} exists. * provided {@code role} exists.

View File

@ -58,6 +58,8 @@ import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* Tests for the {@link CategoryManager}. * Tests for the {@link CategoryManager}.
* *
@ -68,6 +70,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class CategoryManagerTest { public class CategoryManagerTest {
@Inject @Inject

View File

@ -49,8 +49,11 @@ import org.libreccm.tests.categories.IntegrationTest;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -60,6 +63,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class CategoryRepositoryTest { public class CategoryRepositoryTest {
@Inject @Inject

View File

@ -50,6 +50,8 @@ import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* Tests for the {@link ConfigurationManager}. * Tests for the {@link ConfigurationManager}.
* *
@ -60,6 +62,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class ConfigurationManagerTest { public class ConfigurationManagerTest {
@Inject @Inject

View File

@ -52,6 +52,8 @@ import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* Tests for the {@link CcmObjectRepository} which is the foundation for many * Tests for the {@link CcmObjectRepository} which is the foundation for many
* other repositories in LibreCCM. * other repositories in LibreCCM.
@ -63,6 +65,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class CcmObjectRepositoryTest { public class CcmObjectRepositoryTest {
@Inject @Inject

View File

@ -38,12 +38,13 @@ import org.junit.runner.RunWith;
import org.libreccm.configuration.ExampleConfiguration; import org.libreccm.configuration.ExampleConfiguration;
import org.libreccm.tests.categories.IntegrationTest; import org.libreccm.tests.categories.IntegrationTest;
import javax.inject.Inject; import javax.inject.Inject;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
@ -54,6 +55,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class ConfigurationLoaderTest { public class ConfigurationLoaderTest {
@Inject @Inject

View File

@ -38,12 +38,14 @@ import org.libreccm.tests.categories.IntegrationTest;
import static org.libreccm.testutils.DependenciesHelpers.getModuleDependencies; import static org.libreccm.testutils.DependenciesHelpers.getModuleDependencies;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* Test class. Tests the import capabilities of the core module * Test class. Tests the import capabilities of the core module
* {@code Portation} with data from the trunk implementations * {@code Portation} with data from the trunk implementations
* *
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a> * @author <a href="mailto:tosmers@uni-bremen.de">Tobias Osmers</a>
* @version created on 12/1/16 * @version created on 12/1/16
*/ */
@org.junit.experimental.categories.Category(IntegrationTest.class) @org.junit.experimental.categories.Category(IntegrationTest.class)
@ -51,6 +53,7 @@ import static org.libreccm.testutils.DependenciesHelpers.getModuleDependencies;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class CoreDataImportTest { public class CoreDataImportTest {
private ImportHelper importHelper; private ImportHelper importHelper;

View File

@ -44,13 +44,15 @@ import org.libreccm.core.CcmObjectRepository;
import org.libreccm.security.authorization.LabBean; import org.libreccm.security.authorization.LabBean;
import org.libreccm.tests.categories.IntegrationTest; import org.libreccm.tests.categories.IntegrationTest;
import javax.inject.Inject; import javax.inject.Inject;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -60,6 +62,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class AuthorizationInterceptorTest { public class AuthorizationInterceptorTest {
@Inject @Inject

View File

@ -40,14 +40,16 @@ import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.libreccm.tests.categories.IntegrationTest; import org.libreccm.tests.categories.IntegrationTest;
import javax.inject.Inject; import javax.inject.Inject;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -57,6 +59,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema("create_ccm_core_schema.sql") @CreateSchema("create_ccm_core_schema.sql")
@CleanupUsingScript({"cleanup.sql"})
public class ChallengeManagerTest { public class ChallengeManagerTest {
@Inject @Inject

View File

@ -45,8 +45,11 @@ import org.libreccm.tests.categories.IntegrationTest;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -56,6 +59,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class GroupManagerTest { public class GroupManagerTest {
@Inject @Inject

View File

@ -43,8 +43,10 @@ import org.junit.After;
import org.junit.AfterClass; import org.junit.AfterClass;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
@ -61,6 +63,7 @@ import org.libreccm.tests.categories.IntegrationTest;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema("create_ccm_core_schema.sql") @CreateSchema("create_ccm_core_schema.sql")
@CleanupUsingScript({"cleanup.sql"})
public class GroupRepositoryTest { public class GroupRepositoryTest {
private static final String ADMINS = "admins"; private static final String ADMINS = "admins";
@ -117,6 +120,7 @@ public class GroupRepositoryTest {
.addPackage(org.libreccm.tests.categories.IntegrationTest.class .addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage()) .getPackage())
.addClass(org.libreccm.portation.Portable.class) .addClass(org.libreccm.portation.Portable.class)
.addClass(com.arsdigita.util.UncheckedWrapperException.class)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",

View File

@ -52,8 +52,11 @@ import java.util.List;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -63,6 +66,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema("create_ccm_core_schema.sql") @CreateSchema("create_ccm_core_schema.sql")
@CleanupUsingScript({"cleanup.sql"})
public class OneTimeAuthManagerTest { public class OneTimeAuthManagerTest {
@Inject @Inject

View File

@ -49,8 +49,11 @@ import java.util.List;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -60,6 +63,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class PartyRepositoryTest { public class PartyRepositoryTest {
private static final String MMUSTER = "mmuster"; private static final String MMUSTER = "mmuster";

View File

@ -55,8 +55,11 @@ import java.util.List;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -66,6 +69,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class PermissionCheckerTest { public class PermissionCheckerTest {
@Inject @Inject

View File

@ -50,6 +50,7 @@ import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
import org.libreccm.categorization.CategorizationConstants; import org.libreccm.categorization.CategorizationConstants;
import org.libreccm.core.CoreConstants; import org.libreccm.core.CoreConstants;
@ -66,6 +67,7 @@ import java.util.List;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript(value = {"cleanup.sql"})
public class PermissionManagerTest { public class PermissionManagerTest {
@Inject @Inject
@ -105,38 +107,38 @@ public class PermissionManagerTest {
@Deployment @Deployment
public static WebArchive createDeployment() { public static WebArchive createDeployment() {
return ShrinkWrap return ShrinkWrap
.create(WebArchive.class, .create(WebArchive.class,
"LibreCCM-org.libreccm.security.PermissionManagerTest.war"). "LibreCCM-org.libreccm.security.PermissionManagerTest.war").
addPackage(org.libreccm.categorization.Categorization.class addPackage(org.libreccm.categorization.Categorization.class
.getPackage()) .getPackage())
.addPackage(org.libreccm.configuration.Configuration.class .addPackage(org.libreccm.configuration.Configuration.class
.getPackage()) .getPackage())
.addPackage(org.libreccm.core.CcmObject.class.getPackage()) .addPackage(org.libreccm.core.CcmObject.class.getPackage())
.addPackage(org.libreccm.jpa.EntityManagerProducer.class .addPackage(org.libreccm.jpa.EntityManagerProducer.class
.getPackage()) .getPackage())
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class .addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
.getPackage()) .getPackage())
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()). .addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()).
addPackage(org.libreccm.security.User.class.getPackage()) addPackage(org.libreccm.security.User.class.getPackage())
.addPackage(org.libreccm.tests.categories.IntegrationTest.class .addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage()) .getPackage())
.addPackage(org.libreccm.testutils.EqualsVerifier.class .addPackage(org.libreccm.testutils.EqualsVerifier.class
.getPackage()) .getPackage())
.addPackage(org.libreccm.web.CcmApplication.class.getPackage()) .addPackage(org.libreccm.web.CcmApplication.class.getPackage())
.addPackage(org.libreccm.workflow.Workflow.class.getPackage()) .addPackage(org.libreccm.workflow.Workflow.class.getPackage())
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage()). .addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage()).
addPackage(com.arsdigita.kernel.security.SecurityConfig.class addPackage(com.arsdigita.kernel.security.SecurityConfig.class
.getPackage()) .getPackage())
.addPackage(com.arsdigita.util.UncheckedWrapperException.class .addPackage(com.arsdigita.util.UncheckedWrapperException.class
.getPackage()) .getPackage())
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage()) .addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
.addClass(org.libreccm.portation.Portable.class) .addClass(org.libreccm.portation.Portable.class)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsWebInfResource("test-web.xml", "web.xml") .addAsWebInfResource("test-web.xml", "web.xml")
.addAsWebInfResource("META-INF/beans.xml", "beans.xml"); .addAsWebInfResource("META-INF/beans.xml", "beans.xml");
} }
/** /**
@ -175,11 +177,11 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-grant.yml", + "after-grant.yml",
excludeColumns = {"permission_id"}) excludeColumns = {"permission_id"})
@InSequence(200) @InSequence(200)
public void grantPermission() { public void grantPermission() {
final Role role2 = roleRepository.findByName("role2"); final Role role2 = roleRepository.findByName("role2");
@ -200,10 +202,10 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "data.yml") + "data.yml")
@InSequence(210) @InSequence(210)
public void grantPermissionAgain() { public void grantPermissionAgain() {
final Role role1 = roleRepository.findByName("role1"); final Role role1 = roleRepository.findByName("role1");
@ -222,12 +224,11 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet("datasets/org/libreccm/security/PermissionManagerTest/" @UsingDataSet("datasets/org/libreccm/security/PermissionManagerTest/"
+ "data-recursivly.yml") + "data-recursivly.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-grant-recursivly.yml", + "after-grant-recursivly.yml",
excludeColumns = {"permission_id"}, excludeColumns = {"permission_id"})
orderBy = {"permissions.permission_id desc"})
@InSequence(211) @InSequence(211)
public void grantPermissionRecursively() { public void grantPermissionRecursively() {
final Role role1 = roleRepository.findByName("role1"); final Role role1 = roleRepository.findByName("role1");
@ -243,22 +244,22 @@ public class PermissionManagerTest {
* inherited from an object converts the permission to a directly granted * inherited from an object converts the permission to a directly granted
* one. * one.
*/ */
@Test // @Test
@UsingDataSet("datasets/org/libreccm/security/PermissionManagerTest/" // @UsingDataSet("datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-grant-recursivly.yml") // + "after-grant-recursivly.yml")
@ShouldMatchDataSet( // @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" // value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-grant-inherited.yml", // + "after-grant-inherited.yml",
excludeColumns = {"permission_id"}) // excludeColumns = {"permission_id"})
@InSequence(212) // @InSequence(212)
public void grantInheritedPermission() { // public void grantInheritedPermission() {
final Role role1 = roleRepository.findByName("role1"); // final Role role1 = roleRepository.findByName("role1");
final CcmObject category2 = ccmObjectRepository.findById(-20001L); // final CcmObject category2 = ccmObjectRepository.findById(-20002L);
//
shiro.getSystemUser().execute(() -> { // shiro.getSystemUser().execute(() -> {
permissionManager.grantPrivilege("privilege4", role1, category2); // permissionManager.grantPrivilege("privilege4", role1, category2);
}); // });
} // }
/** /**
* Verifies that * Verifies that
@ -270,7 +271,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(220) @InSequence(220)
public void grantPermissionPrivilegeNull() throws Throwable { public void grantPermissionPrivilegeNull() throws Throwable {
@ -278,7 +279,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.grantPrivilege(null, role1)); () -> permissionManager.grantPrivilege(null, role1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -294,7 +295,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(225) @InSequence(225)
public void grantPermissionOnObjectPrivilegeNull() throws Throwable { public void grantPermissionOnObjectPrivilegeNull() throws Throwable {
@ -303,7 +304,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.grantPrivilege(null, role1, object1)); () -> permissionManager.grantPrivilege(null, role1, object1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -319,7 +320,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(230) @InSequence(230)
public void grantPermissionEmptyPrivilege() throws Throwable { public void grantPermissionEmptyPrivilege() throws Throwable {
@ -327,7 +328,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.grantPrivilege("", role1)); () -> permissionManager.grantPrivilege("", role1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -343,7 +344,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(235) @InSequence(235)
public void grantPermissionOnObjectEmptyPrivilege() throws Throwable { public void grantPermissionOnObjectEmptyPrivilege() throws Throwable {
@ -352,7 +353,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.grantPrivilege("", role1, object1)); () -> permissionManager.grantPrivilege("", role1, object1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -368,13 +369,13 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(240) @InSequence(240)
public void grantPermissionToRoleNull() throws Throwable { public void grantPermissionToRoleNull() throws Throwable {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.grantPrivilege("privilege", null)); () -> permissionManager.grantPrivilege("privilege", null));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -390,7 +391,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(240) @InSequence(240)
public void grantPermissionOnObjectToRoleNull() throws Throwable { public void grantPermissionOnObjectToRoleNull() throws Throwable {
@ -398,9 +399,9 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.grantPrivilege("privilege", () -> permissionManager.grantPrivilege("privilege",
null, null,
object1)); object1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -416,7 +417,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(250) @InSequence(250)
public void grantPermissionNullObject() throws Throwable { public void grantPermissionNullObject() throws Throwable {
@ -424,9 +425,9 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.grantPrivilege("privilege1", () -> permissionManager.grantPrivilege("privilege1",
role1, role1,
null)); null));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -441,11 +442,11 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-revoke.yml", + "after-revoke.yml",
excludeColumns = {"permission_id"}) excludeColumns = {"permission_id"})
@InSequence(300) @InSequence(300)
public void revokePermission() { public void revokePermission() {
final Role role1 = roleRepository.findByName("role1"); final Role role1 = roleRepository.findByName("role1");
@ -467,16 +468,16 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "data.yml") + "data.yml")
@InSequence(310) @InSequence(310)
public void revokeNotExistingPermission() throws Throwable { public void revokeNotExistingPermission() throws Throwable {
final Role role1 = roleRepository.findByName("role1"); final Role role1 = roleRepository.findByName("role1");
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege("privilege999", role1)); () -> permissionManager.revokePrivilege("privilege999", role1));
} }
/** /**
@ -485,10 +486,10 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet("datasets/org/libreccm/security/PermissionManagerTest/" @UsingDataSet("datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-grant-recursivly.yml") + "after-grant-recursivly.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-revoke-recursivly.yml") + "after-revoke-recursivly.yml")
@InSequence(311) @InSequence(311)
public void revokePermissionRecursivly() { public void revokePermissionRecursivly() {
final Role role1 = roleRepository.findByName("role1"); final Role role1 = roleRepository.findByName("role1");
@ -508,19 +509,19 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "data.yml") + "data.yml")
@InSequence(310) @InSequence(310)
public void revokeNotExistingPermissionOnObject() { public void revokeNotExistingPermissionOnObject() {
final Role role1 = roleRepository.findByName("role1"); final Role role1 = roleRepository.findByName("role1");
final CcmObject object1 = ccmObjectRepository.findById(-20001L); final CcmObject object1 = ccmObjectRepository.findById(-20001L);
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege("privilege999", () -> permissionManager.revokePrivilege("privilege999",
role1, role1,
object1)); object1));
} }
/** /**
@ -533,7 +534,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(320) @InSequence(320)
public void revokePermissionPrivilegeNull() throws Throwable { public void revokePermissionPrivilegeNull() throws Throwable {
@ -541,7 +542,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege(null, role1)); () -> permissionManager.revokePrivilege(null, role1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -557,7 +558,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(320) @InSequence(320)
public void revokePermissionOnObjectPrivilegeNull() throws Throwable { public void revokePermissionOnObjectPrivilegeNull() throws Throwable {
@ -566,8 +567,8 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager. () -> permissionManager.
revokePrivilege(null, role1, object1)); revokePrivilege(null, role1, object1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -583,7 +584,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(330) @InSequence(330)
public void revokePermissionEmptyPrivilege() throws Throwable { public void revokePermissionEmptyPrivilege() throws Throwable {
@ -591,7 +592,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege("", role1)); () -> permissionManager.revokePrivilege("", role1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -606,9 +607,9 @@ public class PermissionManagerTest {
* @throws Throwable * @throws Throwable
*/ */
@Test(expected @Test(expected
= IllegalArgumentException.class) = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(320) @InSequence(320)
public void revokePermissionOnObjectEmptyPrivilege() throws Throwable { public void revokePermissionOnObjectEmptyPrivilege() throws Throwable {
@ -617,7 +618,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege("", role1, object1)); () -> permissionManager.revokePrivilege("", role1, object1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -632,15 +633,15 @@ public class PermissionManagerTest {
* @throws Throwable * @throws Throwable
*/ */
@Test(expected @Test(expected
= IllegalArgumentException.class) = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(340) @InSequence(340)
public void revokePermissionFromRoleNull() throws Throwable { public void revokePermissionFromRoleNull() throws Throwable {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege("privilege1", null)); () -> permissionManager.revokePrivilege("privilege1", null));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -656,7 +657,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(345) @InSequence(345)
public void revokePermissionOnObjectFromRoleNull() throws Throwable { public void revokePermissionOnObjectFromRoleNull() throws Throwable {
@ -664,9 +665,9 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege("privilege1", () -> permissionManager.revokePrivilege("privilege1",
null, null,
object1)); object1));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -682,7 +683,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(350) @InSequence(350)
public void revokePermissionNullObject() throws Throwable { public void revokePermissionNullObject() throws Throwable {
@ -690,9 +691,9 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.revokePrivilege("privilege2", () -> permissionManager.revokePrivilege("privilege2",
role1, role1,
null)); null));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -707,18 +708,18 @@ public class PermissionManagerTest {
*/ */
@Test @Test
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/libreccm/security/PermissionManagerTest/" value = "datasets/org/libreccm/security/PermissionManagerTest/"
+ "after-copy.yml", + "after-copy.yml",
excludeColumns = {"permission_id"}) excludeColumns = {"permission_id"})
@InSequence(400) @InSequence(400)
public void copyPermissions() throws Throwable { public void copyPermissions() throws Throwable {
final CcmObject object2 = ccmObjectRepository.findById(-20002L); final CcmObject object2 = ccmObjectRepository.findById(-20002L);
final CcmObject object3 = ccmObjectRepository.findById(-20003L); final CcmObject object3 = ccmObjectRepository.findById(-20003L);
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.copyPermissions(object2, object3)); () -> permissionManager.copyPermissions(object2, object3));
} }
/** /**
@ -731,7 +732,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(410) @InSequence(410)
public void copyPermissionsNullSource() throws Throwable { public void copyPermissionsNullSource() throws Throwable {
@ -739,7 +740,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.copyPermissions(null, object3)); () -> permissionManager.copyPermissions(null, object3));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -755,7 +756,7 @@ public class PermissionManagerTest {
*/ */
@Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class)
@UsingDataSet( @UsingDataSet(
"datasets/org/libreccm/security/PermissionManagerTest/data.yml") "datasets/org/libreccm/security/PermissionManagerTest/data.yml")
@ShouldThrowException(IllegalArgumentException.class) @ShouldThrowException(IllegalArgumentException.class)
@InSequence(420) @InSequence(420)
public void copyPermissionsNullTarget() throws Throwable { public void copyPermissionsNullTarget() throws Throwable {
@ -763,7 +764,7 @@ public class PermissionManagerTest {
try { try {
shiro.getSystemUser().execute( shiro.getSystemUser().execute(
() -> permissionManager.copyPermissions(object2, null)); () -> permissionManager.copyPermissions(object2, null));
} catch (ExecutionException ex) { } catch (ExecutionException ex) {
throw ex.getCause(); throw ex.getCause();
} }
@ -779,9 +780,9 @@ public class PermissionManagerTest {
public void verifyListPrivileges() { public void verifyListPrivileges() {
final List<String> corePrivileges = permissionManager final List<String> corePrivileges = permissionManager
.listDefiniedPrivileges(CoreConstants.class); .listDefiniedPrivileges(CoreConstants.class);
final List<String> catPrivileges = permissionManager final List<String> catPrivileges = permissionManager
.listDefiniedPrivileges(CategorizationConstants.class); .listDefiniedPrivileges(CategorizationConstants.class);
assertThat(corePrivileges, is(not(nullValue()))); assertThat(corePrivileges, is(not(nullValue())));
assertThat(corePrivileges.isEmpty(), is(false)); assertThat(corePrivileges.isEmpty(), is(false));

View File

@ -47,6 +47,8 @@ import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -56,6 +58,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class RoleManagerTest { public class RoleManagerTest {
@Inject @Inject

View File

@ -45,13 +45,17 @@ import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObject;
import org.libreccm.core.CcmObjectRepository; import org.libreccm.core.CcmObjectRepository;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* Tests for the {@link RoleRepository}. Note. We are not enabling the * Tests for the {@link RoleRepository}. Note. We are not enabling the
* {@link AuthorizationInterceptor} for this test. * {@link AuthorizationInterceptor} for this test.
@ -63,6 +67,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class RoleRepositoryTest { public class RoleRepositoryTest {
private static final String ADMINISTRATOR = "administrator"; private static final String ADMINISTRATOR = "administrator";
@ -121,6 +126,7 @@ public class RoleRepositoryTest {
.addPackage(org.libreccm.tests.categories.IntegrationTest.class .addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage()) .getPackage())
.addClass(org.libreccm.portation.Portable.class) .addClass(org.libreccm.portation.Portable.class)
.addClass(com.arsdigita.util.UncheckedWrapperException.class)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("configs/shiro.ini", "shiro.ini") .addAsResource("configs/shiro.ini", "shiro.ini")
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",

View File

@ -51,8 +51,11 @@ import org.libreccm.tests.categories.IntegrationTest;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -62,6 +65,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class SecuredCollectionTest { public class SecuredCollectionTest {
private static final String ACCESS_DENIED = "Access denied"; private static final String ACCESS_DENIED = "Access denied";

View File

@ -52,8 +52,11 @@ import javax.inject.Inject;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -63,6 +66,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class SecuredIteratorTest { public class SecuredIteratorTest {
private static final String ACCESS_DENIED = "Access denied"; private static final String ACCESS_DENIED = "Access denied";

View File

@ -21,7 +21,6 @@ package org.libreccm.security;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authc.UsernamePasswordToken;
import javax.inject.Inject; import javax.inject.Inject;
import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.PrincipalCollection;
@ -51,8 +50,11 @@ import org.libreccm.tests.categories.IntegrationTest;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -62,6 +64,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class ShiroTest { public class ShiroTest {
@Inject @Inject
@ -118,6 +121,7 @@ public class ShiroTest {
.getPackage()) .getPackage())
.addClass(org.libreccm.portation.Portable.class) .addClass(org.libreccm.portation.Portable.class)
.addClass(org.libreccm.security.authorization.LabBean.class) .addClass(org.libreccm.security.authorization.LabBean.class)
.addClass(com.arsdigita.util.UncheckedWrapperException.class)
.addAsLibraries(getModuleDependencies()) .addAsLibraries(getModuleDependencies())
.addAsResource("test-persistence.xml", .addAsResource("test-persistence.xml",
"META-INF/persistence.xml") "META-INF/persistence.xml")

View File

@ -52,6 +52,8 @@ import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -61,6 +63,7 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class UserManagerTest { public class UserManagerTest {
@Inject @Inject

View File

@ -41,6 +41,7 @@ import static org.junit.Assert.*;
import static org.libreccm.testutils.DependenciesHelpers.*; import static org.libreccm.testutils.DependenciesHelpers.*;
import org.jboss.arquillian.persistence.CleanupUsingScript;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.experimental.categories.Category; import org.junit.experimental.categories.Category;
@ -63,6 +64,7 @@ import javax.persistence.PersistenceContext;
@PersistenceTest @PersistenceTest
@Transactional(TransactionMode.COMMIT) @Transactional(TransactionMode.COMMIT)
@CreateSchema({"create_ccm_core_schema.sql"}) @CreateSchema({"create_ccm_core_schema.sql"})
@CleanupUsingScript({"cleanup.sql"})
public class UserRepositoryTest { public class UserRepositoryTest {
private static final String NOBODY = "nobody"; private static final String NOBODY = "nobody";

View File

@ -19,7 +19,7 @@
Disable automatic cleanup, does not work because of referential Disable automatic cleanup, does not work because of referential
integrity constrains. integrity constrains.
--> -->
<property name="defaultCleanupPhase">NONE</property> <!--property name="defaultCleanupPhase">NONE</property>-->
<property name="dumpData">true</property> <property name="dumpData">true</property>
<property name="dumpDirectory">target</property> <property name="dumpDirectory">target</property>
@ -32,9 +32,9 @@
<property name="qualifiedTableNames">true</property> <property name="qualifiedTableNames">true</property>
</extension> </extension>
<extension qualifier="persistence-script"> <!--<extension qualifier="persistence-script">
<property name="scriptsToExecuteAfterTest">scripts/h2-cleanup.sql</property> <property name="scriptsToExecuteAfterTest">scripts/h2-cleanup.sql</property>
</extension> </extension>-->
</arquillian> </arquillian>

View File

@ -0,0 +1,41 @@
DELETE FROM ccm_core.settings_string_list;
DELETE FROM ccm_core.settings_l10n_str_values;
DELETE FROM ccm_core.settings_enum_values;
DELETE FROM ccm_core.settings_enum_values;
DELETE FROM ccm_core.settings;
DELETE FROM ccm_core.categorizations;
DELETE FROM ccm_core.category_domains;
DELETE FROM ccm_core.categories;
DELETE FROM ccm_core.permissions;
DELETE FROM ccm_core.ccm_objects;
DELETE FROM ccm_core.role_memberships;
DELETE FROM ccm_core.group_memberships;
DELETE FROM ccm_core.groups;
DELETE FROM ccm_core.one_time_auth_tokens;
DELETE FROM ccm_core.users;
DELETE FROM ccm_core.user_email_addresses;
DELETE FROM ccm_core.parties;
DELETE FROM ccm_core.ccm_roles;
DELETE FROM ccm_core.ccm_objects_aud;
DELETE FROM ccm_core.ccm_revisions;
ALTER SEQUENCE hibernate_sequence RESTART WITH 1;

View File

@ -18,7 +18,7 @@
Disable automatic cleanup, does not work because of referential Disable automatic cleanup, does not work because of referential
integrity constrains. integrity constrains.
--> -->
<property name="defaultCleanupPhase">NONE</property> <!--<property name="defaultCleanupPhase">NONE</property>-->
<property name="dumpData">true</property> <property name="dumpData">true</property>
<property name="dumpDirectory">target</property> <property name="dumpDirectory">target</property>
@ -26,14 +26,14 @@
<extension qualifier="persistence-dbunit"> <extension qualifier="persistence-dbunit">
<property name="defaultDataSetFormat">json</property> <property name="defaultDataSetFormat">json</property>
<!--<property name="datatypeFactory">org.dbunit.ext.h2.H2DataTypeFactory</property>--> <property name="datatypeFactory">org.dbunit.ext.postgresql.PostgresqlDataTypeFactory</property>
<property name="excludePoi">true</property> <property name="excludePoi">true</property>
<property name="qualifiedTableNames">true</property> <property name="qualifiedTableNames">true</property>
</extension> </extension>
<extension qualifier="persistence-script"> <!--<extension qualifier="persistence-script">
<property name="scriptsToExecuteAfterTest">scripts/pgsql-cleanup.sql</property> <property name="scriptsToExecuteAfterTest">scripts/pgsql-cleanup.sql</property>
</extension> </extension>-->
</arquillian> </arquillian>

View File

@ -0,0 +1,41 @@
DELETE FROM ccm_core.settings_string_list;
DELETE FROM ccm_core.settings_l10n_str_values;
DELETE FROM ccm_core.settings_enum_values;
DELETE FROM ccm_core.settings_enum_values;
DELETE FROM ccm_core.settings;
DELETE FROM ccm_core.categorizations;
DELETE FROM ccm_core.category_domains;
DELETE FROM ccm_core.categories;
DELETE FROM ccm_core.permissions;
DELETE FROM ccm_core.ccm_objects;
DELETE FROM ccm_core.role_memberships;
DELETE FROM ccm_core.group_memberships;
DELETE FROM ccm_core.groups;
DELETE FROM ccm_core.one_time_auth_tokens;
DELETE FROM ccm_core.users;
DELETE FROM ccm_core.user_email_addresses;
DELETE FROM ccm_core.parties;
DELETE FROM ccm_core.ccm_roles;
DELETE FROM ccm_core.ccm_objects_aud;
DELETE FROM ccm_core.ccm_revisions;
ALTER SEQUENCE hibernate_sequence RESTART;

View File

@ -124,15 +124,55 @@ ccm_core.permissions:
granted_privilege: manage_category granted_privilege: manage_category
grantee_id: -4000 grantee_id: -4000
object_id: -2000 object_id: -2000
inherited: false
- permission_id: -6010
granted_privilege: manage_category
grantee_id: -4000
object_id: -2100
inherited: true
inherited_from_id: -2000
- permission_id: -6020
granted_privilege: manage_category
grantee_id: -4000
object_id: -2200
inherited: true
inherited_from_id: -2000
- permission_id: -6100 - permission_id: -6100
granted_privilege: manage_category_objects granted_privilege: manage_category_objects
grantee_id: -4000 grantee_id: -4000
object_id: -2000 object_id: -2000
inherited: false
- permission_id: -6110
granted_privilege: manage_category_objects
grantee_id: -4000
object_id: -2100
inherited: true
inherited_from_id: -2000
- permission_id: -6120
granted_privilege: manage_category_objects
grantee_id: -4000
object_id: -2200
inherited: true
inherited_from_id: -2000
- permission_id: -6200 - permission_id: -6200
granted_privilege: manage_category granted_privilege: manage_category
grantee_id: -4100 grantee_id: -4100
object_id: -2100 object_id: -2100
inherited: false
- permission_id: -6210
granted_privilege: manage_category
grantee_id: -4100
object_id: -2200
inherited: true
inherited_from_id: -2100
- permission_id: -6300 - permission_id: -6300
granted_privilege: manage_category_objects granted_privilege: manage_category_objects
grantee_id: -4100 grantee_id: -4100
object_id: -2100 object_id: -2100
inherited: false
- permission_id: -6310
granted_privilege: manage_category_objects
grantee_id: -4100
object_id: -2200
inherited: true
inherited_from_id: -2100

View File

@ -108,8 +108,10 @@ ccm_core.permissions:
- permission_id: -700 - permission_id: -700
granted_privilege: manage_category granted_privilege: manage_category
grantee_id: -500 grantee_id: -500
inherited: false
- permission_id: -710 - permission_id: -710
granted_privilege: manage_category granted_privilege: manage_category
grantee_id: -510 grantee_id: -510
object_id: -1000 object_id: -1000
inherited: false

View File

@ -98,7 +98,9 @@ ccm_core.permissions:
- permission_id: -700 - permission_id: -700
granted_privilege: manage_category granted_privilege: manage_category
grantee_id: -500 grantee_id: -500
inherited: false
- permission_id: -710 - permission_id: -710
granted_privilege: manage_category granted_privilege: manage_category
grantee_id: -510 grantee_id: -510
object_id: -1000 object_id: -1000
inherited: false

View File

@ -17,16 +17,20 @@ ccm_core.permissions:
- permission_id: -30001 - permission_id: -30001
granted_privilege: privilege1 granted_privilege: privilege1
grantee_id: -10001 grantee_id: -10001
inherited: false
- permission_id: -30002 - permission_id: -30002
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20001 object_id: -20001
grantee_id: -10001 grantee_id: -10001
inherited: false
- permission_id: -30003 - permission_id: -30003
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20002 object_id: -20002
grantee_id: -10002 grantee_id: -10002
inherited: false
- permission_id: -30004 - permission_id: -30004
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20003 object_id: -20003
grantee_id: -10002 grantee_id: -10002
inherited: false

View File

@ -18,4 +18,5 @@ ccm_core.permissions:
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20002 object_id: -20002
grantee_id: -10002 grantee_id: -10002
inherited: false

View File

@ -17,11 +17,14 @@ ccm_core.permissions:
- permission_id: -30001 - permission_id: -30001
granted_privilege: privilege1 granted_privilege: privilege1
grantee_id: -10001 grantee_id: -10001
inherited: false
- permission_id: -30002 - permission_id: -30002
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20001 object_id: -20001
grantee_id: -10001 grantee_id: -10001
inherited: false
- permission_id: -30003 - permission_id: -30003
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20002 object_id: -20002
grantee_id: -10002 grantee_id: -10002
inherited: false

View File

@ -123,21 +123,25 @@ ccm_core.permissions:
- permission_id: -30001 - permission_id: -30001
granted_privilege: privilege1 granted_privilege: privilege1
grantee_id: -10001 grantee_id: -10001
inherited: false
# permission for privilege2 granted on object1 to role1 # permission for privilege2 granted on object1 to role1
- permission_id: -30002 - permission_id: -30002
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20001 object_id: -20001
grantee_id: -10001 grantee_id: -10001
inherited: false
# permission for privilege2 granted on object2 to role2 # permission for privilege2 granted on object2 to role2
- permission_id: -30003 - permission_id: -30003
granted_privilege: privilege2 granted_privilege: privilege2
object_id: -20002 object_id: -20002
grantee_id: -10002 grantee_id: -10002
inherited: false
# permission for privilege3 granted on object1 to public-role # permission for privilege3 granted on object1 to public-role
- permission_id: -30004 - permission_id: -30004
granted_privilege: privilege3 granted_privilege: privilege3
object_id: -20001 object_id: -20001
grantee_id: -10003 grantee_id: -10003
inherited: false
ccm_core.settings: ccm_core.settings:
- setting_id: -301 - setting_id: -301
configuration_class: com.arsdigita.kernel.KernelConfig configuration_class: com.arsdigita.kernel.KernelConfig

40
pom.xml
View File

@ -94,7 +94,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version> <version>3.6.1</version>
<configuration> <configuration>
<source>1.8</source> <source>1.8</source>
<target>1.8</target> <target>1.8</target>
@ -111,17 +111,17 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version> <version>3.0.0</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>2.6</version> <version>3.0.2</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId> <artifactId>maven-war-plugin</artifactId>
<version>2.6</version> <version>3.0.0</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@ -131,7 +131,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId> <artifactId>maven-site-plugin</artifactId>
<version>3.5.1</version> <version>3.6</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@ -172,7 +172,7 @@
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId> <artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.3</version> <version>3.0.4</version>
<configuration> <configuration>
<findbugsXmlOutput>true</findbugsXmlOutput> <findbugsXmlOutput>true</findbugsXmlOutput>
<xmlOutput>true</xmlOutput> <xmlOutput>true</xmlOutput>
@ -189,17 +189,17 @@
<plugin> <plugin>
<groupId>de.jpdigital</groupId> <groupId>de.jpdigital</groupId>
<artifactId>hibernate5-ddl-maven-plugin</artifactId> <artifactId>hibernate5-ddl-maven-plugin</artifactId>
<version>1.0.0</version> <version>1.0.1-hibernate-5.2.4.Final</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.jacoco</groupId> <groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId> <artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version> <version>0.7.8</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.wildfly.plugins</groupId> <groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId> <artifactId>wildfly-maven-plugin</artifactId>
<version>1.1.0.Alpha8</version> <version>1.1.0.Final</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@ -286,7 +286,7 @@
<dependency> <dependency>
<groupId>org.flywaydb</groupId> <groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId> <artifactId>flyway-core</artifactId>
<version>4.0</version> <version>4.0.3</version>
</dependency> </dependency>
<!-- Shiro lib for security stuff --> <!-- Shiro lib for security stuff -->
@ -298,7 +298,7 @@
<dependency> <dependency>
<groupId>org.apache.shiro</groupId> <groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId> <artifactId>shiro-web</artifactId>
<version>1.2.5</version> <version>1.3.2</version>
</dependency> </dependency>
<!-- PrimeFaces for JSF prototype --> <!-- PrimeFaces for JSF prototype -->
@ -325,7 +325,7 @@
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId> <artifactId>log4j-bom</artifactId>
<version>2.5</version> <version>2.7</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
@ -351,7 +351,7 @@
<dependency> <dependency>
<groupId>commons-beanutils</groupId> <groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId> <artifactId>commons-beanutils</artifactId>
<version>1.9.2</version> <version>1.9.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-cli</groupId> <groupId>commons-cli</groupId>
@ -371,7 +371,7 @@
<dependency> <dependency>
<groupId>commons-fileupload</groupId> <groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId> <artifactId>commons-fileupload</artifactId>
<version>1.3.1</version> <version>1.3.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-httpclient</groupId> <groupId>commons-httpclient</groupId>
@ -403,7 +403,7 @@
<dependency> <dependency>
<groupId>net.sf.saxon</groupId> <groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId> <artifactId>Saxon-HE</artifactId>
<version>9.7.0-4</version> <version>9.7.0-14</version>
</dependency> </dependency>
<dependency> <dependency>
@ -421,7 +421,7 @@
<dependency> <dependency>
<groupId>org.jsoup</groupId> <groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId> <artifactId>jsoup</artifactId>
<version>1.9.1</version> <version>1.10.2</version>
</dependency> </dependency>
<dependency> <dependency>
@ -512,7 +512,7 @@
<dependency> <dependency>
<groupId>org.jboss.arquillian</groupId> <groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId> <artifactId>arquillian-bom</artifactId>
<version>1.1.11.Final</version> <version>1.1.12.Final</version>
<scope>import</scope> <scope>import</scope>
<type>pom</type> <type>pom</type>
</dependency> </dependency>
@ -541,7 +541,7 @@
<dependency> <dependency>
<groupId>org.jacoco</groupId> <groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId> <artifactId>org.jacoco.core</artifactId>
<version>0.7.6.201602180812</version> <version>0.7.8</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
@ -570,14 +570,14 @@
<groupId>nl.jqno.equalsverifier</groupId> <groupId>nl.jqno.equalsverifier</groupId>
<artifactId>equalsverifier</artifactId> <artifactId>equalsverifier</artifactId>
<!--<version>1.7.8</version>--> <!--<version>1.7.8</version>-->
<version>2.0.2</version> <version>2.2</version>
</dependency> </dependency>
<!-- h2 database in used to check some database related things --> <!-- h2 database in used to check some database related things -->
<dependency> <dependency>
<groupId>com.h2database</groupId> <groupId>com.h2database</groupId>
<artifactId>h2</artifactId> <artifactId>h2</artifactId>
<version>1.4.192</version> <version>1.4.193</version>
</dependency> </dependency>
</dependencies> </dependencies>