From 7c43e820686ae389683869760c029f0b637967fc Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 24 Jul 2015 19:48:44 +0000 Subject: [PATCH] CCM NG: Repository and Manager class for Groups. Repository is finished, Manager not yet git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3530 8810af33-2d31-482b-a856-94f89814c4df --- .../org/libreccm/core/CcmSessionContext.java | 30 +-- .../main/java/org/libreccm/core/Group.java | 8 +- .../java/org/libreccm/core/GroupManager.java | 74 +++++++ .../org/libreccm/core/GroupRepository.java | 69 ++++++ .../main/java/org/libreccm/core/Subject.java | 32 --- .../src/main/java/org/libreccm/core/User.java | 36 +++ .../core/authentication/LoginManager.java | 2 +- .../java/org/libreccm/core/DatasetsTest.java | 7 + .../org/libreccm/core/GroupManagerTest.java | 139 ++++++++++++ .../libreccm/core/GroupRepositoryTest.java | 207 ++++++++++++++++++ .../org/libreccm/core/UserManagerTest.java | 1 - .../org/libreccm/core/UserRepositoryTest.java | 3 +- .../core/authentication/LoginManagerTest.java | 22 +- .../core/GroupManagerTest/users-groups.json | 68 ++++++ .../GroupRepositoryTest/after-delete.json | 22 ++ .../after-save-changed.json | 29 +++ .../GroupRepositoryTest/after-save-new.json | 36 +++ .../core/GroupRepositoryTest/data.json | 29 +++ .../core/UserManagerTest/verify-password.json | 18 +- .../core/UserRepositoryTest/after-delete.json | 30 +-- .../after-save-changed.json | 54 ++--- .../UserRepositoryTest/after-save-new.json | 66 +++--- .../data-email-duplicate.json | 54 ++--- .../core/UserRepositoryTest/data.json | 54 ++--- .../authentication/LoginManagerTest/data.json | 18 +- .../src/test/resources/scripts/h2-cleanup.sql | 6 +- .../test/resources/scripts/mysql-cleanup.sql | 4 + .../test/resources/scripts/pgsql-cleanup.sql | 4 + 28 files changed, 914 insertions(+), 208 deletions(-) create mode 100644 ccm-core/src/main/java/org/libreccm/core/GroupManager.java create mode 100644 ccm-core/src/main/java/org/libreccm/core/GroupRepository.java create mode 100644 ccm-core/src/test/java/org/libreccm/core/GroupManagerTest.java create mode 100644 ccm-core/src/test/java/org/libreccm/core/GroupRepositoryTest.java create mode 100644 ccm-core/src/test/resources/datasets/org/libreccm/core/GroupManagerTest/users-groups.json create mode 100644 ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-delete.json create mode 100644 ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-changed.json create mode 100644 ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/after-save-new.json create mode 100644 ccm-core/src/test/resources/datasets/org/libreccm/core/GroupRepositoryTest/data.json 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