diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmSessionContext.java b/ccm-core/src/main/java/org/libreccm/core/CcmSessionContext.java
index ae038981b..d4417bd44 100644
--- a/ccm-core/src/main/java/org/libreccm/core/CcmSessionContext.java
+++ b/ccm-core/src/main/java/org/libreccm/core/CcmSessionContext.java
@@ -33,24 +33,24 @@ public class CcmSessionContext implements Serializable {
private static final long serialVersionUID = 6110177865273823685L;
- private Subject currentParty;
- private Subject effectiveParty;
+ private Subject currentSubject;
+ private Subject effectiveSubject;
- public Subject getCurrentParty() {
- return currentParty;
+ public Subject getCurrentSubject() {
+ return currentSubject;
}
- public void setCurrentParty(final Subject currentParty) {
- this.currentParty = currentParty;
- this.effectiveParty = currentParty;
+ public void setCurrentSubject(final Subject currentSubject) {
+ this.currentSubject = currentSubject;
+ this.effectiveSubject = currentSubject;
}
- public Subject getEffectiveParty() {
- return effectiveParty;
+ public Subject getEffectiveSubject() {
+ return effectiveSubject;
}
- protected void setEffectiveParty(final Subject effectiveParty) {
- this.effectiveParty = effectiveParty;
+ protected void setEffectiveSubject(final Subject effectiveSubject) {
+ this.effectiveSubject = effectiveSubject;
}
/**
@@ -60,15 +60,15 @@ public class CcmSessionContext implements Serializable {
* The there is a current user the method will check if the current user
* has the permission to use the {@code sudo} method.
*
- * @param party The party with which permissions the code is executed.
+ * @param subject The party with which permissions the code is executed.
* @param runnable The code to execute.
*/
- public void sudo(final Subject party, final Runnable runnable) {
+ public void sudo(final Subject subject, final Runnable runnable) {
//ToDo: Check if current user is permitted to use sudo.
- effectiveParty = party;
+ effectiveSubject = subject;
runnable.run();
- effectiveParty = currentParty;
+ effectiveSubject = currentSubject;
}
}
diff --git a/ccm-core/src/main/java/org/libreccm/core/Group.java b/ccm-core/src/main/java/org/libreccm/core/Group.java
index 04fbb9cee..67baacf8d 100644
--- a/ccm-core/src/main/java/org/libreccm/core/Group.java
+++ b/ccm-core/src/main/java/org/libreccm/core/Group.java
@@ -34,6 +34,8 @@ import javax.persistence.Table;
import org.hibernate.validator.constraints.NotBlank;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@@ -44,12 +46,16 @@ import javax.xml.bind.annotation.XmlRootElement;
*/
@Entity
@Table(name = "ccm_groups")
+@NamedQueries({
+ @NamedQuery(name = "findGroupByName",
+ query = "SELECT g FROM Group g WHERE g.name = :groupName")
+})
@XmlRootElement(name = "user-group", namespace = CORE_XML_NS)
public class Group extends Subject implements Serializable {
private static final long serialVersionUID = -5555063356689597270L;
- @Column(name = "name", length = 512, nullable = false)
+ @Column(name = "name", length = 512, unique = true, nullable = false)
@NotBlank
@XmlElement(name = "name", namespace = CORE_XML_NS)
private String name;
diff --git a/ccm-core/src/main/java/org/libreccm/core/GroupManager.java b/ccm-core/src/main/java/org/libreccm/core/GroupManager.java
new file mode 100644
index 000000000..cb766c2ee
--- /dev/null
+++ b/ccm-core/src/main/java/org/libreccm/core/GroupManager.java
@@ -0,0 +1,74 @@
+/*
+ * 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.core;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+public class GroupManager {
+
+ /**
+ * Add a user to a group. If the user is already a member of the group, this
+ * method will do nothing.
+ *
+ * @param user The user to add to the group
+ * @param group The group to add the user to.
+ */
+ public void addUserToGroup(final User user, final Group group) {
+
+ }
+
+ /**
+ * Remove a user from a group. If the user is not member of the group this
+ * method will do nothing.
+ *
+ * @param user The user to remove from the group.
+ * @param group The group to remove the user from.
+ */
+ public void removeUserFromGroup(final User user, final Group group) {
+
+ }
+
+ /**
+ * Determines if a user is member of a group.
+ *
+ * @param user The user to check
+ * @param group The group to check
+ *
+ * @return {@code true} if the provided user is a member of the provided
+ * group, {@code false} otherwise.
+ */
+ public boolean isMemberOfGroup(final User user, final Group group) {
+ boolean result = false;
+
+ for (final GroupMembership membership : user.getGroupMemberships()) {
+ if (group.equals(membership.getGroup())) {
+ result = true;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+}
diff --git a/ccm-core/src/main/java/org/libreccm/core/GroupRepository.java b/ccm-core/src/main/java/org/libreccm/core/GroupRepository.java
new file mode 100644
index 000000000..7314ed84c
--- /dev/null
+++ b/ccm-core/src/main/java/org/libreccm/core/GroupRepository.java
@@ -0,0 +1,69 @@
+/*
+ * 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.core;
+
+import java.util.List;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+public class GroupRepository extends AbstractEntityRepository {
+
+ @Inject
+ private transient EntityManager entityManager;
+
+ @Override
+ public Class getEntityClass() {
+ return Group.class;
+ }
+
+ @Override
+ public boolean isNew(final Group entity) {
+ if (entity == null) {
+ throw new IllegalArgumentException("Can't save null.");
+ }
+
+ return entity.getSubjectId() == 0;
+ }
+
+ public Group findByGroupName(final String groupName) {
+ final TypedQuery query = entityManager.createNamedQuery(
+ "findGroupByName", Group.class);
+ query.setParameter("groupName", groupName);
+
+ final List result = query.getResultList();
+
+ //Check if result list is empty and if not return the first element.
+ //If their ist a result than there can only be one because the
+ //name column of group has a unique constraint.
+ if (result.isEmpty()) {
+ return null;
+ } else {
+ return result.get(0);
+ }
+ }
+
+}
diff --git a/ccm-core/src/main/java/org/libreccm/core/Subject.java b/ccm-core/src/main/java/org/libreccm/core/Subject.java
index 37dc9fa5b..172a60571 100644
--- a/ccm-core/src/main/java/org/libreccm/core/Subject.java
+++ b/ccm-core/src/main/java/org/libreccm/core/Subject.java
@@ -63,15 +63,6 @@ public class Subject implements Serializable {
@GeneratedValue(strategy = GenerationType.AUTO)
private long subjectId;
- @ElementCollection(fetch = FetchType.EAGER)
- @CollectionTable(name = "subject_email_addresses",
- joinColumns = {
- @JoinColumn(name = "subject_id")})
- @Size(min = 1)
- @XmlElementWrapper(name = "email-addresses", namespace = CORE_XML_NS)
- @XmlElement(name = "email-address", namespace = CORE_XML_NS)
- private List emailAddresses;
-
@OneToMany(mappedBy = "grantee")
//Can't shorten this variable name without reducing descriptiveness
@SuppressWarnings("PMD.LongVariable")
@@ -82,7 +73,6 @@ public class Subject implements Serializable {
public Subject() {
super();
- emailAddresses = new ArrayList<>();
grantedPermissions = new ArrayList<>();
}
@@ -94,26 +84,6 @@ public class Subject implements Serializable {
this.subjectId = subjectId;
}
- public List getEmailAddresses() {
- if (emailAddresses == null) {
- return null;
- } else {
- return Collections.unmodifiableList(emailAddresses);
- }
- }
-
- protected void setEmailAddresses(final List eMailAddresses) {
- this.emailAddresses = eMailAddresses;
- }
-
- protected void addEmailAddress(final EmailAddress emailAddress) {
- emailAddresses.add(emailAddress);
- }
-
- protected void removeEmailAddress(final EmailAddress emailAddress) {
- emailAddresses.remove(emailAddress);
- }
-
public List getGrantedPermissions() {
return Collections.unmodifiableList(grantedPermissions);
}
@@ -172,12 +142,10 @@ public class Subject implements Serializable {
public String toString(final String data) {
return String.format("%s{ "
+ "subjectId = %d, "
- + "emailAddresses = %s"
+ "%s"
+ " }",
super.toString(),
subjectId,
- Objects.toString(emailAddresses),
data);
}
diff --git a/ccm-core/src/main/java/org/libreccm/core/User.java b/ccm-core/src/main/java/org/libreccm/core/User.java
index 90dd83405..6a8e5ce1e 100644
--- a/ccm-core/src/main/java/org/libreccm/core/User.java
+++ b/ccm-core/src/main/java/org/libreccm/core/User.java
@@ -38,9 +38,13 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import javax.persistence.CollectionTable;
+import javax.persistence.ElementCollection;
+import javax.persistence.FetchType;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
+import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@@ -95,6 +99,15 @@ public class User extends Subject implements Serializable {
@XmlElement(name = "screen-name", namespace = CORE_XML_NS)
private String screenName;
+ @ElementCollection(fetch = FetchType.EAGER)
+ @CollectionTable(name = "user_email_addresses",
+ joinColumns = {
+ @JoinColumn(name = "user_id")})
+ @Size(min = 1)
+ @XmlElementWrapper(name = "email-addresses", namespace = CORE_XML_NS)
+ @XmlElement(name = "email-address", namespace = CORE_XML_NS)
+ private List emailAddresses;
+
/**
* A user can be banned which means that he or she can't login into the
* system anymore.
@@ -171,6 +184,7 @@ public class User extends Subject implements Serializable {
super();
name = new PersonName();
+ emailAddresses = new ArrayList<>();
this.groupMemberships = new ArrayList<>();
}
@@ -190,6 +204,26 @@ public class User extends Subject implements Serializable {
this.screenName = screenName;
}
+ public List getEmailAddresses() {
+ if (emailAddresses == null) {
+ return null;
+ } else {
+ return Collections.unmodifiableList(emailAddresses);
+ }
+ }
+
+ protected void setEmailAddresses(final List eMailAddresses) {
+ this.emailAddresses = eMailAddresses;
+ }
+
+ protected void addEmailAddress(final EmailAddress emailAddress) {
+ emailAddresses.add(emailAddress);
+ }
+
+ protected void removeEmailAddress(final EmailAddress emailAddress) {
+ emailAddresses.remove(emailAddress);
+ }
+
public boolean isBanned() {
return banned;
}
@@ -353,12 +387,14 @@ public class User extends Subject implements Serializable {
public String toString(final String data) {
return super.toString(String.format(", name = %s, "
+ "screenName = \"%s\", "
+ + "emailAddress = { %s }"
+ "banned = %b, "
+ "ssoLogin = \"%s\" "
+ "hashAlgorithm = \"%s\" "
+ "passwordResetRequired = %b%s",
Objects.toString(name),
screenName,
+ Objects.toString(emailAddresses),
banned,
ssoLogin,
hashAlgorithm,
diff --git a/ccm-core/src/main/java/org/libreccm/core/authentication/LoginManager.java b/ccm-core/src/main/java/org/libreccm/core/authentication/LoginManager.java
index c43b2dae2..d72a520a0 100644
--- a/ccm-core/src/main/java/org/libreccm/core/authentication/LoginManager.java
+++ b/ccm-core/src/main/java/org/libreccm/core/authentication/LoginManager.java
@@ -80,7 +80,7 @@ public class LoginManager {
final UserPrincipal principal = iterator.next();
final User user = principal.getUser();
- sessionContext.setCurrentParty(user);
+ sessionContext.setCurrentSubject(user);
}
}
diff --git a/ccm-core/src/test/java/org/libreccm/core/DatasetsTest.java b/ccm-core/src/test/java/org/libreccm/core/DatasetsTest.java
index c9a6a01c1..0686ecbe8 100644
--- a/ccm-core/src/test/java/org/libreccm/core/DatasetsTest.java
+++ b/ccm-core/src/test/java/org/libreccm/core/DatasetsTest.java
@@ -42,10 +42,17 @@ public class DatasetsTest extends DatasetsVerifier {
@Parameterized.Parameters(name = "Dataset {0}")
public static Collection data() {
return Arrays.asList(new String[]{
+ "/datasets/org/libreccm/core/authentication/LoginManagerTest/data.json",
"/datasets/org/libreccm/core/CcmObjectRepositoryTest/data.json",
"/datasets/org/libreccm/core/CcmObjectRepositoryTest/after-delete.json",
"/datasets/org/libreccm/core/CcmObjectRepositoryTest/after-save-changed.json",
"/datasets/org/libreccm/core/CcmObjectRepositoryTest/after-save-new.json",
+ "/datasets/org/libreccm/core/GroupManagerTest/users-groups.json",
+ "/datasets/org/libreccm/core/GroupRepositoryTest/data.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-new.json",
+ "/datasets/org/libreccm/core/UserManagerTest/verify-password.json",
"/datasets/org/libreccm/core/UserRepositoryTest/data.json",
"/datasets/org/libreccm/core/UserRepositoryTest/after-delete.json",
"/datasets/org/libreccm/core/UserRepositoryTest/after-save-changed.json",
diff --git a/ccm-core/src/test/java/org/libreccm/core/GroupManagerTest.java b/ccm-core/src/test/java/org/libreccm/core/GroupManagerTest.java
new file mode 100644
index 000000000..6ddba7c49
--- /dev/null
+++ b/ccm-core/src/test/java/org/libreccm/core/GroupManagerTest.java
@@ -0,0 +1,139 @@
+/*
+ * 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.core;
+
+import static org.hamcrest.Matchers.*;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.junit.InSequence;
+import org.jboss.arquillian.persistence.PersistenceTest;
+import org.jboss.arquillian.persistence.UsingDataSet;
+import org.jboss.arquillian.transaction.api.annotation.TransactionMode;
+import org.jboss.arquillian.transaction.api.annotation.Transactional;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
+import org.junit.After;
+import org.junit.AfterClass;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.libreccm.tests.categories.IntegrationTest;
+
+import java.io.File;
+
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@Category(IntegrationTest.class)
+@RunWith(Arquillian.class)
+@PersistenceTest
+@Transactional(TransactionMode.COMMIT)
+public class GroupManagerTest {
+
+ @Inject
+ private transient GroupManager groupManager;
+
+ @Inject
+ private transient UserRepository userRepository;
+
+ @Inject
+ private transient GroupRepository groupRepository;
+
+ public GroupManagerTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() {
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ @Deployment
+ public static WebArchive createDeployment() {
+ final PomEquippedResolveStage pom = Maven
+ .resolver()
+ .loadPomFromFile("pom.xml");
+ final PomEquippedResolveStage dependencies = pom.
+ importCompileAndRuntimeDependencies();
+ final File[] libs = dependencies.resolve().withTransitivity().asFile();
+
+ for (File lib : libs) {
+ System.err.printf("Adding file '%s' to test archive...%n",
+ lib.getName());
+ }
+
+ return ShrinkWrap
+ .create(WebArchive.class,
+ "LibreCCM-org.libreccm.core.GroupManagerTest.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
+ @InSequence(10)
+ @UsingDataSet("datasets/org/libreccm/core/GroupManagerTest/users-groups.json")
+ public void verifyIsMemberOfGroup() {
+ final User jdoe = userRepository.findByScreenName("jdoe");
+ final Group admins = groupRepository.findByGroupName("admins");
+ final Group users = groupRepository.findByGroupName("users");
+ final Group authors = groupRepository.findByGroupName("authors");
+
+ assertThat(groupManager.isMemberOfGroup(jdoe, admins), is(false));
+ assertThat(groupManager.isMemberOfGroup(jdoe, users), is(true));
+ assertThat(groupManager.isMemberOfGroup(jdoe, authors), is(true));
+ }
+}
diff --git a/ccm-core/src/test/java/org/libreccm/core/GroupRepositoryTest.java b/ccm-core/src/test/java/org/libreccm/core/GroupRepositoryTest.java
new file mode 100644
index 000000000..f70d6344a
--- /dev/null
+++ b/ccm-core/src/test/java/org/libreccm/core/GroupRepositoryTest.java
@@ -0,0 +1,207 @@
+/*
+ * 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.core;
+
+import static org.hamcrest.Matchers.*;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.ShouldThrowException;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.junit.InSequence;
+import org.jboss.arquillian.persistence.PersistenceTest;
+import org.jboss.arquillian.persistence.ShouldMatchDataSet;
+import org.jboss.arquillian.persistence.UsingDataSet;
+import org.jboss.arquillian.transaction.api.annotation.TransactionMode;
+import org.jboss.arquillian.transaction.api.annotation.Transactional;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
+import org.junit.After;
+import org.junit.AfterClass;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.libreccm.tests.categories.IntegrationTest;
+
+import java.io.File;
+
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@Category(IntegrationTest.class)
+@RunWith(Arquillian.class)
+@PersistenceTest
+@Transactional(TransactionMode.COMMIT)
+public class GroupRepositoryTest {
+
+ @Inject
+ private transient GroupRepository groupRepository;
+
+ public GroupRepositoryTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() {
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ @Deployment
+ public static WebArchive createDeployment() {
+ final PomEquippedResolveStage pom = Maven
+ .resolver()
+ .loadPomFromFile("pom.xml");
+ final PomEquippedResolveStage dependencies = pom.
+ importCompileAndRuntimeDependencies();
+ final File[] libs = dependencies.resolve().withTransitivity().asFile();
+
+ for (File lib : libs) {
+ System.err.printf("Adding file '%s' to test archive...%n",
+ lib.getName());
+ }
+
+ 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");
+ }
+
+ private void verifyGroups(final Group admins,
+ final Group users,
+ final Group authors,
+ final Group none) {
+ assertThat(admins, is(not(nullValue())));
+ assertThat(admins.getName(), is(equalTo("admins")));
+
+ assertThat(users, is(not(nullValue())));
+ assertThat(users.getName(), is(equalTo("users")));
+
+ assertThat(authors, is(not(nullValue())));
+ assertThat(authors.getName(), is(equalTo("authors")));
+
+ assertThat(none, is(nullValue()));
+
+ }
+
+ @Test
+ @InSequence
+ @UsingDataSet("datasets/org/libreccm/core/GroupRepositoryTest/data.json")
+ public void findGroupById() {
+ final Group admins = groupRepository.findById(-10L);
+ final Group users = groupRepository.findById(-20L);
+ final Group authors = groupRepository.findById(-30L);
+ final Group none = groupRepository.findById(-999L);
+
+ verifyGroups(admins, users, authors, none);
+ }
+
+ @Test
+ @InSequence(20)
+ @UsingDataSet("datasets/org/libreccm/core/GroupRepositoryTest/data.json")
+ public void findGroupByName() {
+ final Group admins = groupRepository.findByGroupName("admins");
+ final Group users = groupRepository.findByGroupName("users");
+ final Group authors = groupRepository.findByGroupName("authors");
+ final Group none = groupRepository.findByGroupName("none");
+
+ verifyGroups(admins, users, authors, none);
+ }
+
+ @Test
+ @InSequence(30)
+ @UsingDataSet("datasets/org/libreccm/core/GroupRepositoryTest/data.json")
+ @ShouldMatchDataSet(value
+ = "datasets/org/libreccm/core/GroupRepositoryTest/after-save-new.json",
+ excludeColumns = "subject_id")
+ public void saveNewGroup() {
+ final Group publishers = new Group();
+ publishers.setName("publishers");
+
+ groupRepository.save(publishers);
+ }
+
+ @Test
+ @InSequence(40)
+ @UsingDataSet("datasets/org/libreccm/core/GroupRepositoryTest/data.json")
+ @ShouldMatchDataSet(value
+ = "datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json",
+ excludeColumns = {"subject_id"})
+ public void saveChangedGroup() {
+ final Group group = groupRepository.findByGroupName("authors");
+ group.setName("editors");
+
+ groupRepository.save(group);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ @ShouldThrowException(IllegalArgumentException.class)
+ @InSequence(50)
+ public void saveNullValue() {
+ groupRepository.save(null);
+ }
+
+ @Test
+ @InSequence(60)
+ @UsingDataSet("datasets/org/libreccm/core/GroupRepositoryTest/data.json")
+ @ShouldMatchDataSet(
+ "datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json")
+ public void deleteGroup() {
+ final Group group = groupRepository.findByGroupName("users");
+
+ groupRepository.delete(group);
+ }
+
+}
diff --git a/ccm-core/src/test/java/org/libreccm/core/UserManagerTest.java b/ccm-core/src/test/java/org/libreccm/core/UserManagerTest.java
index e9db1ef5f..ecee2375d 100644
--- a/ccm-core/src/test/java/org/libreccm/core/UserManagerTest.java
+++ b/ccm-core/src/test/java/org/libreccm/core/UserManagerTest.java
@@ -40,7 +40,6 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
-import static org.libreccm.core.CoreConstants.*;
import org.apache.commons.codec.binary.Base64;
import org.jboss.arquillian.container.test.api.ShouldThrowException;
diff --git a/ccm-core/src/test/java/org/libreccm/core/UserRepositoryTest.java b/ccm-core/src/test/java/org/libreccm/core/UserRepositoryTest.java
index 20c03efe7..63e2185b1 100644
--- a/ccm-core/src/test/java/org/libreccm/core/UserRepositoryTest.java
+++ b/ccm-core/src/test/java/org/libreccm/core/UserRepositoryTest.java
@@ -55,7 +55,6 @@ import org.libreccm.tests.categories.IntegrationTest;
import java.util.List;
-import javax.persistence.Query;
/**
*
@@ -252,7 +251,7 @@ public class UserRepositoryTest {
@UsingDataSet("datasets/org/libreccm/core/UserRepositoryTest/data.json")
@ShouldMatchDataSet(value
= "datasets/org/libreccm/core/UserRepositoryTest/after-save-new.json",
- excludeColumns = {"subject_id"})
+ excludeColumns = {"subject_id", "user_id"})
@InSequence(500)
public void saveNewUser() {
final User user = new User();
diff --git a/ccm-core/src/test/java/org/libreccm/core/authentication/LoginManagerTest.java b/ccm-core/src/test/java/org/libreccm/core/authentication/LoginManagerTest.java
index 17f8c01c6..c713784e0 100644
--- a/ccm-core/src/test/java/org/libreccm/core/authentication/LoginManagerTest.java
+++ b/ccm-core/src/test/java/org/libreccm/core/authentication/LoginManagerTest.java
@@ -45,6 +45,8 @@ import org.junit.runner.RunWith;
import org.libreccm.core.CcmObject;
import org.libreccm.core.CcmSessionContext;
import org.libreccm.core.EmailAddress;
+import org.libreccm.core.Subject;
+import org.libreccm.core.User;
import org.libreccm.tests.categories.IntegrationTest;
import java.io.File;
@@ -175,13 +177,17 @@ public class LoginManagerTest {
public void loginValidCredentials() throws LoginException {
loginManager.login("jdoe@example.com", "foobar");
- assertThat(ccmSessionContext.getCurrentParty(), is(not(nullValue())));
+ assertThat(ccmSessionContext.getCurrentSubject(), is(not(nullValue())));
final EmailAddress emailAddress = new EmailAddress();
emailAddress.setAddress("jdoe@example.com");
emailAddress.setBouncing(false);
emailAddress.setVerified(true);
- assertThat(ccmSessionContext.getCurrentParty().getEmailAddresses(),
- contains(equalTo(emailAddress)));
+
+ final Subject subject = ccmSessionContext.getCurrentSubject();
+ assertThat(subject, is(instanceOf(User.class)));
+
+ final User user = (User) subject;
+ assertThat(user.getEmailAddresses(), contains(equalTo(emailAddress)));
}
@Test
@@ -192,7 +198,7 @@ public class LoginManagerTest {
try {
loginManager.login("jdoe@example.com", "wrong-pw");
} catch (LoginException ex) {
- assertThat(ccmSessionContext.getCurrentParty(), is(nullValue()));
+ assertThat(ccmSessionContext.getCurrentSubject(), is(nullValue()));
return;
}
@@ -207,7 +213,7 @@ public class LoginManagerTest {
try {
loginManager.login("jdoe@example.com", "");
} catch (LoginException ex) {
- assertThat(ccmSessionContext.getCurrentParty(), is(nullValue()));
+ assertThat(ccmSessionContext.getCurrentSubject(), is(nullValue()));
return;
}
@@ -222,7 +228,7 @@ public class LoginManagerTest {
try {
loginManager.login("", "correct-pw");
} catch (LoginException ex) {
- assertThat(ccmSessionContext.getCurrentParty(), is(nullValue()));
+ assertThat(ccmSessionContext.getCurrentSubject(), is(nullValue()));
return;
}
@@ -237,7 +243,7 @@ public class LoginManagerTest {
try {
loginManager.login("jdoe@example.com", null);
} catch (LoginException ex) {
- assertThat(ccmSessionContext.getCurrentParty(), is(nullValue()));
+ assertThat(ccmSessionContext.getCurrentSubject(), is(nullValue()));
return;
}
@@ -252,7 +258,7 @@ public class LoginManagerTest {
try {
loginManager.login(null, "correct-pw");
} catch (LoginException ex) {
- assertThat(ccmSessionContext.getCurrentParty(), is(nullValue()));
+ assertThat(ccmSessionContext.getCurrentSubject(), is(nullValue()));
return;
}
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupManagerTest/users-groups.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupManagerTest/users-groups.json
new file mode 100644
index 000000000..19202a483
--- /dev/null
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupManagerTest/users-groups.json
@@ -0,0 +1,68 @@
+{
+ "subjects":
+ [
+ {
+ "subject_id": -10
+ },
+ {
+ "subject_id": -20
+ },
+ {
+ "subject_id": -30
+ },
+ {
+ "subject_id": -40
+ }
+ ],
+ "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
+ }
+ ],
+ "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
+ }
+ ],
+ "group_memberships":
+ [
+ {
+ "membership_id": -10,
+ "group_subject_id": -30,
+ "user_subject_id": -10
+ },
+ {
+ "membership_id": -20,
+ "group_subject_id": -40,
+ "user_subject_id": -10
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json
new file mode 100644
index 000000000..285b75c82
--- /dev/null
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json
@@ -0,0 +1,22 @@
+{
+ "subjects":
+ [
+ {
+ "subject_id": -10
+ },
+ {
+ "subject_id": -30
+ }
+ ],
+ "ccm_groups":
+ [
+ {
+ "name": "admins",
+ "subject_id": -10
+ },
+ {
+ "name": "authors",
+ "subject_id": -30
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json
new file mode 100644
index 000000000..7493fd740
--- /dev/null
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json
@@ -0,0 +1,29 @@
+{
+ "subjects":
+ [
+ {
+ "subject_id": -10
+ },
+ {
+ "subject_id": -20
+ },
+ {
+ "subject_id": -30
+ }
+ ],
+ "ccm_groups":
+ [
+ {
+ "name": "admins",
+ "subject_id": -10
+ },
+ {
+ "name": "users",
+ "subject_id": -20
+ },
+ {
+ "name": "editors",
+ "subject_id": -30
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-new.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-new.json
new file mode 100644
index 000000000..89658ba74
--- /dev/null
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-new.json
@@ -0,0 +1,36 @@
+{
+ "subjects":
+ [
+ {
+ "subject_id": -10
+ },
+ {
+ "subject_id": -20
+ },
+ {
+ "subject_id": -30
+ },
+ {
+ "subject_id": -40
+ }
+ ],
+ "ccm_groups":
+ [
+ {
+ "name": "admins",
+ "subject_id": -10
+ },
+ {
+ "name": "users",
+ "subject_id": -20
+ },
+ {
+ "name": "authors",
+ "subject_id": -30
+ },
+ {
+ "name": "publishers",
+ "subject_id": -40
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/data.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/data.json
new file mode 100644
index 000000000..e3a65eb3f
--- /dev/null
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/data.json
@@ -0,0 +1,29 @@
+{
+ "subjects":
+ [
+ {
+ "subject_id": -10
+ },
+ {
+ "subject_id": -20
+ },
+ {
+ "subject_id": -30
+ }
+ ],
+ "ccm_groups":
+ [
+ {
+ "name": "admins",
+ "subject_id": -10
+ },
+ {
+ "name": "users",
+ "subject_id": -20
+ },
+ {
+ "name": "authors",
+ "subject_id": -30
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserManagerTest/verify-password.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserManagerTest/verify-password.json
index 76d270f06..9e634465b 100644
--- a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserManagerTest/verify-password.json
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserManagerTest/verify-password.json
@@ -5,15 +5,6 @@
"subject_id": -10
}
],
- "subject_email_addresses":
- [
- {
- "subject_id": -10,
- "email_address": "john.doe@example.com",
- "bouncing": false,
- "verified": true
- }
- ],
"ccm_users":
[
{
@@ -27,5 +18,14 @@
"screen_name": "jdoe",
"subject_id": -10
}
+ ],
+ "user_email_addresses":
+ [
+ {
+ "user_id": -10,
+ "email_address": "john.doe@example.com",
+ "bouncing": false,
+ "verified": true
+ }
]
}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-delete.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-delete.json
index 2d1ac388b..b227f7ab4 100644
--- a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-delete.json
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-delete.json
@@ -8,21 +8,6 @@
"subject_id": -30
}
],
- "subject_email_addresses":
- [
- {
- "subject_id": -10,
- "email_address": "john.doe@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -30,
- "email_address": "joe.public@example.com",
- "bouncing": true,
- "verified": false
- }
- ],
"ccm_users":
[
{
@@ -47,5 +32,20 @@
"screen_name": "joe",
"subject_id": -30
}
+ ],
+ "user_email_addresses":
+ [
+ {
+ "user_id": -10,
+ "email_address": "john.doe@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -30,
+ "email_address": "joe.public@example.com",
+ "bouncing": true,
+ "verified": false
+ }
]
}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-changed.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-changed.json
index cedf058d2..7e0961efc 100644
--- a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-changed.json
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-changed.json
@@ -11,33 +11,6 @@
"subject_id": -30
}
],
- "subject_email_addresses":
- [
- {
- "subject_id": -10,
- "email_address": "jd@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "max.mustermann@example.org",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "mm@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -30,
- "email_address": "joe.public@example.com",
- "bouncing": true,
- "verified": false
- }
- ],
"ccm_users":
[
{
@@ -74,5 +47,32 @@
"screen_name": "joe",
"subject_id": -30
}
+ ],
+ "user_email_addresses":
+ [
+ {
+ "user_id": -10,
+ "email_address": "jd@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "max.mustermann@example.org",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "mm@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -30,
+ "email_address": "joe.public@example.com",
+ "bouncing": true,
+ "verified": false
+ }
]
}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-new.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-new.json
index 7ab220873..8b453c39c 100644
--- a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-new.json
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/after-save-new.json
@@ -14,39 +14,6 @@
"subject_id": -40
}
],
- "subject_email_addresses":
- [
- {
- "subject_id": -10,
- "email_address": "john.doe@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "max.mustermann@example.org",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "mm@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -30,
- "email_address": "joe.public@example.com",
- "bouncing": true,
- "verified": false
- },
- {
- "subject_id": -40,
- "email_address": "jane.doe@example.org",
- "bouncing": false,
- "verified": false
- }
- ],
"ccm_users":
[
{
@@ -95,5 +62,38 @@
"screen_name": "jane",
"subject_id": -40
}
+ ],
+ "user_email_addresses":
+ [
+ {
+ "user_id": -10,
+ "email_address": "john.doe@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "max.mustermann@example.org",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "mm@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -30,
+ "email_address": "joe.public@example.com",
+ "bouncing": true,
+ "verified": false
+ },
+ {
+ "user_id": -40,
+ "email_address": "jane.doe@example.org",
+ "bouncing": false,
+ "verified": false
+ }
]
}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data-email-duplicate.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data-email-duplicate.json
index 57c37343a..67dd66c61 100644
--- a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data-email-duplicate.json
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data-email-duplicate.json
@@ -11,33 +11,6 @@
"subject_id": -30
}
],
- "subject_email_addresses":
- [
- {
- "subject_id": -10,
- "email_address": "john.doe@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "max.mustermann@example.org",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "mm@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -30,
- "email_address": "max.mustermann@example.org",
- "bouncing": true,
- "verified": false
- }
- ],
"ccm_users":
[
{
@@ -73,5 +46,32 @@
"screen_name": "joe",
"subject_id": -30
}
+ ],
+ "user_email_addresses":
+ [
+ {
+ "user_id": -10,
+ "email_address": "john.doe@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "max.mustermann@example.org",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "mm@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -30,
+ "email_address": "max.mustermann@example.org",
+ "bouncing": true,
+ "verified": false
+ }
]
}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data.json
index a3a5b25c5..455e5a77b 100644
--- a/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data.json
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/UserRepositoryTest/data.json
@@ -11,33 +11,6 @@
"subject_id": -30
}
],
- "subject_email_addresses":
- [
- {
- "subject_id": -10,
- "email_address": "john.doe@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "max.mustermann@example.org",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -20,
- "email_address": "mm@example.com",
- "bouncing": false,
- "verified": true
- },
- {
- "subject_id": -30,
- "email_address": "joe.public@example.com",
- "bouncing": true,
- "verified": false
- }
- ],
"ccm_users":
[
{
@@ -73,5 +46,32 @@
"screen_name": "joe",
"subject_id": -30
}
+ ],
+ "user_email_addresses":
+ [
+ {
+ "user_id": -10,
+ "email_address": "john.doe@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "max.mustermann@example.org",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -20,
+ "email_address": "mm@example.com",
+ "bouncing": false,
+ "verified": true
+ },
+ {
+ "user_id": -30,
+ "email_address": "joe.public@example.com",
+ "bouncing": true,
+ "verified": false
+ }
]
}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/core/authentication/LoginManagerTest/data.json b/ccm-core/src/test/resources/datasets/org/libreccm/core/authentication/LoginManagerTest/data.json
index d91a5e765..18b07d80f 100644
--- a/ccm-core/src/test/resources/datasets/org/libreccm/core/authentication/LoginManagerTest/data.json
+++ b/ccm-core/src/test/resources/datasets/org/libreccm/core/authentication/LoginManagerTest/data.json
@@ -5,15 +5,6 @@
"subject_id": -10
}
],
- "subject_email_addresses":
- [
- {
- "subject_id": -10,
- "email_address": "jdoe@example.com",
- "bouncing": false,
- "verified": true
- }
- ],
"ccm_users":
[
{
@@ -27,5 +18,14 @@
"screen_name": "jdoe",
"subject_id": -10
}
+ ],
+ "user_email_addresses":
+ [
+ {
+ "user_id": -10,
+ "email_address": "jdoe@example.com",
+ "bouncing": false,
+ "verified": true
+ }
]
}
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/scripts/h2-cleanup.sql b/ccm-core/src/test/resources/scripts/h2-cleanup.sql
index f0d1e2b26..caea7c126 100644
--- a/ccm-core/src/test/resources/scripts/h2-cleanup.sql
+++ b/ccm-core/src/test/resources/scripts/h2-cleanup.sql
@@ -1,6 +1,10 @@
DELETE FROM ccm_objects;
-DELETE FROM subject_email_addresses;
+DELETE FROM group_memberships;
+
+DELETE FROM ccm_groups;
+
+DELETE FROM user_email_addresses;
DELETE FROM ccm_users;
diff --git a/ccm-core/src/test/resources/scripts/mysql-cleanup.sql b/ccm-core/src/test/resources/scripts/mysql-cleanup.sql
index f0d1e2b26..60316db64 100644
--- a/ccm-core/src/test/resources/scripts/mysql-cleanup.sql
+++ b/ccm-core/src/test/resources/scripts/mysql-cleanup.sql
@@ -2,6 +2,10 @@ DELETE FROM ccm_objects;
DELETE FROM subject_email_addresses;
+DELETE FROM group_memberships;
+
+DELETE FROM ccm_groups;
+
DELETE FROM ccm_users;
DELETE FROM subjects;
\ No newline at end of file
diff --git a/ccm-core/src/test/resources/scripts/pgsql-cleanup.sql b/ccm-core/src/test/resources/scripts/pgsql-cleanup.sql
index f0d1e2b26..60316db64 100644
--- a/ccm-core/src/test/resources/scripts/pgsql-cleanup.sql
+++ b/ccm-core/src/test/resources/scripts/pgsql-cleanup.sql
@@ -2,6 +2,10 @@ DELETE FROM ccm_objects;
DELETE FROM subject_email_addresses;
+DELETE FROM group_memberships;
+
+DELETE FROM ccm_groups;
+
DELETE FROM ccm_users;
DELETE FROM subjects;
\ No newline at end of file