CCM NG:
- 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
parent
e02af14df1
commit
f3a443a6ab
|
|
@ -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>
|
||||||
|
|
@ -341,6 +341,9 @@
|
||||||
<groupId>org.codehaus.mojo</groupId>
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
<artifactId>findbugs-maven-plugin</artifactId>
|
<artifactId>findbugs-maven-plugin</artifactId>
|
||||||
<version>3.0.1</version>
|
<version>3.0.1</version>
|
||||||
|
<configuration>
|
||||||
|
<excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
|
@ -370,6 +373,54 @@
|
||||||
<ruleset>/rulesets/java/unnecessary.xml</ruleset>
|
<ruleset>/rulesets/java/unnecessary.xml</ruleset>
|
||||||
<ruleset>/rulesets/java/unusedcode.xml</ruleset>
|
<ruleset>/rulesets/java/unusedcode.xml</ruleset>
|
||||||
</rulesets>
|
</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>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
|
|
||||||
|
|
@ -51,12 +51,26 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||||
query = "SELECT p FROM Permission p WHERE p.grantee = :subject"),
|
query = "SELECT p FROM Permission p WHERE p.grantee = :subject"),
|
||||||
@NamedQuery(name = "findPermissionsForUser",
|
@NamedQuery(name = "findPermissionsForUser",
|
||||||
query = "SELECT p FROM Permission p "
|
query = "SELECT p FROM Permission p "
|
||||||
+ "WHERE p.grantee = :user "
|
+ "WHERE p.grantee = :user "
|
||||||
+ " OR p.grantee IN (SELECT g "
|
+ " OR p.grantee IN (SELECT g "
|
||||||
+ " FROM Group g JOIN g.members m"
|
+ " FROM Group g JOIN g.members m"
|
||||||
+ " WHERE m.user = :user)"),
|
+ " WHERE m.user = :user)"),
|
||||||
@NamedQuery(name = "findPermissionsForCcmObject",
|
@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
|
//Can't reduce complexity yet
|
||||||
@SuppressWarnings({"PMD.CyclomaticComplexity",
|
@SuppressWarnings({"PMD.CyclomaticComplexity",
|
||||||
|
|
@ -164,7 +178,7 @@ public class Permission implements Serializable {
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
int hash = 3;
|
int hash = 3;
|
||||||
hash
|
hash
|
||||||
= 31 * hash + (int) (permissionId ^ (permissionId >>> 32));
|
= 31 * hash + (int) (permissionId ^ (permissionId >>> 32));
|
||||||
hash = 31 * hash + Objects.hashCode(grantee);
|
hash = 31 * hash + Objects.hashCode(grantee);
|
||||||
hash = 31 * hash + Objects.hashCode(grantedPrivilege);
|
hash = 31 * hash + Objects.hashCode(grantedPrivilege);
|
||||||
hash = 31 * hash + Objects.hashCode(object);
|
hash = 31 * hash + Objects.hashCode(object);
|
||||||
|
|
@ -221,14 +235,14 @@ public class Permission implements Serializable {
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s{ "
|
return String.format("%s{ "
|
||||||
+ "permissionId = %d, "
|
+ "permissionId = %d, "
|
||||||
+ "grantee = %s, "
|
+ "grantee = %s, "
|
||||||
+ "grantedPrivilege = %s, "
|
+ "grantedPrivilege = %s, "
|
||||||
+ "object = %s, "
|
+ "object = %s, "
|
||||||
+ "creationUser = %s,"
|
+ "creationUser = %s,"
|
||||||
+ "creationDate = %tF %<tT, "
|
+ "creationDate = %tF %<tT, "
|
||||||
+ "creationIp = %s"
|
+ "creationIp = %s"
|
||||||
+ " }",
|
+ " }",
|
||||||
super.toString(),
|
super.toString(),
|
||||||
permissionId,
|
permissionId,
|
||||||
Objects.toString(grantee),
|
Objects.toString(grantee),
|
||||||
|
|
|
||||||
|
|
@ -26,67 +26,125 @@ import javax.persistence.EntityManager;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Repository class for retrieving, storing and deleting permissions.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
public class PermissionRepository
|
public class PermissionRepository
|
||||||
extends AbstractEntityRepository<Long, Permission> {
|
extends AbstractEntityRepository<Long, Permission> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private EntityManager entityManager;
|
private transient EntityManager entityManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* @return {@inheritDoc}
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Class<Permission> getEntityClass() {
|
public Class<Permission> getEntityClass() {
|
||||||
return Permission.class;
|
return Permission.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc }
|
||||||
|
*
|
||||||
|
* @param entity {@inheritDoc }
|
||||||
|
* @return {@inheritDoc }
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean isNew(final Permission entity) {
|
public boolean isNew(final Permission entity) {
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
throw new UnsupportedOperationException(
|
throw new IllegalArgumentException("Entity to save can't be null");
|
||||||
"Entity to save can't be null");
|
|
||||||
}
|
}
|
||||||
return entity.getPermissionId() == 0;
|
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) {
|
public List<Permission> findPermissionsForSubject(final Subject subject) {
|
||||||
if (subject == null) {
|
if (subject == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Illegal value 'null' provided for parameter subject.");
|
"Illegal value 'null' provided for parameter subject.");
|
||||||
}
|
}
|
||||||
|
|
||||||
final TypedQuery<Permission> query = entityManager.createNamedQuery(
|
final TypedQuery<Permission> query = entityManager.createNamedQuery(
|
||||||
"findPermissionsForSubject", Permission.class);
|
"findPermissionsForSubject", Permission.class);
|
||||||
query.setParameter("subject", subject);
|
query.setParameter("subject", subject);
|
||||||
|
|
||||||
return query.getResultList();
|
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) {
|
public List<Permission> findPermissionsForUser(final User user) {
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Illegal value 'null' provided for parameter user");
|
"Illegal value 'null' provided for parameter user");
|
||||||
}
|
}
|
||||||
|
|
||||||
final TypedQuery<Permission> query = entityManager.createNamedQuery(
|
final TypedQuery<Permission> query = entityManager.createNamedQuery(
|
||||||
"findPermissionsForUser", Permission.class);
|
"findPermissionsForUser", Permission.class);
|
||||||
query.setParameter("user", user);
|
query.setParameter("user", user);
|
||||||
|
|
||||||
return query.getResultList();
|
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) {
|
public List<Permission> findPermissionsForCcmObject(final CcmObject object) {
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Illegal value 'null' provided for parameter object.");
|
"Illegal value 'null' provided for parameter object.");
|
||||||
}
|
}
|
||||||
|
|
||||||
final TypedQuery<Permission> query = entityManager.createNamedQuery(
|
final TypedQuery<Permission> query = entityManager.createNamedQuery(
|
||||||
"findPermissionsForCcmObject", Permission.class);
|
"findPermissionsForCcmObject", Permission.class);
|
||||||
query.setParameter("object", object);
|
query.setParameter("object", object);
|
||||||
|
|
||||||
return query.getResultList();
|
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);
|
||||||
|
//
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,9 @@ public class DatasetsTest extends DatasetsVerifier {
|
||||||
"/datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json",
|
"/datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json",
|
||||||
"/datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json",
|
"/datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json",
|
||||||
"/datasets/org/libreccm/core/GroupRepositoryTest/after-save-new.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/PermissionRepositoryTest/data.json",
|
||||||
"/datasets/org/libreccm/core/RoleRepositoryTest/data.json",
|
"/datasets/org/libreccm/core/RoleRepositoryTest/data.json",
|
||||||
"/datasets/org/libreccm/core/RoleRepositoryTest/after-delete.json",
|
"/datasets/org/libreccm/core/RoleRepositoryTest/after-delete.json",
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,10 @@ import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
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
|
@Inject
|
||||||
private transient CcmObjectRepository ccmObjectRepository;
|
private transient CcmObjectRepository ccmObjectRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private transient EntityManager entityManager;
|
||||||
|
|
||||||
public PermissionRepositoryTest() {
|
public PermissionRepositoryTest() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -96,10 +103,10 @@ public class PermissionRepositoryTest {
|
||||||
@Deployment
|
@Deployment
|
||||||
public static WebArchive createDeployment() {
|
public static WebArchive createDeployment() {
|
||||||
final PomEquippedResolveStage pom = Maven
|
final PomEquippedResolveStage pom = Maven
|
||||||
.resolver()
|
.resolver()
|
||||||
.loadPomFromFile("pom.xml");
|
.loadPomFromFile("pom.xml");
|
||||||
final PomEquippedResolveStage dependencies = pom.
|
final PomEquippedResolveStage dependencies = pom.
|
||||||
importCompileAndRuntimeDependencies();
|
importCompileAndRuntimeDependencies();
|
||||||
final File[] libs = dependencies.resolve().withTransitivity().asFile();
|
final File[] libs = dependencies.resolve().withTransitivity().asFile();
|
||||||
|
|
||||||
for (File lib : libs) {
|
for (File lib : libs) {
|
||||||
|
|
@ -108,31 +115,31 @@ public class PermissionRepositoryTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
return ShrinkWrap
|
return ShrinkWrap
|
||||||
.create(WebArchive.class,
|
.create(WebArchive.class,
|
||||||
"LibreCCM-org.libreccm.core.UserRepositoryTest.war")
|
"LibreCCM-org.libreccm.core.UserRepositoryTest.war")
|
||||||
.addPackage(User.class.getPackage())
|
.addPackage(User.class.getPackage())
|
||||||
.addPackage(org.libreccm.web.Application.class.getPackage())
|
.addPackage(org.libreccm.web.Application.class.getPackage())
|
||||||
.addPackage(org.libreccm.categorization.Category.class.
|
.addPackage(org.libreccm.categorization.Category.class.
|
||||||
getPackage())
|
getPackage())
|
||||||
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()).
|
.addPackage(org.libreccm.l10n.LocalizedString.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.testutils.EqualsVerifier.class.
|
.addPackage(org.libreccm.testutils.EqualsVerifier.class.
|
||||||
getPackage())
|
getPackage())
|
||||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||||
.getPackage())
|
.getPackage())
|
||||||
.addAsLibraries(libs)
|
.addAsLibraries(libs)
|
||||||
.addAsResource("test-persistence.xml",
|
.addAsResource("test-persistence.xml",
|
||||||
"META-INF/persistence.xml")
|
"META-INF/persistence.xml")
|
||||||
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
|
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
|
||||||
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");
|
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@UsingDataSet(
|
@UsingDataSet(
|
||||||
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
|
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
|
||||||
@InSequence(10)
|
@InSequence(10)
|
||||||
public void findPermissionsForSubject() {
|
public void findPermissionsForSubject() {
|
||||||
final User jdoe = userRepository.findByScreenName("jdoe");
|
final User jdoe = userRepository.findByScreenName("jdoe");
|
||||||
|
|
@ -148,7 +155,7 @@ public class PermissionRepositoryTest {
|
||||||
assertThat(authors, is(not(nullValue())));
|
assertThat(authors, is(not(nullValue())));
|
||||||
|
|
||||||
final List<Permission> permissionsJdoe = permissionRepository
|
final List<Permission> permissionsJdoe = permissionRepository
|
||||||
.findPermissionsForSubject(jdoe);
|
.findPermissionsForSubject(jdoe);
|
||||||
assertThat(permissionsJdoe.size(), is(1));
|
assertThat(permissionsJdoe.size(), is(1));
|
||||||
assertThat(permissionsJdoe.get(0).getObject().getDisplayName(),
|
assertThat(permissionsJdoe.get(0).getObject().getDisplayName(),
|
||||||
is(equalTo("Test Object 2")));
|
is(equalTo("Test Object 2")));
|
||||||
|
|
@ -156,18 +163,18 @@ public class PermissionRepositoryTest {
|
||||||
is(equalTo("read")));
|
is(equalTo("read")));
|
||||||
|
|
||||||
final List<Permission> permissionsMmuster = permissionRepository
|
final List<Permission> permissionsMmuster = permissionRepository
|
||||||
.findPermissionsForSubject(mmuster);
|
.findPermissionsForSubject(mmuster);
|
||||||
assertThat(permissionsMmuster.size(), is(0));
|
assertThat(permissionsMmuster.size(), is(0));
|
||||||
|
|
||||||
final List<Permission> permissionsAdmins = permissionRepository
|
final List<Permission> permissionsAdmins = permissionRepository
|
||||||
.findPermissionsForSubject(admins);
|
.findPermissionsForSubject(admins);
|
||||||
assertThat(permissionsAdmins.size(), is(1));
|
assertThat(permissionsAdmins.size(), is(1));
|
||||||
assertThat(permissionsAdmins.get(0).getObject(), is(nullValue()));
|
assertThat(permissionsAdmins.get(0).getObject(), is(nullValue()));
|
||||||
assertThat(permissionsAdmins.get(0).getGrantedPrivilege().getPrivilege(),
|
assertThat(permissionsAdmins.get(0).getGrantedPrivilege().getPrivilege(),
|
||||||
is("admin"));
|
is("admin"));
|
||||||
|
|
||||||
final List<Permission> permissionsUsers = permissionRepository
|
final List<Permission> permissionsUsers = permissionRepository
|
||||||
.findPermissionsForSubject(users);
|
.findPermissionsForSubject(users);
|
||||||
assertThat(permissionsUsers.size(), is(1));
|
assertThat(permissionsUsers.size(), is(1));
|
||||||
assertThat(permissionsUsers.get(0).getObject().getDisplayName(),
|
assertThat(permissionsUsers.get(0).getObject().getDisplayName(),
|
||||||
is(equalTo("Test Object 1")));
|
is(equalTo("Test Object 1")));
|
||||||
|
|
@ -175,7 +182,7 @@ public class PermissionRepositoryTest {
|
||||||
is(equalTo("read")));
|
is(equalTo("read")));
|
||||||
|
|
||||||
final List<Permission> permissionsAuthors = permissionRepository
|
final List<Permission> permissionsAuthors = permissionRepository
|
||||||
.findPermissionsForSubject(authors);
|
.findPermissionsForSubject(authors);
|
||||||
assertThat(permissionsAuthors.size(), is(2));
|
assertThat(permissionsAuthors.size(), is(2));
|
||||||
assertThat(permissionsAuthors.get(0).getObject().getDisplayName(),
|
assertThat(permissionsAuthors.get(0).getObject().getDisplayName(),
|
||||||
is(equalTo("Test Object 1")));
|
is(equalTo("Test Object 1")));
|
||||||
|
|
@ -183,16 +190,25 @@ public class PermissionRepositoryTest {
|
||||||
is(equalTo("Test Object 1")));
|
is(equalTo("Test Object 1")));
|
||||||
final Set<String> privileges = new HashSet<>();
|
final Set<String> privileges = new HashSet<>();
|
||||||
privileges.add(permissionsAuthors.get(0).getGrantedPrivilege()
|
privileges.add(permissionsAuthors.get(0).getGrantedPrivilege()
|
||||||
.getPrivilege());
|
.getPrivilege());
|
||||||
privileges.add(permissionsAuthors.get(1).getGrantedPrivilege()
|
privileges.add(permissionsAuthors.get(1).getGrantedPrivilege()
|
||||||
.getPrivilege());
|
.getPrivilege());
|
||||||
assertThat(privileges, hasItem("read"));
|
assertThat(privileges, hasItem("read"));
|
||||||
assertThat(privileges, hasItem("write"));
|
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
|
@Test
|
||||||
@UsingDataSet(
|
@UsingDataSet(
|
||||||
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
|
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
|
||||||
@InSequence(20)
|
@InSequence(20)
|
||||||
public void findPermissionsForUser() {
|
public void findPermissionsForUser() {
|
||||||
final User jdoe = userRepository.findByScreenName("jdoe");
|
final User jdoe = userRepository.findByScreenName("jdoe");
|
||||||
|
|
@ -201,7 +217,7 @@ public class PermissionRepositoryTest {
|
||||||
assertThat(mmuster, is(not(nullValue())));
|
assertThat(mmuster, is(not(nullValue())));
|
||||||
|
|
||||||
final List<Permission> jdoePermissions = permissionRepository
|
final List<Permission> jdoePermissions = permissionRepository
|
||||||
.findPermissionsForUser(jdoe);
|
.findPermissionsForUser(jdoe);
|
||||||
assertThat(jdoePermissions.size(), is(4));
|
assertThat(jdoePermissions.size(), is(4));
|
||||||
jdoePermissions.sort(new Comparator<Permission>() {
|
jdoePermissions.sort(new Comparator<Permission>() {
|
||||||
|
|
||||||
|
|
@ -209,19 +225,20 @@ public class PermissionRepositoryTest {
|
||||||
public int compare(final Permission permission1,
|
public int compare(final Permission permission1,
|
||||||
final Permission permission2) {
|
final Permission permission2) {
|
||||||
int result = permission1.getGrantedPrivilege().getPrivilege()
|
int result = permission1.getGrantedPrivilege().getPrivilege()
|
||||||
.compareToIgnoreCase(permission2.getGrantedPrivilege()
|
.compareToIgnoreCase(permission2.getGrantedPrivilege()
|
||||||
.getPrivilege());
|
.getPrivilege());
|
||||||
|
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
result = permission1.getObject().getDisplayName().compareTo(
|
result = permission1.getObject().getDisplayName().compareTo(
|
||||||
permission2.getObject().getDisplayName());
|
permission2.getObject().getDisplayName());
|
||||||
} else {
|
} else {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
return permission1.getGrantee().getClass().getName()
|
return permission1.getGrantee().getClass().getName()
|
||||||
.compareTo(permission2.getGrantee().getClass().getName());
|
.compareTo(permission2.getGrantee().getClass().
|
||||||
|
getName());
|
||||||
} else {
|
} else {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -248,17 +265,26 @@ public class PermissionRepositoryTest {
|
||||||
is(equalTo("Test Object 1")));
|
is(equalTo("Test Object 1")));
|
||||||
|
|
||||||
final List<Permission> mmusterPermissions = permissionRepository
|
final List<Permission> mmusterPermissions = permissionRepository
|
||||||
.findPermissionsForUser(mmuster);
|
.findPermissionsForUser(mmuster);
|
||||||
assertThat(mmusterPermissions.size(), is(1));
|
assertThat(mmusterPermissions.size(), is(1));
|
||||||
assertThat(mmusterPermissions.get(0).getGrantedPrivilege()
|
assertThat(mmusterPermissions.get(0).getGrantedPrivilege()
|
||||||
.getPrivilege(),
|
.getPrivilege(),
|
||||||
is(equalTo("admin")));
|
is(equalTo("admin")));
|
||||||
assertThat(mmusterPermissions.get(0).getObject(), is(nullValue()));
|
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
|
@Test
|
||||||
@UsingDataSet(
|
@UsingDataSet(
|
||||||
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
|
"datasets/org/libreccm/core/PermissionRepositoryTest/data.json")
|
||||||
@InSequence(30)
|
@InSequence(30)
|
||||||
public void findPermissionsForCcmObject() {
|
public void findPermissionsForCcmObject() {
|
||||||
final CcmObject object1 = ccmObjectRepository.findById(-10L);
|
final CcmObject object1 = ccmObjectRepository.findById(-10L);
|
||||||
|
|
@ -266,7 +292,7 @@ public class PermissionRepositoryTest {
|
||||||
final CcmObject object3 = ccmObjectRepository.findById(-30L);
|
final CcmObject object3 = ccmObjectRepository.findById(-30L);
|
||||||
|
|
||||||
final List<Permission> object1Permissions = permissionRepository
|
final List<Permission> object1Permissions = permissionRepository
|
||||||
.findPermissionsForCcmObject(object1);
|
.findPermissionsForCcmObject(object1);
|
||||||
assertThat(object1Permissions.size(), is(3));
|
assertThat(object1Permissions.size(), is(3));
|
||||||
object1Permissions.sort(new Comparator<Permission>() {
|
object1Permissions.sort(new Comparator<Permission>() {
|
||||||
|
|
||||||
|
|
@ -279,21 +305,21 @@ public class PermissionRepositoryTest {
|
||||||
|
|
||||||
});
|
});
|
||||||
assertThat(object1Permissions.get(0).getGrantedPrivilege()
|
assertThat(object1Permissions.get(0).getGrantedPrivilege()
|
||||||
.getPrivilege(),
|
.getPrivilege(),
|
||||||
is(equalTo("read")));
|
is(equalTo("read")));
|
||||||
assertThat(object1Permissions.get(0).getGrantee(),
|
assertThat(object1Permissions.get(0).getGrantee(),
|
||||||
is(instanceOf(Group.class)));
|
is(instanceOf(Group.class)));
|
||||||
assertThat(((Group) object1Permissions.get(0).getGrantee()).getName(),
|
assertThat(((Group) object1Permissions.get(0).getGrantee()).getName(),
|
||||||
is(equalTo("authors")));
|
is(equalTo("authors")));
|
||||||
assertThat(object1Permissions.get(1).getGrantedPrivilege()
|
assertThat(object1Permissions.get(1).getGrantedPrivilege()
|
||||||
.getPrivilege(),
|
.getPrivilege(),
|
||||||
is(equalTo("write")));
|
is(equalTo("write")));
|
||||||
assertThat(object1Permissions.get(1).getGrantee(),
|
assertThat(object1Permissions.get(1).getGrantee(),
|
||||||
is(instanceOf(Group.class)));
|
is(instanceOf(Group.class)));
|
||||||
assertThat(((Group) object1Permissions.get(1).getGrantee()).getName(),
|
assertThat(((Group) object1Permissions.get(1).getGrantee()).getName(),
|
||||||
is(equalTo("authors")));
|
is(equalTo("authors")));
|
||||||
assertThat(object1Permissions.get(2).getGrantedPrivilege()
|
assertThat(object1Permissions.get(2).getGrantedPrivilege()
|
||||||
.getPrivilege(),
|
.getPrivilege(),
|
||||||
is(equalTo("read")));
|
is(equalTo("read")));
|
||||||
assertThat(object1Permissions.get(2).getGrantee(),
|
assertThat(object1Permissions.get(2).getGrantee(),
|
||||||
is(instanceOf(Group.class)));
|
is(instanceOf(Group.class)));
|
||||||
|
|
@ -301,20 +327,115 @@ public class PermissionRepositoryTest {
|
||||||
is(equalTo("users")));
|
is(equalTo("users")));
|
||||||
|
|
||||||
final List<Permission> object2Permissions = permissionRepository
|
final List<Permission> object2Permissions = permissionRepository
|
||||||
.findPermissionsForCcmObject(object2);
|
.findPermissionsForCcmObject(object2);
|
||||||
assertThat(object2Permissions.size(), is(1));
|
assertThat(object2Permissions.size(), is(1));
|
||||||
assertThat(object2Permissions.get(0).getGrantedPrivilege()
|
assertThat(object2Permissions.get(0).getGrantedPrivilege()
|
||||||
.getPrivilege(),
|
.getPrivilege(),
|
||||||
is(equalTo("read")));
|
is(equalTo("read")));
|
||||||
assertThat(object2Permissions.get(0).getGrantee(),
|
assertThat(object2Permissions.get(0).getGrantee(),
|
||||||
is(instanceOf(User.class)));
|
is(instanceOf(User.class)));
|
||||||
assertThat(((User) object2Permissions.get(0).getGrantee())
|
assertThat(((User) object2Permissions.get(0).getGrantee())
|
||||||
.getScreenName(),
|
.getScreenName(),
|
||||||
is(equalTo("jdoe")));
|
is(equalTo("jdoe")));
|
||||||
|
|
||||||
final List<Permission> object3Permissions = permissionRepository
|
final List<Permission> object3Permissions = permissionRepository
|
||||||
.findPermissionsForCcmObject(object3);
|
.findPermissionsForCcmObject(object3);
|
||||||
assertThat(object3Permissions, is(empty()));
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue