- Excluded some of the old com.arsdigita classes from FindBugs and PMD to keep the reports clear so that we can focus on the 
      new org.libreccm classes and the important com.arsdigita classes
    - PermisssionRepository and tests. PermissionRepository will provided some maybe offer more queries.


git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3537 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2015-07-30 12:16:31 +00:00
parent e02af14df1
commit f3a443a6ab
9 changed files with 841 additions and 73 deletions

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<FindBugsFilter>
<Match>
<Class name="com.arsdigita.util.parameter.CSVParameterReader" />
</Match>
<Match>
<Class name="com.arsdigita.util.parameter.ResourceParameter" />
</Match>
<Match>
<Class name="com.arsdigita.xml.Document" />
</Match>
<Match>
<Class name="com.arsdigita.xml.Element" />
</Match>
<Match>
<Class name="com.arsdigita.xml.formatters.DateFormatter" />
</Match>
<Match>
<Class name="com.arsdigita.xml.formatters.FullDateFormatter" />
</Match>
</FindBugsFilter>

View File

@ -341,6 +341,9 @@
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@ -370,6 +373,54 @@
<ruleset>/rulesets/java/unnecessary.xml</ruleset>
<ruleset>/rulesets/java/unusedcode.xml</ruleset>
</rulesets>
<excludeRoots>
<excludeRoot>src/main/java/com/arsdigita</excludeRoot>
</excludeRoots>
<excludes>
<exclude>**/AbstractConfig.java</exclude>
<exclude>**/AbstractParameter.java</exclude>
<exclude>**/AbstractParameterContext</exclude>
<exclude>**/Assert.java</exclude>
<exclude>**/Classes.java</exclude>
<exclude>**/CCMApplicationContextListener.java</exclude>
<exclude>**/CCMResourceManager.java</exclude>
<exclude>**/ClassParameterReader.java</exclude>
<exclude>**/CompoundParameterReader.java</exclude>
<exclude>**/ConfigError.java</exclude>
<exclude>**/ConfigRegistry.java</exclude>
<exclude>**/Converters.java</exclude>
<exclude>**/CSVParameterReader.java</exclude>
<exclude>**/DateFormatter.java</exclude>
<exclude>**/DataFormatterConfig.java</exclude>
<exclude>**/DateTimeFormatter</exclude>
<exclude>**/Document.java</exclude>
<exclude>**/Element.java</exclude>
<exclude>**/EmailParameter.java</exclude>
<exclude>**/EnumerationParameter.java</exclude>
<exclude>**/ErrorList.java</exclude>
<exclude>**/ExceptionUnwrapper.java</exclude>
<exclude>**/Exceptions.java</exclude>
<exclude>**/FileParameter.java</exclude>
<exclude>**/FullDateFormatter.java</exclude>
<exclude>**/IntegerParameter.java</exclude>
<exclude>**/JavaPropertyReader.java</exclude>
<exclude>**/JavaPropertyWriter.java</exclude>
<exclude>**/KernelConfig.java</exclude>
<exclude>**/LockableImpl.java</exclude>
<exclude>**/MapParameter.java</exclude>
<exclude>**/Parameter.java</exclude>
<exclude>**/ParameterError.java</exclude>
<exclude>**/ParameterException.java</exclude>
<exclude>**/RegistryConfig.java</exclude>
<exclude>**/ResourceParameter.java</exclude>
<exclude>**/SecurityConfig.java</exclude>
<exclude>**/SecurityHelper.java</exclude>
<exclude>**/SingletonParameter.java</exclude>
<exclude>**/StringParameter.java</exclude>
<exclude>**/TimeFormatter.java</exclude>
<exclude>**/UncheckedWrapperException</exclude>
<exclude>**/XML.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>

View File

@ -51,12 +51,26 @@ import javax.xml.bind.annotation.XmlRootElement;
query = "SELECT p FROM Permission p WHERE p.grantee = :subject"),
@NamedQuery(name = "findPermissionsForUser",
query = "SELECT p FROM Permission p "
+ "WHERE p.grantee = :user "
+ " OR p.grantee IN (SELECT g "
+ " FROM Group g JOIN g.members m"
+ " WHERE m.user = :user)"),
+ "WHERE p.grantee = :user "
+ " OR p.grantee IN (SELECT g "
+ " FROM Group g JOIN g.members m"
+ " WHERE m.user = :user)"),
@NamedQuery(name = "findPermissionsForCcmObject",
query = "SELECT p FROM Permission p WHERE p.object = :object")
query = "SELECT p FROM Permission p WHERE p.object = :object"),
@NamedQuery(name = "findPermissionsByUserObjectAndPrivilege",
query = "SELECT p FROM Permission p "
+ "WHERE (p.grantee = :user"
+ " OR p.grantee IN (SELECT g "
+ " FROM Group g JOIN g.members m"
+ " WHERE m.user = :user))"
+ " AND p.grantedPrivilege = :privilege"
+ " AND p.object = :object"),
@NamedQuery(name = "findPermissionsBySubjectObjectAndPrivilege",
query = "SELECT p FROM Permission p "
+ "WHERE p.grantee = :subject"
+ " AND p.grantedPrivilege = :privilege"
+ " AND p.object = :object")
})
//Can't reduce complexity yet
@SuppressWarnings({"PMD.CyclomaticComplexity",
@ -164,7 +178,7 @@ public class Permission implements Serializable {
public int hashCode() {
int hash = 3;
hash
= 31 * hash + (int) (permissionId ^ (permissionId >>> 32));
= 31 * hash + (int) (permissionId ^ (permissionId >>> 32));
hash = 31 * hash + Objects.hashCode(grantee);
hash = 31 * hash + Objects.hashCode(grantedPrivilege);
hash = 31 * hash + Objects.hashCode(object);
@ -221,14 +235,14 @@ public class Permission implements Serializable {
@Override
public String toString() {
return String.format("%s{ "
+ "permissionId = %d, "
+ "grantee = %s, "
+ "grantedPrivilege = %s, "
+ "object = %s, "
+ "creationUser = %s,"
+ "creationDate = %tF %<tT, "
+ "creationIp = %s"
+ " }",
+ "permissionId = %d, "
+ "grantee = %s, "
+ "grantedPrivilege = %s, "
+ "object = %s, "
+ "creationUser = %s,"
+ "creationDate = %tF %<tT, "
+ "creationIp = %s"
+ " }",
super.toString(),
permissionId,
Objects.toString(grantee),

View File

@ -26,67 +26,125 @@ import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
/**
* Repository class for retrieving, storing and deleting permissions.
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RequestScoped
public class PermissionRepository
extends AbstractEntityRepository<Long, Permission> {
extends AbstractEntityRepository<Long, Permission> {
@Inject
private EntityManager entityManager;
private transient EntityManager entityManager;
/**
* {@inheritDoc}
*
* @return {@inheritDoc}
*/
@Override
public Class<Permission> getEntityClass() {
return Permission.class;
}
/**
* {@inheritDoc }
*
* @param entity {@inheritDoc }
* @return {@inheritDoc }
*/
@Override
public boolean isNew(final Permission entity) {
if (entity == null) {
throw new UnsupportedOperationException(
"Entity to save can't be null");
throw new IllegalArgumentException("Entity to save can't be null");
}
return entity.getPermissionId() == 0;
}
/**
* Finds all permissions granted to a specific subject (either a user or
* group).
*
* Please note that this method does <strong>not</strong> find permissions
* granted to a user by the groups a user is member of. To get these
* permissions also use the
* {@link #findPermissionsForUser(org.libreccm.core.User)} method instead.
*
* @param subject The subject.
* @return All permissions granted to the provided subject.
*/
public List<Permission> findPermissionsForSubject(final Subject subject) {
if (subject == null) {
throw new IllegalArgumentException(
"Illegal value 'null' provided for parameter subject.");
"Illegal value 'null' provided for parameter subject.");
}
final TypedQuery<Permission> query = entityManager.createNamedQuery(
"findPermissionsForSubject", Permission.class);
"findPermissionsForSubject", Permission.class);
query.setParameter("subject", subject);
return query.getResultList();
}
/**
* Finds a permissions granted to a user and to the groups the user is
* member of.
*
* If you only need the permissions assigned to the user itself use the
* {@link #findPermissionsForSubject(org.libreccm.core.Subject)} method.
*
* @param user The user.
* @return All permissions granted to the user or the groups the user is
* member of.
*/
public List<Permission> findPermissionsForUser(final User user) {
if (user == null) {
throw new IllegalArgumentException(
"Illegal value 'null' provided for parameter user");
"Illegal value 'null' provided for parameter user");
}
final TypedQuery<Permission> query = entityManager.createNamedQuery(
"findPermissionsForUser", Permission.class);
"findPermissionsForUser", Permission.class);
query.setParameter("user", user);
return query.getResultList();
}
/**
* Finds all permissions granted on a object.
*
* @param object The object.
* @return All permissions granted on the object.
*/
public List<Permission> findPermissionsForCcmObject(final CcmObject object) {
if (object == null) {
throw new IllegalArgumentException(
"Illegal value 'null' provided for parameter object.");
"Illegal value 'null' provided for parameter object.");
}
final TypedQuery<Permission> query = entityManager.createNamedQuery(
"findPermissionsForCcmObject", Permission.class);
"findPermissionsForCcmObject", Permission.class);
query.setParameter("object", object);
return query.getResultList();
}
// public List<Permission> findPermissionForUserPrivilegeAndObject(
// final User user,
// final Privilege privilege,
// final CcmObject object) {
// if (user == null) {
// throw new IllegalArgumentException(
// "Illegal value 'null' provided for parameter user");
// }
//
// if (privilege == null) {
// throw new IllegalArgumentException(
// "Illegal value 'null' provided for parameter privilege");
// }
//
// final TypedQuery<Permission> query = entityManager.createNamedQuery(
// "findPermissionsForUserPrivilegeAndObject", Permission.class);
//
// }
}

View File

@ -54,6 +54,9 @@ public class DatasetsTest extends DatasetsVerifier {
"/datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json",
"/datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json",
"/datasets/org/libreccm/core/GroupRepositoryTest/after-save-new.json",
"/datasets/org/libreccm/core/PermissionRepositoryTest/after-save-changed.json",
"/datasets/org/libreccm/core/PermissionRepositoryTest/after-save-new.json",
"/datasets/org/libreccm/core/PermissionRepositoryTest/after-delete.json",
"/datasets/org/libreccm/core/PermissionRepositoryTest/data.json",
"/datasets/org/libreccm/core/RoleRepositoryTest/data.json",
"/datasets/org/libreccm/core/RoleRepositoryTest/after-delete.json",

View File

@ -51,6 +51,10 @@ import java.util.List;
import java.util.Set;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import org.jboss.arquillian.container.test.api.ShouldThrowException;
import org.jboss.arquillian.persistence.ShouldMatchDataSet;
/**
*
@ -74,6 +78,9 @@ public class PermissionRepositoryTest {
@Inject
private transient CcmObjectRepository ccmObjectRepository;
@Inject
private transient EntityManager entityManager;
public PermissionRepositoryTest() {
}
@ -96,10 +103,10 @@ public class PermissionRepositoryTest {
@Deployment
public static WebArchive createDeployment() {
final PomEquippedResolveStage pom = Maven
.resolver()
.loadPomFromFile("pom.xml");
.resolver()
.loadPomFromFile("pom.xml");
final PomEquippedResolveStage dependencies = pom.
importCompileAndRuntimeDependencies();
importCompileAndRuntimeDependencies();
final File[] libs = dependencies.resolve().withTransitivity().asFile();
for (File lib : libs) {
@ -108,31 +115,31 @@ public class PermissionRepositoryTest {
}
return ShrinkWrap
.create(WebArchive.class,
"LibreCCM-org.libreccm.core.UserRepositoryTest.war")
.addPackage(User.class.getPackage())
.addPackage(org.libreccm.web.Application.class.getPackage())
.addPackage(org.libreccm.categorization.Category.class.
getPackage())
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()).
addPackage(org.libreccm.jpa.EntityManagerProducer.class
.getPackage())
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
.getPackage())
.addPackage(org.libreccm.testutils.EqualsVerifier.class.
getPackage())
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage())
.addAsLibraries(libs)
.addAsResource("test-persistence.xml",
"META-INF/persistence.xml")
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");
.create(WebArchive.class,
"LibreCCM-org.libreccm.core.UserRepositoryTest.war")
.addPackage(User.class.getPackage())
.addPackage(org.libreccm.web.Application.class.getPackage())
.addPackage(org.libreccm.categorization.Category.class.
getPackage())
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()).
addPackage(org.libreccm.jpa.EntityManagerProducer.class
.getPackage())
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
.getPackage())
.addPackage(org.libreccm.testutils.EqualsVerifier.class.
getPackage())
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
.getPackage())
.addAsLibraries(libs)
.addAsResource("test-persistence.xml",
"META-INF/persistence.xml")
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");
}
@Test
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@InSequence(10)
public void findPermissionsForSubject() {
final User jdoe = userRepository.findByScreenName("jdoe");
@ -148,7 +155,7 @@ public class PermissionRepositoryTest {
assertThat(authors, is(not(nullValue())));
final List<Permission> permissionsJdoe = permissionRepository
.findPermissionsForSubject(jdoe);
.findPermissionsForSubject(jdoe);
assertThat(permissionsJdoe.size(), is(1));
assertThat(permissionsJdoe.get(0).getObject().getDisplayName(),
is(equalTo("Test Object 2")));
@ -156,18 +163,18 @@ public class PermissionRepositoryTest {
is(equalTo("read")));
final List<Permission> permissionsMmuster = permissionRepository
.findPermissionsForSubject(mmuster);
.findPermissionsForSubject(mmuster);
assertThat(permissionsMmuster.size(), is(0));
final List<Permission> permissionsAdmins = permissionRepository
.findPermissionsForSubject(admins);
.findPermissionsForSubject(admins);
assertThat(permissionsAdmins.size(), is(1));
assertThat(permissionsAdmins.get(0).getObject(), is(nullValue()));
assertThat(permissionsAdmins.get(0).getGrantedPrivilege().getPrivilege(),
is("admin"));
final List<Permission> permissionsUsers = permissionRepository
.findPermissionsForSubject(users);
.findPermissionsForSubject(users);
assertThat(permissionsUsers.size(), is(1));
assertThat(permissionsUsers.get(0).getObject().getDisplayName(),
is(equalTo("Test Object 1")));
@ -175,7 +182,7 @@ public class PermissionRepositoryTest {
is(equalTo("read")));
final List<Permission> permissionsAuthors = permissionRepository
.findPermissionsForSubject(authors);
.findPermissionsForSubject(authors);
assertThat(permissionsAuthors.size(), is(2));
assertThat(permissionsAuthors.get(0).getObject().getDisplayName(),
is(equalTo("Test Object 1")));
@ -183,16 +190,25 @@ public class PermissionRepositoryTest {
is(equalTo("Test Object 1")));
final Set<String> privileges = new HashSet<>();
privileges.add(permissionsAuthors.get(0).getGrantedPrivilege()
.getPrivilege());
.getPrivilege());
privileges.add(permissionsAuthors.get(1).getGrantedPrivilege()
.getPrivilege());
.getPrivilege());
assertThat(privileges, hasItem("read"));
assertThat(privileges, hasItem("write"));
}
@Test(expected = IllegalArgumentException.class)
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@ShouldThrowException(IllegalArgumentException.class)
@InSequence(11)
public void findPermissionsForNullSubject() {
permissionRepository.findPermissionsForSubject(null);
}
@Test
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@InSequence(20)
public void findPermissionsForUser() {
final User jdoe = userRepository.findByScreenName("jdoe");
@ -201,7 +217,7 @@ public class PermissionRepositoryTest {
assertThat(mmuster, is(not(nullValue())));
final List<Permission> jdoePermissions = permissionRepository
.findPermissionsForUser(jdoe);
.findPermissionsForUser(jdoe);
assertThat(jdoePermissions.size(), is(4));
jdoePermissions.sort(new Comparator<Permission>() {
@ -209,19 +225,20 @@ public class PermissionRepositoryTest {
public int compare(final Permission permission1,
final Permission permission2) {
int result = permission1.getGrantedPrivilege().getPrivilege()
.compareToIgnoreCase(permission2.getGrantedPrivilege()
.getPrivilege());
.compareToIgnoreCase(permission2.getGrantedPrivilege()
.getPrivilege());
if (result == 0) {
result = permission1.getObject().getDisplayName().compareTo(
permission2.getObject().getDisplayName());
permission2.getObject().getDisplayName());
} else {
return result;
}
if (result == 0) {
return permission1.getGrantee().getClass().getName()
.compareTo(permission2.getGrantee().getClass().getName());
.compareTo(permission2.getGrantee().getClass().
getName());
} else {
return result;
}
@ -248,17 +265,26 @@ public class PermissionRepositoryTest {
is(equalTo("Test Object 1")));
final List<Permission> mmusterPermissions = permissionRepository
.findPermissionsForUser(mmuster);
.findPermissionsForUser(mmuster);
assertThat(mmusterPermissions.size(), is(1));
assertThat(mmusterPermissions.get(0).getGrantedPrivilege()
.getPrivilege(),
.getPrivilege(),
is(equalTo("admin")));
assertThat(mmusterPermissions.get(0).getObject(), is(nullValue()));
}
@Test(expected = IllegalArgumentException.class)
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@ShouldThrowException(IllegalArgumentException.class)
@InSequence(21)
public void findPermissionsForNullUser() {
permissionRepository.findPermissionsForUser(null);
}
@Test
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@InSequence(30)
public void findPermissionsForCcmObject() {
final CcmObject object1 = ccmObjectRepository.findById(-10L);
@ -266,7 +292,7 @@ public class PermissionRepositoryTest {
final CcmObject object3 = ccmObjectRepository.findById(-30L);
final List<Permission> object1Permissions = permissionRepository
.findPermissionsForCcmObject(object1);
.findPermissionsForCcmObject(object1);
assertThat(object1Permissions.size(), is(3));
object1Permissions.sort(new Comparator<Permission>() {
@ -279,21 +305,21 @@ public class PermissionRepositoryTest {
});
assertThat(object1Permissions.get(0).getGrantedPrivilege()
.getPrivilege(),
.getPrivilege(),
is(equalTo("read")));
assertThat(object1Permissions.get(0).getGrantee(),
is(instanceOf(Group.class)));
assertThat(((Group) object1Permissions.get(0).getGrantee()).getName(),
is(equalTo("authors")));
assertThat(object1Permissions.get(1).getGrantedPrivilege()
.getPrivilege(),
.getPrivilege(),
is(equalTo("write")));
assertThat(object1Permissions.get(1).getGrantee(),
is(instanceOf(Group.class)));
assertThat(((Group) object1Permissions.get(1).getGrantee()).getName(),
is(equalTo("authors")));
assertThat(object1Permissions.get(2).getGrantedPrivilege()
.getPrivilege(),
.getPrivilege(),
is(equalTo("read")));
assertThat(object1Permissions.get(2).getGrantee(),
is(instanceOf(Group.class)));
@ -301,20 +327,115 @@ public class PermissionRepositoryTest {
is(equalTo("users")));
final List<Permission> object2Permissions = permissionRepository
.findPermissionsForCcmObject(object2);
.findPermissionsForCcmObject(object2);
assertThat(object2Permissions.size(), is(1));
assertThat(object2Permissions.get(0).getGrantedPrivilege()
.getPrivilege(),
.getPrivilege(),
is(equalTo("read")));
assertThat(object2Permissions.get(0).getGrantee(),
is(instanceOf(User.class)));
assertThat(((User) object2Permissions.get(0).getGrantee())
.getScreenName(),
.getScreenName(),
is(equalTo("jdoe")));
final List<Permission> object3Permissions = permissionRepository
.findPermissionsForCcmObject(object3);
.findPermissionsForCcmObject(object3);
assertThat(object3Permissions, is(empty()));
}
@Test(expected = IllegalArgumentException.class)
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@ShouldThrowException(IllegalArgumentException.class)
@InSequence(31)
public void findPermissionsForNullObject() {
permissionRepository.findPermissionsForCcmObject(null);
}
@Test
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@ShouldMatchDataSet(value = "datasets/org/libreccm/core/"
+ "PermissionRepositoryTest/after-save-new.json",
excludeColumns = {"permission_id"})
@InSequence(40)
public void saveNewPermission() {
final User mmuster = userRepository.findByScreenName("mmuster");
final TypedQuery<Privilege> query1 = entityManager.createQuery(
"SELECT p FROM Privilege p WHERE p.privilege = 'read'",
Privilege.class);
final TypedQuery<Privilege> query2 = entityManager.createQuery(
"SELECT p FROM Privilege p WHERE p.privilege = 'write'",
Privilege.class);
final CcmObject object = ccmObjectRepository.findById(-40L);
final Privilege read = query1.getSingleResult();
final Privilege write = query2.getSingleResult();
assertThat(mmuster, is(not(nullValue())));
assertThat(read, is(not(nullValue())));
assertThat(write, is(not(nullValue())));
assertThat(object, is(not(nullValue())));
final Permission permission1 = new Permission();
permission1.setGrantee(mmuster);
permission1.setGrantedPrivilege(read);
permission1.setObject(object);
final Permission permission2 = new Permission();
permission2.setGrantee(mmuster);
permission2.setGrantedPrivilege(write);
permission2.setObject(object);
permissionRepository.save(permission1);
permissionRepository.save(permission2);
}
@Test(expected = IllegalArgumentException.class)
@ShouldThrowException(IllegalArgumentException.class)
@InSequence(41)
public void saveNullPermission() {
permissionRepository.save(null);
}
@Test
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@ShouldMatchDataSet(value = "datasets/org/libreccm/core/"
+ "PermissionRepositoryTest/after-save-changed.json",
excludeColumns = {"permission_id"})
@InSequence(50)
public void saveChangedPermission() {
final Permission permission = entityManager.find(Permission.class, -40L);
final Group users = groupRepository.findByGroupName("users");
assertThat(permission, is(not(nullValue())));
assertThat(users, is(not(nullValue())));
permission.setGrantee(users);
permissionRepository.save(permission);
}
@Test
@UsingDataSet(
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
@ShouldMatchDataSet(value = "datasets/org/libreccm/core/"
+ "PermissionRepositoryTest/after-delete.json",
excludeColumns = {"permission_id"})
@InSequence(60)
public void deletePermission() {
final Permission permission = entityManager.find(Permission.class, -35L);
permissionRepository.delete(permission);
}
@Test(expected = IllegalArgumentException.class)
@ShouldThrowException(IllegalArgumentException.class)
@InSequence(61)
public void deleteNullPermission() {
permissionRepository.delete(null);
}
}

View File

@ -0,0 +1,158 @@
{
"subjects":
[
{
"subject_id": -10
},
{
"subject_id": -20
},
{
"subject_id": -30
},
{
"subject_id": -40
},
{
"subject_id": -50
}
],
"ccm_users":
[
{
"banned": false,
"hash_algorithm": "SHA-512",
"family_name": "Doe",
"given_name": "John",
"password": "C+o2w6mp+eLrbluMEgKMVSdP50A9BMethXN8R3yihtkbzt7WfWsde2nmq/t5gq6im3J8i3jw4Y3YrKHou8JQ2A==",
"password_reset_required": false,
"salt": "Fu8FPgqAal4GZp1hDjkOB+t6ITRCcO7HBoN5Xqf29UnVj5NUdUFZRTyKYMBEx6JmZGmHcMDG9OGVCKcEM9oyScSRreJs4B51wM44NM6KeRwbCf+VhBn14DkBrl40ygraNf+AJacKpMyCpFI0O/Am7mMDWL4flskBsylkxaQn3vKfzgN5MVG2szW//I6Q6YEH9AuL8LauS6fKaVynMzzu3xzD8Hjqvvlnzym898eom2lqScPfg5g4e8Ww13HCHAYe6twupAW/BjUNax5HSioEisZN/P1UGrde8uFEj+hbbavrWYZuilPuEu25+/98jyXx6542agqrWN8j0SFYcIyOgA==",
"screen_name": "jdoe",
"subject_id": -10
},
{
"banned": false,
"hash_algorithm": "SHA-512",
"family_name": "Mustermann",
"given_name": "Max",
"password": "1c9626af429a6291766d15cbfb38689bd8d49450520765973de70aecaf644b7d4fda711266ba9ec8fb6df30c8ab391d40330829aa85adf371bcde6b4c9bc01e6",
"password_reset_required": false,
"salt": "fjiajhigafgapoa",
"screen_name": "mmuster",
"subject_id": -50
}
],
"ccm_groups":
[
{
"name": "admins",
"subject_id": -20
},
{
"name": "users",
"subject_id": -30
},
{
"name": "authors",
"subject_id": -40
}
],
"user_email_addresses":
[
{
"user_id": -10,
"email_address": "john.doe@example.com",
"bouncing": false,
"verified": true
},
{
"user_id": -50,
"email_address": "max.mustermann@example.com",
"bouncing": false,
"verified": true
}
],
"group_memberships":
[
{
"membership_id": -10,
"group_subject_id": -30,
"user_subject_id": -10
},
{
"membership_id": -20,
"group_subject_id": -40,
"user_subject_id": -10
},
{
"membership_id": -30,
"group_subject_id": -20,
"user_subject_id": -50
}
],
"ccm_privileges":
[
{
"privilege_id": -10,
"privilege": "admin"
},
{
"privilege_id": -20,
"privilege": "read"
},
{
"privilege_id": -30,
"privilege": "write"
}
],
"ccm_objects":
[
{
"object_id": -10,
"display_name": "Test Object 1"
},
{
"object_id": -20,
"display_name": "Test Object 2"
},
{
"object_id": -30,
"display_name": "Test Object 3"
},
{
"object_id": -40,
"display_name": "Test Object 4"
}
],
"permissions":
[
{
"permission_id": -10,
"creation_date": "2015-07-29 14:32:46",
"granted_privilege_id": -10,
"grantee_id": -20
},
{
"permission_id": -20,
"creation_date": "2015-07-29 14:34:30",
"granted_privilege_id": -20,
"grantee_id": -30,
"object_id": -10
},
{
"permission_id": -30,
"creation_date": "2015-07-29 14:36:05",
"granted_privilege_id": -30,
"grantee_id": -40,
"object_id": -10
},
{
"permission_id": -40,
"creation_date": "2015-07-29 14:37:22",
"granted_privilege_id": -20,
"grantee_id": -10,
"object_id": -20
}
]
}

View File

@ -0,0 +1,165 @@
{
"subjects":
[
{
"subject_id": -10
},
{
"subject_id": -20
},
{
"subject_id": -30
},
{
"subject_id": -40
},
{
"subject_id": -50
}
],
"ccm_users":
[
{
"banned": false,
"hash_algorithm": "SHA-512",
"family_name": "Doe",
"given_name": "John",
"password": "C+o2w6mp+eLrbluMEgKMVSdP50A9BMethXN8R3yihtkbzt7WfWsde2nmq/t5gq6im3J8i3jw4Y3YrKHou8JQ2A==",
"password_reset_required": false,
"salt": "Fu8FPgqAal4GZp1hDjkOB+t6ITRCcO7HBoN5Xqf29UnVj5NUdUFZRTyKYMBEx6JmZGmHcMDG9OGVCKcEM9oyScSRreJs4B51wM44NM6KeRwbCf+VhBn14DkBrl40ygraNf+AJacKpMyCpFI0O/Am7mMDWL4flskBsylkxaQn3vKfzgN5MVG2szW//I6Q6YEH9AuL8LauS6fKaVynMzzu3xzD8Hjqvvlnzym898eom2lqScPfg5g4e8Ww13HCHAYe6twupAW/BjUNax5HSioEisZN/P1UGrde8uFEj+hbbavrWYZuilPuEu25+/98jyXx6542agqrWN8j0SFYcIyOgA==",
"screen_name": "jdoe",
"subject_id": -10
},
{
"banned": false,
"hash_algorithm": "SHA-512",
"family_name": "Mustermann",
"given_name": "Max",
"password": "1c9626af429a6291766d15cbfb38689bd8d49450520765973de70aecaf644b7d4fda711266ba9ec8fb6df30c8ab391d40330829aa85adf371bcde6b4c9bc01e6",
"password_reset_required": false,
"salt": "fjiajhigafgapoa",
"screen_name": "mmuster",
"subject_id": -50
}
],
"ccm_groups":
[
{
"name": "admins",
"subject_id": -20
},
{
"name": "users",
"subject_id": -30
},
{
"name": "authors",
"subject_id": -40
}
],
"user_email_addresses":
[
{
"user_id": -10,
"email_address": "john.doe@example.com",
"bouncing": false,
"verified": true
},
{
"user_id": -50,
"email_address": "max.mustermann@example.com",
"bouncing": false,
"verified": true
}
],
"group_memberships":
[
{
"membership_id": -10,
"group_subject_id": -30,
"user_subject_id": -10
},
{
"membership_id": -20,
"group_subject_id": -40,
"user_subject_id": -10
},
{
"membership_id": -30,
"group_subject_id": -20,
"user_subject_id": -50
}
],
"ccm_privileges":
[
{
"privilege_id": -10,
"privilege": "admin"
},
{
"privilege_id": -20,
"privilege": "read"
},
{
"privilege_id": -30,
"privilege": "write"
}
],
"ccm_objects":
[
{
"object_id": -10,
"display_name": "Test Object 1"
},
{
"object_id": -20,
"display_name": "Test Object 2"
},
{
"object_id": -30,
"display_name": "Test Object 3"
},
{
"object_id": -40,
"display_name": "Test Object 4"
}
],
"permissions":
[
{
"permission_id": -10,
"creation_date": "2015-07-29 14:32:46",
"granted_privilege_id": -10,
"grantee_id": -20
},
{
"permission_id": -20,
"creation_date": "2015-07-29 14:34:30",
"granted_privilege_id": -20,
"grantee_id": -30,
"object_id": -10
},
{
"permission_id": -30,
"creation_date": "2015-07-29 14:36:05",
"granted_privilege_id": -30,
"grantee_id": -40,
"object_id": -10
},
{
"permission_id": -35,
"creation_date": "2015-07-29 14:57:55",
"granted_privilege_id": -20,
"grantee_id": -40,
"object_id": -10
},
{
"permission_id": -40,
"creation_date": "2015-07-29 14:37:22",
"granted_privilege_id": -20,
"grantee_id": -30,
"object_id": -20
}
]
}

View File

@ -0,0 +1,177 @@
{
"subjects":
[
{
"subject_id": -10
},
{
"subject_id": -20
},
{
"subject_id": -30
},
{
"subject_id": -40
},
{
"subject_id": -50
}
],
"ccm_users":
[
{
"banned": false,
"hash_algorithm": "SHA-512",
"family_name": "Doe",
"given_name": "John",
"password": "C+o2w6mp+eLrbluMEgKMVSdP50A9BMethXN8R3yihtkbzt7WfWsde2nmq/t5gq6im3J8i3jw4Y3YrKHou8JQ2A==",
"password_reset_required": false,
"salt": "Fu8FPgqAal4GZp1hDjkOB+t6ITRCcO7HBoN5Xqf29UnVj5NUdUFZRTyKYMBEx6JmZGmHcMDG9OGVCKcEM9oyScSRreJs4B51wM44NM6KeRwbCf+VhBn14DkBrl40ygraNf+AJacKpMyCpFI0O/Am7mMDWL4flskBsylkxaQn3vKfzgN5MVG2szW//I6Q6YEH9AuL8LauS6fKaVynMzzu3xzD8Hjqvvlnzym898eom2lqScPfg5g4e8Ww13HCHAYe6twupAW/BjUNax5HSioEisZN/P1UGrde8uFEj+hbbavrWYZuilPuEu25+/98jyXx6542agqrWN8j0SFYcIyOgA==",
"screen_name": "jdoe",
"subject_id": -10
},
{
"banned": false,
"hash_algorithm": "SHA-512",
"family_name": "Mustermann",
"given_name": "Max",
"password": "1c9626af429a6291766d15cbfb38689bd8d49450520765973de70aecaf644b7d4fda711266ba9ec8fb6df30c8ab391d40330829aa85adf371bcde6b4c9bc01e6",
"password_reset_required": false,
"salt": "fjiajhigafgapoa",
"screen_name": "mmuster",
"subject_id": -50
}
],
"ccm_groups":
[
{
"name": "admins",
"subject_id": -20
},
{
"name": "users",
"subject_id": -30
},
{
"name": "authors",
"subject_id": -40
}
],
"user_email_addresses":
[
{
"user_id": -10,
"email_address": "john.doe@example.com",
"bouncing": false,
"verified": true
},
{
"user_id": -50,
"email_address": "max.mustermann@example.com",
"bouncing": false,
"verified": true
}
],
"group_memberships":
[
{
"membership_id": -10,
"group_subject_id": -30,
"user_subject_id": -10
},
{
"membership_id": -20,
"group_subject_id": -40,
"user_subject_id": -10
},
{
"membership_id": -30,
"group_subject_id": -20,
"user_subject_id": -50
}
],
"ccm_privileges":
[
{
"privilege_id": -10,
"privilege": "admin"
},
{
"privilege_id": -20,
"privilege": "read"
},
{
"privilege_id": -30,
"privilege": "write"
}
],
"ccm_objects":
[
{
"object_id": -10,
"display_name": "Test Object 1"
},
{
"object_id": -20,
"display_name": "Test Object 2"
},
{
"object_id": -30,
"display_name": "Test Object 3"
},
{
"object_id": -40,
"display_name": "Test Object 4"
}
],
"permissions":
[
{
"permission_id": -10,
"creation_date": "2015-07-29 14:32:46",
"granted_privilege_id": -10,
"grantee_id": -20
},
{
"permission_id": -20,
"creation_date": "2015-07-29 14:34:30",
"granted_privilege_id": -20,
"grantee_id": -30,
"object_id": -10
},
{
"permission_id": -30,
"creation_date": "2015-07-29 14:36:05",
"granted_privilege_id": -30,
"grantee_id": -40,
"object_id": -10
},
{
"permission_id": -35,
"creation_date": "2015-07-29 14:57:55",
"granted_privilege_id": -20,
"grantee_id": -40,
"object_id": -10
},
{
"permission_id": -40,
"creation_date": "2015-07-29 14:37:22",
"granted_privilege_id": -20,
"grantee_id": -10,
"object_id": -20
},
{
"permission_id": -50,
"granted_privilege_id": -20,
"grantee_id": -50,
"object_id": -40
},
{
"permission_id": -50,
"granted_privilege_id": -30,
"grantee_id": -50,
"object_id": -40
}
]
}