/**
* $Id: EntityBrokerManagerTest.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $
* $URL: https://source.sakaiproject.org/svn/entitybroker/trunk/impl/src/test/org/sakaiproject/entitybroker/impl/EntityBrokerManagerTest.java $
* EntityHandlerImplTest.java - entity-broker - Apr 6, 2008 12:08:39 PM - azeckoski
**************************************************************************
* Copyright (c) 2008, 2009 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sakaiproject.entitybroker.impl;
import java.util.HashMap;
import java.util.List;
import junit.framework.TestCase;
import org.sakaiproject.entitybroker.EntityReference;
import org.sakaiproject.entitybroker.EntityView;
import org.sakaiproject.entitybroker.entityprovider.extension.EntityData;
import org.sakaiproject.entitybroker.entityprovider.extension.Formats;
import org.sakaiproject.entitybroker.entityprovider.search.Search;
import org.sakaiproject.entitybroker.mocks.data.MyEntity;
import org.sakaiproject.entitybroker.mocks.data.TestData;
/**
* Testing the central logic of the entity handler
*
* @author Aaron Zeckoski (aaron@caret.cam.ac.uk)
*/
public class EntityBrokerManagerTest extends TestCase {
protected EntityBrokerManagerImpl entityBrokerManager;
private TestData td;
@Override
protected void setUp() throws Exception {
super.setUp();
// setup things
td = new TestData();
entityBrokerManager = new ServiceTestManager(td).entityBrokerManager;
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.rest.EntityHandlerImpl#entityExists(java.lang.String)}.
*/
public void testEntityExists() {
EntityReference ref = null;
boolean exists = false;
ref = new EntityReference(TestData.REF1);
exists = entityBrokerManager.entityExists(ref);
assertTrue(exists);
ref = new EntityReference(TestData.REF1_1);
exists = entityBrokerManager.entityExists(ref);
assertTrue(exists);
ref = new EntityReference(TestData.REF2);
exists = entityBrokerManager.entityExists(ref);
assertTrue(exists);
// test that invalid id with valid prefix does not pass
ref = new EntityReference(TestData.REF1_INVALID);
exists = entityBrokerManager.entityExists(ref);
assertFalse(exists);
// test that unregistered ref does not pass
ref = new EntityReference(TestData.REF9);
exists = entityBrokerManager.entityExists(ref);
assertFalse(exists);
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.rest.EntityHandlerImpl#getEntityURL(java.lang.String)}.
*/
public void testGetEntityURL() {
String url = null;
url = entityBrokerManager.getEntityURL(TestData.REF1, null, null);
assertEquals(TestData.URL1, url);
url = entityBrokerManager.getEntityURL(TestData.REF2, null, null);
assertEquals(TestData.URL2, url);
url = entityBrokerManager.getEntityURL(TestData.REF1_INVALID, null, null);
try {
url = entityBrokerManager.getEntityURL(TestData.INVALID_REF, null, null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.rest.EntityHandlerImpl#parseReference(java.lang.String)}.
*/
public void testParseReference() {
EntityReference er = null;
er = entityBrokerManager.parseReference(TestData.REF1);
assertNotNull(er);
assertEquals(TestData.PREFIX1, er.getPrefix());
assertEquals(TestData.IDS1[0], er.getId());
er = entityBrokerManager.parseReference(TestData.REF2);
assertNotNull(er);
assertEquals(TestData.PREFIX2, er.getPrefix());
// test parsing a defined reference
er = entityBrokerManager.parseReference(TestData.REF3A);
assertNotNull(er);
assertEquals(TestData.PREFIX3, er.getPrefix());
// parsing of unregistered entity references returns null
er = entityBrokerManager.parseReference(TestData.REF9);
assertNull(er);
// parsing with nonexistent prefix returns null
er = entityBrokerManager.parseReference("/totallyfake/notreal");
assertNull(er);
// TODO test handling custom ref objects
try {
er = entityBrokerManager.parseReference(TestData.INVALID_REF);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for {@link EntityHandlerImpl#parseEntityURL(String)}
*/
public void testParseEntityURL() {
EntityView view = null;
view = entityBrokerManager.parseEntityURL(TestData.INPUT_URL1);
assertNotNull(view);
assertEquals(EntityView.VIEW_SHOW, view.getViewKey());
assertEquals(TestData.PREFIX1, view.getEntityReference().getPrefix());
assertEquals(TestData.IDS1[0], view.getEntityReference().getId());
// also test some other URLs
try {
view = entityBrokerManager.parseEntityURL("/"+TestData.PREFIX1+"/az.xml?fname=Aaron&lname=Zeckoski");
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
// parsing of URL related to unregistered entity references returns null
view = entityBrokerManager.parseEntityURL(TestData.REF9);
assertNull(view);
// TODO test custom parse rules
try {
view = entityBrokerManager.parseEntityURL(TestData.INVALID_URL);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
public void testGetEntityObject() {
Object entity = null;
EntityReference ref = null;
// first for resolveable
ref = entityBrokerManager.parseReference(TestData.REF4);
assertNotNull(ref);
entity = entityBrokerManager.fetchEntityObject(ref);
assertNotNull(entity);
assertEquals(MyEntity.class, entity.getClass());
assertEquals(TestData.entity4, entity);
ref = entityBrokerManager.parseReference(TestData.REF4_two);
assertNotNull(ref);
entity = entityBrokerManager.fetchEntityObject(ref);
assertNotNull(entity);
assertEquals(MyEntity.class, entity.getClass());
assertEquals(TestData.entity4_two, entity);
// now for non-resolveable
ref = entityBrokerManager.parseReference(TestData.REF5);
assertNotNull(ref);
entity = entityBrokerManager.fetchEntityObject(ref);
assertNull(entity);
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#makeFullURL(java.lang.String)}.
*/
public void testMakeFullURL() {
String full = entityBrokerManager.makeFullURL(TestData.REF1);
assertNotNull(full);
assertEquals("http://localhost:8080" + EntityView.DIRECT_PREFIX + TestData.REF1, full);
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#makeEntityView(org.sakaiproject.entitybroker.EntityReference, java.lang.String, java.lang.String)}.
*/
public void testMakeEntityView() {
EntityView ev = entityBrokerManager.makeEntityView(new EntityReference("azprefix", "azid"), EntityView.VIEW_SHOW, Formats.XML);
assertNotNull(ev);
assertEquals("azprefix", ev.getEntityReference().getPrefix());
assertEquals("azid", ev.getEntityReference().getId());
assertEquals(EntityView.VIEW_SHOW, ev.getViewKey());
assertEquals(Formats.XML, ev.getExtension());
ev = entityBrokerManager.makeEntityView(new EntityReference("azprefix", "azid"), null, null);
assertNotNull(ev);
assertEquals("azprefix", ev.getEntityReference().getPrefix());
assertEquals("azid", ev.getEntityReference().getId());
assertEquals(EntityView.VIEW_SHOW, ev.getViewKey());
assertEquals(null, ev.getExtension());
try {
ev = entityBrokerManager.makeEntityView(null, null, null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#fetchEntity(org.sakaiproject.entitybroker.EntityReference)}.
*/
public void testFetchEntity() {
EntityReference ref = new EntityReference(TestData.REF4);
Object entity = entityBrokerManager.fetchEntity(ref);
assertNotNull(entity);
assertEquals(TestData.entity4, entity);
ref = new EntityReference(TestData.REF1);
entity = entityBrokerManager.fetchEntity(ref);
assertNull(entity);
try {
entity = entityBrokerManager.fetchEntity(null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#getEntityData(org.sakaiproject.entitybroker.EntityReference)}.
*/
public void testGetEntityData() {
EntityReference ref = new EntityReference(TestData.REF4);
EntityData entity = entityBrokerManager.getEntityData(ref);
assertNotNull(entity);
assertEquals(TestData.REF4, entity.getEntityReference());
assertEquals(TestData.entity4, entity.getData());
assertNotNull(entity.getDisplayTitle());
assertNotNull(entity.getEntityURL());
ref = new EntityReference(TestData.REF1);
entity = entityBrokerManager.getEntityData(ref);
assertNotNull(entity);
assertEquals(TestData.REF1, entity.getEntityReference());
assertNull(entity.getData());
assertNotNull(entity.getDisplayTitle());
assertNotNull(entity.getEntityURL());
try {
entity = entityBrokerManager.getEntityData(null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#fetchEntities(org.sakaiproject.entitybroker.EntityReference, org.sakaiproject.entitybroker.entityprovider.search.Search, java.util.Map)}.
*/
public void testFetchEntities() {
EntityReference ref = new EntityReference(TestData.SPACE4);
List<?> l = entityBrokerManager.fetchEntities(ref, null, null);
assertNotNull(l);
assertEquals(3, l.size());
assertEquals(MyEntity.class, l.get(0).getClass());
ref = new EntityReference(TestData.SPACE4);
l = entityBrokerManager.fetchEntities(ref, new Search(), new HashMap<String, Object>());
assertNotNull(l);
assertEquals(3, l.size());
assertEquals(MyEntity.class, l.get(0).getClass());
assertEquals(TestData.entity4, l.get(0));
ref = new EntityReference(TestData.REF4);
l = entityBrokerManager.fetchEntities(ref, null, null);
assertNotNull(l);
assertEquals(1, l.size());
assertEquals(MyEntity.class, l.get(0).getClass());
assertEquals(TestData.entity4, l.get(0));
ref = new EntityReference("/" + TestData.PREFIX1);
l = entityBrokerManager.fetchEntities(ref, null, null);
assertNotNull(l);
assertEquals(0, l.size());
try {
entityBrokerManager.fetchEntities(null, null, null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#getEntitiesData(org.sakaiproject.entitybroker.EntityReference, org.sakaiproject.entitybroker.entityprovider.search.Search, java.util.Map)}.
*/
public void testGetEntitiesData() {
EntityReference ref = new EntityReference(TestData.SPACE4);
List<EntityData> data = entityBrokerManager.getEntitiesData(ref, new Search(), new HashMap<String, Object>());
assertNotNull(data);
assertEquals(3, data.size());
assertEquals(EntityData.class, data.get(0).getClass());
assertEquals(TestData.entity4, data.get(0).getData());
ref = new EntityReference(TestData.SPACE4);
data = entityBrokerManager.getEntitiesData(ref, null, null);
assertNotNull(data);
assertEquals(3, data.size());
assertEquals(EntityData.class, data.get(0).getClass());
assertEquals(TestData.entity4, data.get(0).getData());
ref = new EntityReference("/" + TestData.PREFIX1);
data = entityBrokerManager.getEntitiesData(ref, null, null);
assertNotNull(data);
assertEquals(0, data.size());
try {
entityBrokerManager.getEntitiesData(null, null, null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#browseEntities(java.lang.String, org.sakaiproject.entitybroker.entityprovider.search.Search, java.lang.String, java.lang.String, EntityReference, java.util.Map)}.
*/
public void testBrowseEntities() {
List<EntityData> data = entityBrokerManager.browseEntities(TestData.PREFIX4, null, null, null, null, null);
assertNotNull(data);
assertEquals(0, data.size());
data = entityBrokerManager.browseEntities(TestData.PREFIXB1, null, null, null, null, null);
assertNotNull(data);
assertEquals(3, data.size());
assertEquals(EntityData.class, data.get(0).getClass());
data = entityBrokerManager.browseEntities(TestData.PREFIXB2, null, null, null, null, null);
assertNotNull(data);
assertEquals(3, data.size());
assertEquals(EntityData.class, data.get(0).getClass());
data = entityBrokerManager.browseEntities(TestData.PREFIXB2, null, "/user/aaronz", null, null, null);
assertNotNull(data);
assertEquals(1, data.size());
assertEquals(EntityData.class, data.get(0).getClass());
data = entityBrokerManager.browseEntities(TestData.PREFIXB2, null, "/user/aaronz", "/site/siteAZ", null, null);
assertNotNull(data);
assertEquals(2, data.size());
assertEquals(EntityData.class, data.get(0).getClass());
try {
data = entityBrokerManager.browseEntities(null, null, null, null, null, null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#convertToEntityData(java.util.List, org.sakaiproject.entitybroker.EntityReference)}.
*/
public void testConvertToEntityDataListOfQEntityReference() {
// TODO fail("Not yet implemented");
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#convertToEntityData(java.lang.Object, org.sakaiproject.entitybroker.EntityReference)}.
*/
public void testConvertToEntityDataObjectEntityReference() {
// TODO fail("Not yet implemented");
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#populateEntityData(java.util.List)}.
*/
public void testPopulateEntityDataListOfEntityData() {
// TODO fail("Not yet implemented");
}
/**
* Test method for
* {@link org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl#populateEntityData(org.sakaiproject.entitybroker.entityprovider.extension.EntityData[])}.
*/
public void testPopulateEntityDataEntityDataArray() {
// TODO fail("Not yet implemented");
}
}