Skip to content
Snippets Groups Projects
Commit d7bfc8ea authored by srosse's avatar srosse
Browse files

OO-1000: add unit tests for grants GroupdAO, modernize NoteManager

parent b46aa85a
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="org.olat.note" />
<import resource="classpath:/org/olat/core/util/threadlog/_spring/threadlogCorecontext.xml"/> <import resource="classpath:/org/olat/core/util/threadlog/_spring/threadlogCorecontext.xml"/>
<import resource="classpath:/org/olat/core/_spring/mainCorecontext.xml"/> <import resource="classpath:/org/olat/core/_spring/mainCorecontext.xml"/>
...@@ -33,7 +38,6 @@ ...@@ -33,7 +38,6 @@
<import resource="classpath:/org/olat/instantMessaging/_spring/instantMessagingContext.xml"/> <import resource="classpath:/org/olat/instantMessaging/_spring/instantMessagingContext.xml"/>
<import resource="classpath:/org/olat/ldap/_spring/ldapContext.xml"/> <import resource="classpath:/org/olat/ldap/_spring/ldapContext.xml"/>
<import resource="classpath:/org/olat/login/_spring/loginContext.xml"/> <import resource="classpath:/org/olat/login/_spring/loginContext.xml"/>
<import resource="classpath:/org/olat/note/_spring/noteContext.xml"/>
<import resource="classpath:/org/olat/portfolio/_spring/portfolioContext.xml"/> <import resource="classpath:/org/olat/portfolio/_spring/portfolioContext.xml"/>
<import resource="classpath:/org/olat/properties/_spring/propertiesContext.xml"/> <import resource="classpath:/org/olat/properties/_spring/propertiesContext.xml"/>
<import resource="classpath:/org/olat/registration/_spring/registrationContext.xml"/> <import resource="classpath:/org/olat/registration/_spring/registrationContext.xml"/>
......
...@@ -45,6 +45,7 @@ import org.olat.core.util.event.EventBus; ...@@ -45,6 +45,7 @@ import org.olat.core.util.event.EventBus;
import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.event.GenericEventListener;
import org.olat.core.util.resource.OLATResourceableJustBeforeDeletedEvent; import org.olat.core.util.resource.OLATResourceableJustBeforeDeletedEvent;
import org.olat.core.util.resource.OresHelper; import org.olat.core.util.resource.OresHelper;
import org.springframework.beans.factory.annotation.Autowired;
/** /**
* Initial Date: Dec 9, 2004 * Initial Date: Dec 9, 2004
...@@ -58,12 +59,14 @@ import org.olat.core.util.resource.OresHelper; ...@@ -58,12 +59,14 @@ import org.olat.core.util.resource.OresHelper;
*/ */
public class NoteController extends FormBasicController implements GenericEventListener { public class NoteController extends FormBasicController implements GenericEventListener {
private NoteManager nm;
private Note n; private Note n;
private EventBus sec; private EventBus sec;
private RichTextElement noteField; private RichTextElement noteField;
private FormLink editButton; private FormLink editButton;
private FormSubmit submitButton; private FormSubmit submitButton;
@Autowired
private NoteManager nm;
/** /**
* @param ureq * @param ureq
...@@ -98,8 +101,7 @@ public class NoteController extends FormBasicController implements GenericEventL ...@@ -98,8 +101,7 @@ public class NoteController extends FormBasicController implements GenericEventL
private void init(UserRequest ureq, String resourceTypeName, Long resourceTypeId, String noteTitle) { private void init(UserRequest ureq, String resourceTypeName, Long resourceTypeId, String noteTitle) {
Identity owner = ureq.getIdentity(); Identity owner = ureq.getIdentity();
this.nm = NoteManager.getInstance(); n = nm.loadNoteOrCreateInRAM(owner, resourceTypeName, resourceTypeId);
this.n = nm.loadNoteOrCreateInRAM(owner, resourceTypeName, resourceTypeId);
n.setNoteTitle(noteTitle); n.setNoteTitle(noteTitle);
// register for local event (for the same user), is used to dispose // register for local event (for the same user), is used to dispose
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
package org.olat.note; package org.olat.note;
import java.util.Date; import java.util.Date;
import org.olat.core.commons.persistence.PersistentObject; import org.olat.core.commons.persistence.PersistentObject;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.logging.AssertException; import org.olat.core.logging.AssertException;
...@@ -37,6 +38,9 @@ import org.olat.core.logging.AssertException; ...@@ -37,6 +38,9 @@ import org.olat.core.logging.AssertException;
* @author Alexander Schneider * @author Alexander Schneider
*/ */
public class NoteImpl extends PersistentObject implements Note { public class NoteImpl extends PersistentObject implements Note {
private static final long serialVersionUID = -403450817851666464L;
private Identity owner; private Identity owner;
private String resourceTypeName; private String resourceTypeName;
private Long resourceTypeId; private Long resourceTypeId;
...@@ -157,4 +161,21 @@ public class NoteImpl extends PersistentObject implements Note { ...@@ -157,4 +161,21 @@ public class NoteImpl extends PersistentObject implements Note {
public void setLastModified(Date date) { public void setLastModified(Date date) {
this.lastModified = date; this.lastModified = date;
} }
@Override
public int hashCode() {
return getKey() == null ? 2609815 : getKey().hashCode();
}
@Override
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj instanceof NoteImpl) {
NoteImpl note = (NoteImpl)obj;
return getKey() != null && getKey().equals(note.getKey());
}
return false;
}
} }
\ No newline at end of file
...@@ -49,6 +49,7 @@ import org.olat.core.util.event.EventBus; ...@@ -49,6 +49,7 @@ import org.olat.core.util.event.EventBus;
import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.event.GenericEventListener;
import org.olat.core.util.resource.OLATResourceableJustBeforeDeletedEvent; import org.olat.core.util.resource.OLATResourceableJustBeforeDeletedEvent;
import org.olat.core.util.resource.OresHelper; import org.olat.core.util.resource.OresHelper;
import org.springframework.beans.factory.annotation.Autowired;
/** /**
...@@ -61,7 +62,6 @@ public class NoteListController extends BasicController implements GenericEventL ...@@ -61,7 +62,6 @@ public class NoteListController extends BasicController implements GenericEventL
private NoteListTableDataModel nLModel; private NoteListTableDataModel nLModel;
private Note chosenN = null; private Note chosenN = null;
private NoteManager nm = NoteManager.getInstance();
private TableController tableC; private TableController tableC;
private DialogBoxController deleteDialogCtr; private DialogBoxController deleteDialogCtr;
...@@ -70,6 +70,9 @@ public class NoteListController extends BasicController implements GenericEventL ...@@ -70,6 +70,9 @@ public class NoteListController extends BasicController implements GenericEventL
private Identity cOwner; private Identity cOwner;
private Locale locale; private Locale locale;
private CloseableModalController cmc; private CloseableModalController cmc;
@Autowired
private NoteManager nm;
/** /**
* @param ureq * @param ureq
......
...@@ -29,39 +29,26 @@ import java.util.Date; ...@@ -29,39 +29,26 @@ import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.hibernate.type.StandardBasicTypes; import org.olat.basesecurity.IdentityRef;
import org.hibernate.type.Type; import org.olat.core.commons.persistence.DB;
import org.olat.core.commons.persistence.DBFactory;
import org.olat.core.commons.persistence.DBQuery;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.OLATResourceable; import org.olat.core.id.OLATResourceable;
import org.olat.core.manager.BasicManager;
import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.CoordinatorManager;
import org.olat.core.util.resource.OresHelper; import org.olat.core.util.resource.OresHelper;
import org.olat.user.UserDataDeletable; import org.olat.user.UserDataDeletable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/** /**
* Description: * Description:
* *
* @author Alexander Schneider * @author Alexander Schneider
*/ */
public class NoteManager extends BasicManager implements UserDataDeletable { @Service
private static NoteManager instance; public class NoteManager implements UserDataDeletable {
/** @Autowired
* [spring] private DB dbInstance;
* @param userDeletionManager
*/
private NoteManager() {
instance = this;
}
/**
* @return the singleton
*/
public static NoteManager getInstance() {
return instance;
}
/** /**
* @param owner * @param owner
...@@ -98,29 +85,30 @@ public class NoteManager extends BasicManager implements UserDataDeletable { ...@@ -98,29 +85,30 @@ public class NoteManager extends BasicManager implements UserDataDeletable {
* @param resourceTypeId * @param resourceTypeId
* @return the note * @return the note
*/ */
private Note findNote(Identity owner, String resourceTypeName, Long resourceTypeId) { private Note findNote(IdentityRef owner, String resourceTypeName, Long resourceTypeId) {
String query = "from org.olat.note.NoteImpl as n where n.owner = ? and n.resourceTypeName = ? and n.resourceTypeId = ?"; String query = "select n from org.olat.note.NoteImpl as n where n.owner.key=:ownerKey and n.resourceTypeName=:resName and n.resourceTypeId=:resId";
List notes = DBFactory.getInstance().find(query, new Object[] { owner.getKey(), resourceTypeName, resourceTypeId }, List<Note> notes = dbInstance.getCurrentEntityManager().createQuery(query, Note.class)
new Type[] { StandardBasicTypes.LONG, StandardBasicTypes.STRING, StandardBasicTypes.LONG }); .setParameter("ownerKey", owner.getKey())
.setParameter("resName", resourceTypeName)
.setParameter("resId", resourceTypeId)
.getResultList();
if (notes == null || notes.size() != 1) { if (notes == null || notes.size() != 1) {
return null; return null;
} else {
return (Note) notes.get(0);
} }
return notes.get(0);
} }
/** /**
* @param owner * @param owner
* @return a list of notes belonging to the owner * @return a list of notes belonging to the owner
*/ */
public List<Note> listUserNotes(Identity owner) { public List<Note> listUserNotes(IdentityRef owner) {
String query = "from org.olat.note.NoteImpl as n inner join fetch n.owner as noteowner where noteowner = :noteowner"; String query = "select n from org.olat.note.NoteImpl as n inner join fetch n.owner as noteowner where noteowner.key=:noteowner";
DBQuery dbQuery = DBFactory.getInstance().createQuery(query.toString()); return dbInstance.getCurrentEntityManager()
dbQuery.setEntity("noteowner", owner); .createQuery(query.toString(), Note.class).
List<Note> notes = dbQuery.list(); setParameter("noteowner", owner.getKey())
return notes; .getResultList();
} }
/** /**
...@@ -129,8 +117,8 @@ public class NoteManager extends BasicManager implements UserDataDeletable { ...@@ -129,8 +117,8 @@ public class NoteManager extends BasicManager implements UserDataDeletable {
* @param n the note * @param n the note
*/ */
public void deleteNote(Note n) { public void deleteNote(Note n) {
n = (Note)DBFactory.getInstance().loadObject(n); Note reloadedNote = dbInstance.getCurrentEntityManager().find(NoteImpl.class, n.getKey());
DBFactory.getInstance().deleteObject(n); dbInstance.getCurrentEntityManager().remove(reloadedNote);
fireBookmarkEvent(n.getOwner()); fireBookmarkEvent(n.getOwner());
} }
...@@ -141,7 +129,7 @@ public class NoteManager extends BasicManager implements UserDataDeletable { ...@@ -141,7 +129,7 @@ public class NoteManager extends BasicManager implements UserDataDeletable {
*/ */
public void saveNote(Note n) { public void saveNote(Note n) {
n.setLastModified(new Date()); n.setLastModified(new Date());
DBFactory.getInstance().saveObject(n); dbInstance.getCurrentEntityManager().persist(n);
fireBookmarkEvent(n.getOwner()); fireBookmarkEvent(n.getOwner());
} }
...@@ -150,10 +138,11 @@ public class NoteManager extends BasicManager implements UserDataDeletable { ...@@ -150,10 +138,11 @@ public class NoteManager extends BasicManager implements UserDataDeletable {
* *
* @param n * @param n
*/ */
public void updateNote(Note n) { public Note updateNote(Note n) {
n.setLastModified(new Date()); n.setLastModified(new Date());
DBFactory.getInstance().updateObject(n); Note mergedNote = dbInstance.getCurrentEntityManager().merge(n);
fireBookmarkEvent(n.getOwner()); fireBookmarkEvent(n.getOwner());
return mergedNote;
} }
/** /**
...@@ -162,12 +151,9 @@ public class NoteManager extends BasicManager implements UserDataDeletable { ...@@ -162,12 +151,9 @@ public class NoteManager extends BasicManager implements UserDataDeletable {
*/ */
@Override @Override
public void deleteUserData(Identity identity, String newDeletedUserName) { public void deleteUserData(Identity identity, String newDeletedUserName) {
List<Note> userNotes = this.listUserNotes(identity); List<Note> userNotes = listUserNotes(identity);
for (Iterator<Note> iter = userNotes.iterator(); iter.hasNext();) { for (Iterator<Note> iter = userNotes.iterator(); iter.hasNext();) {
this.deleteNote( iter.next() ); deleteNote( iter.next() );
}
if (isLogDebugEnabled()) {
logDebug("All notes deleted for identity=" + identity, null );
} }
} }
......
...@@ -65,6 +65,7 @@ import org.olat.core.id.context.BusinessControlFactory; ...@@ -65,6 +65,7 @@ import org.olat.core.id.context.BusinessControlFactory;
import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.CoordinatorManager;
import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.event.GenericEventListener;
import org.olat.core.util.resource.OresHelper; import org.olat.core.util.resource.OresHelper;
import org.springframework.beans.factory.annotation.Autowired;
/** /**
* Description:<br> * Description:<br>
...@@ -84,6 +85,9 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note ...@@ -84,6 +85,9 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note
private Link showAllLink; private Link showAllLink;
private final OLATResourceable eventBusThisIdentityOres; private final OLATResourceable eventBusThisIdentityOres;
@Autowired
private NoteManager nm;
/** /**
* Constructor * Constructor
* @param ureq * @param ureq
...@@ -136,7 +140,6 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note ...@@ -136,7 +140,6 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note
* @return * @return
*/ */
private List<PortletEntry<Note>> getAllPortletEntries() { private List<PortletEntry<Note>> getAllPortletEntries() {
NoteManager nm = NoteManager.getInstance();
List<Note> noteList = nm.listUserNotes(cOwner); List<Note> noteList = nm.listUserNotes(cOwner);
return convertNoteToPortletEntryList(noteList); return convertNoteToPortletEntryList(noteList);
} }
...@@ -159,13 +162,10 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note ...@@ -159,13 +162,10 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note
* *
* @see org.olat.core.gui.control.generic.portal.AbstractPortletRunController#reloadModel(org.olat.core.gui.UserRequest, org.olat.core.gui.control.generic.portal.SortingCriteria) * @see org.olat.core.gui.control.generic.portal.AbstractPortletRunController#reloadModel(org.olat.core.gui.UserRequest, org.olat.core.gui.control.generic.portal.SortingCriteria)
*/ */
protected void reloadModel(SortingCriteria sortingCriteria) { protected void reloadModel(SortingCriteria sortCriteria) {
if (sortingCriteria.getSortingType() == SortingCriteria.AUTO_SORTING) { if (sortCriteria.getSortingType() == SortingCriteria.AUTO_SORTING) {
NoteManager nm = NoteManager.getInstance();
List<Note> noteList = nm.listUserNotes(cOwner); List<Note> noteList = nm.listUserNotes(cOwner);
noteList = getSortedList(noteList, sortCriteria );
noteList = getSortedList(noteList, sortingCriteria );
List<PortletEntry<Note>> entries = convertNoteToPortletEntryList(noteList); List<PortletEntry<Note>> entries = convertNoteToPortletEntryList(noteList);
notesListModel = new NoteSortingTableDataModel(entries, getLocale()); notesListModel = new NoteSortingTableDataModel(entries, getLocale());
tableCtr.setTableDataModel(notesListModel); tableCtr.setTableDataModel(notesListModel);
...@@ -287,16 +287,16 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note ...@@ -287,16 +287,16 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note
* *
* @see org.olat.core.gui.control.generic.portal.AbstractPortletRunController#getComparator(org.olat.core.gui.control.generic.portal.SortingCriteria) * @see org.olat.core.gui.control.generic.portal.AbstractPortletRunController#getComparator(org.olat.core.gui.control.generic.portal.SortingCriteria)
*/ */
protected Comparator<Note> getComparator(final SortingCriteria sortingCriteria) { protected Comparator<Note> getComparator(final SortingCriteria criteria) {
return new Comparator<Note>(){ return new Comparator<Note>(){
public int compare(final Note note1, final Note note2) { public int compare(final Note note1, final Note note2) {
int comparisonResult = 0; int comparisonResult = 0;
if(sortingCriteria.getSortingTerm()==SortingCriteria.ALPHABETICAL_SORTING) { if(criteria.getSortingTerm()==SortingCriteria.ALPHABETICAL_SORTING) {
comparisonResult = collator.compare(StringEscapeUtils.escapeHtml(note1.getNoteTitle()).toString(), StringEscapeUtils.escapeHtml(note2.getNoteTitle()).toString()); comparisonResult = collator.compare(StringEscapeUtils.escapeHtml(note1.getNoteTitle()).toString(), StringEscapeUtils.escapeHtml(note2.getNoteTitle()).toString());
} else if(sortingCriteria.getSortingTerm()==SortingCriteria.DATE_SORTING) { } else if(criteria.getSortingTerm()==SortingCriteria.DATE_SORTING) {
comparisonResult = note1.getLastModified().compareTo(note2.getLastModified()); comparisonResult = note1.getLastModified().compareTo(note2.getLastModified());
} }
if(!sortingCriteria.isAscending()) { if(!criteria.isAscending()) {
//if not isAscending return (-comparisonResult) //if not isAscending return (-comparisonResult)
return -comparisonResult; return -comparisonResult;
} }
......
...@@ -19,17 +19,20 @@ ...@@ -19,17 +19,20 @@
*/ */
package org.olat.basesecurity.manager; package org.olat.basesecurity.manager;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import junit.framework.Assert; import junit.framework.Assert;
import org.junit.Test; import org.junit.Test;
import org.olat.basesecurity.Grant;
import org.olat.basesecurity.Group; import org.olat.basesecurity.Group;
import org.olat.basesecurity.GroupMembership; import org.olat.basesecurity.GroupMembership;
import org.olat.basesecurity.model.GroupImpl; import org.olat.basesecurity.model.GroupImpl;
import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.DB;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.resource.OLATResource;
import org.olat.test.JunitTestHelper; import org.olat.test.JunitTestHelper;
import org.olat.test.OlatTestCase; import org.olat.test.OlatTestCase;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -242,5 +245,166 @@ public class GroupDAOTest extends OlatTestCase { ...@@ -242,5 +245,166 @@ public class GroupDAOTest extends OlatTestCase {
List<GroupMembership> deletedMemberships = groupDao.getMemberships(group, "pilot"); List<GroupMembership> deletedMemberships = groupDao.getMemberships(group, "pilot");
Assert.assertTrue(deletedMemberships.isEmpty()); Assert.assertTrue(deletedMemberships.isEmpty());
} }
} @Test
public void addGrant() {
Group group = groupDao.createGroup();
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, "grant-role", "read-only", resource);
dbInstance.commitAndCloseSession();
}
@Test
public void getGrants_withResource() {
Group group = groupDao.createGroup();
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, "getGrants-res", "getGrants-res-perm", resource);
dbInstance.commitAndCloseSession();
List<Group> groups = Collections.singletonList(group);
List<Grant> grants = groupDao.getGrants(groups, resource);
Assert.assertNotNull(grants);
Assert.assertEquals(1, grants.size());
Grant grant = grants.get(0);
Assert.assertNotNull(grant);
Assert.assertEquals(group, grant.getGroup());
Assert.assertEquals(resource, grant.getResource());
Assert.assertEquals("getGrants-res", grant.getRole());
Assert.assertEquals("getGrants-res-perm", grant.getPermission());
}
@Test
public void getGrants_withResource_withRole() {
Group group = groupDao.createGroup();
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, "getGrants-role-1", "getGrants-role-1-perm", resource);
groupDao.addGrant(group, "getGrants-role-2", "getGrants-role-2-perm", resource);
dbInstance.commitAndCloseSession();
List<Grant> grants = groupDao.getGrants(group, "getGrants-role-2", resource);
Assert.assertNotNull(grants);
Assert.assertEquals(1, grants.size());
Grant grant = grants.get(0);
Assert.assertNotNull(grant);
Assert.assertEquals(group, grant.getGroup());
Assert.assertEquals(resource, grant.getResource());
Assert.assertEquals("getGrants-role-2", grant.getRole());
Assert.assertEquals("getGrants-role-2-perm", grant.getPermission());
}
@Test
public void hasGrant() {
Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("grant-1-");
Group group = groupDao.createGroup();
String role = "hasGrant-role";
groupDao.addMembership(group, id, role);
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, role, "hasGrant-perm", resource);
dbInstance.commitAndCloseSession();
boolean hasGrant = groupDao.hasGrant(id, "hasGrant-perm", resource);
Assert.assertTrue(hasGrant);
}
@Test
public void getPermissions() {
Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("grant-1-");
Group group = groupDao.createGroup();
String role = "getPermissions-role";
groupDao.addMembership(group, id, role);
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, role, "getPermissions-perm", resource);
dbInstance.commitAndCloseSession();
List<String> permissions = groupDao.getPermissions(id, resource);
Assert.assertNotNull(permissions);
Assert.assertEquals(1, permissions.size());
Assert.assertEquals("getPermissions-perm", permissions.get(0));
}
@Test
public void getPermissions_complex() {
Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("grant-1-");
Group group = groupDao.createGroup();
String role1 = "getPermissions-role-1";
groupDao.addMembership(group, id, role1);
String role2 = "getPermissions-role-2";
groupDao.addMembership(group, id, role2);
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, role1, "getPermissions-perm-1", resource);
groupDao.addGrant(group, role2, "getPermissions-perm-2", resource);
dbInstance.commitAndCloseSession();
List<String> permissions = groupDao.getPermissions(id, resource);
Assert.assertNotNull(permissions);
Assert.assertEquals(2, permissions.size());
Assert.assertTrue(permissions.contains("getPermissions-perm-1"));
Assert.assertTrue(permissions.contains("getPermissions-perm-2"));
}
@Test
public void addRemoveGrant() {
Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("addremove-1-");
Group group = groupDao.createGroup();
groupDao.addMembership(group, id, "addremove-1");
groupDao.addMembership(group, id, "addremove-2");
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, "addremove-1", "addremove-1-perm", resource);
groupDao.addGrant(group, "addremove-2", "addremove-2-perm", resource);
dbInstance.commitAndCloseSession();
//setup check
boolean hasPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource);
Assert.assertTrue(hasPerm1);
boolean hasPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource);
Assert.assertTrue(hasPerm2);
//remove perm 1
groupDao.removeGrant(group, "addremove-1", "addremove-1-perm", resource);
dbInstance.commitAndCloseSession();
//check
boolean hasStillPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource);
Assert.assertFalse(hasStillPerm1);
boolean hasStillPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource);
Assert.assertTrue(hasStillPerm2);
}
@Test
public void addRemoveGrants() {
Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("addremove-1-");
Group group = groupDao.createGroup();
groupDao.addMembership(group, id, "addremove-1");
groupDao.addMembership(group, id, "addremove-2");
OLATResource resource = JunitTestHelper.createRandomResource();
groupDao.addGrant(group, "addremove-1", "addremove-1-perm", resource);
groupDao.addGrant(group, "addremove-1", "addremove-11-perm", resource);
groupDao.addGrant(group, "addremove-2", "addremove-2-perm", resource);
groupDao.addGrant(group, "addremove-2", "addremove-22-perm", resource);
dbInstance.commitAndCloseSession();
//setup check
boolean hasPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource);
Assert.assertTrue(hasPerm1);
boolean hasPerm11 = groupDao.hasGrant(id, "addremove-11-perm", resource);
Assert.assertTrue(hasPerm11);
boolean hasPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource);
Assert.assertTrue(hasPerm2);
boolean hasPerm22 = groupDao.hasGrant(id, "addremove-22-perm", resource);
Assert.assertTrue(hasPerm22);
//remove perm 1
groupDao.removeGrants(group, "addremove-1", resource);
dbInstance.commitAndCloseSession();
//check
boolean hasStillPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource);
Assert.assertFalse(hasStillPerm1);
boolean hasStillPerm11 = groupDao.hasGrant(id, "addremove-11-perm", resource);
Assert.assertFalse(hasStillPerm11);
boolean hasStillPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource);
Assert.assertTrue(hasStillPerm2);
boolean hasStillPerm22 = groupDao.hasGrant(id, "addremove-22-perm", resource);
Assert.assertTrue(hasStillPerm22);
}
}
\ No newline at end of file
...@@ -26,22 +26,16 @@ ...@@ -26,22 +26,16 @@
package org.olat.note; package org.olat.note;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List; import java.util.List;
import java.util.UUID;
import org.junit.Before; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.persistence.DB;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.OLATResourceable; import org.olat.resource.OLATResource;
import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing;
import org.olat.resource.OLATResourceManager;
import org.olat.test.JunitTestHelper; import org.olat.test.JunitTestHelper;
import org.olat.test.OlatTestCase; import org.olat.test.OlatTestCase;
import org.springframework.beans.factory.annotation.Autowired;
/** /**
* Initial Date: Dec 9, 2004 * Initial Date: Dec 9, 2004
...@@ -51,73 +45,56 @@ import org.olat.test.OlatTestCase; ...@@ -51,73 +45,56 @@ import org.olat.test.OlatTestCase;
* Comment: * Comment:
* *
*/ */
public class NoteTest extends OlatTestCase implements OLATResourceable { public class NoteTest extends OlatTestCase {
private long RESOURCE_ID = 42;
private String RESOURCE_TYPE = "org.olat.note.NoteTest";
private static OLog log = Tracing.createLoggerFor(NoteTest.class);
private static boolean isInitialized = false;
private static Identity identity = null;
private static org.olat.resource.OLATResource res = null;
private static NoteManager nm;
/** @Autowired
* @see junit.framework.TestCase#setUp() private DB dbInstance;
*/ @Autowired
@Before private NoteManager noteManager;
public void setup() {
if (NoteTest.isInitialized == false) {
try {
nm = NoteManager.getInstance();
// identity with null User should be ok for test case
String name = UUID.randomUUID().toString().replace("-", "");
identity = JunitTestHelper.createAndPersistIdentityAsUser(name);
res = OLATResourceManager.getInstance().createOLATResourceInstance(this);
OLATResourceManager.getInstance().saveOLATResource(res);
NoteTest.isInitialized = true;
} catch (Exception e) {
log.error(
"Error while generating database tables or opening hibernate session: " +
e);
}
}
}
@Test @Test
public void testGenericLoadDeleteNote() { public void testGenericLoadDeleteNote() {
Long resourceTypeId = res.getResourceableId(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("note-1-");
String resourceTypeName = res.getResourceableTypeName(); OLATResource resource = JunitTestHelper.createRandomResource();
Note n = nm.loadNoteOrCreateInRAM(identity, resourceTypeName, resourceTypeId);
Note n = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId());
n.setNoteTitle("Notiz Titel"); n.setNoteTitle("Notiz Titel");
n.setNoteText("Notiz Text"); n.setNoteText("Notiz Text");
nm.saveNote(n); noteManager.saveNote(n);
DBFactory.getInstance().closeSession(); dbInstance.commitAndCloseSession();
Note note = nm.loadNoteOrCreateInRAM(identity, resourceTypeName, resourceTypeId); Note note = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId());
assertNotNull(note); Assert.assertNotNull(note);
nm.deleteNote(note); noteManager.deleteNote(note);
List<Note> notes = nm.listUserNotes(identity); List<Note> notes = noteManager.listUserNotes(identity);
assertTrue(notes.size()==0); Assert.assertTrue(notes.isEmpty());
} }
/** @Test
* @see org.olat.core.id.OLATResourceablegetResourceableTypeName() public void saveUpdateNote() {
*/ Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("note-2-");
public String getResourceableTypeName() { OLATResource resource = JunitTestHelper.createRandomResource();
return RESOURCE_TYPE; Note note = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId());
} note.setNoteTitle("Very important");
note.setNoteText("Critical update with new features");
/** noteManager.saveNote(note);
* @see org.olat.core.id.OLATResourceablegetResourceableId() dbInstance.commitAndCloseSession();
*/
public Long getResourceableId() { Note updateNote = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId());
return new Long(RESOURCE_ID); updateNote.setNoteTitle("Important");
updateNote.setNoteText("Cool update with new features");
noteManager.saveNote(updateNote);
dbInstance.commitAndCloseSession();
List<Note> notes = noteManager.listUserNotes(identity);
Assert.assertNotNull(notes);
Assert.assertEquals(1, notes.size());
Assert.assertEquals(updateNote, notes.get(0));
Note reloadedNote = notes.get(0);
Assert.assertEquals("Important", reloadedNote.getNoteTitle());
Assert.assertEquals("Cool update with new features", reloadedNote.getNoteText());
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment