Skip to content

Commit

Permalink
Merge pull request #41 from futures/unit-testing
Browse files Browse the repository at this point in the history
Unit testing
  • Loading branch information
barmintor committed Mar 22, 2013
2 parents 67316f1 + 08322b8 commit a602fb3
Show file tree
Hide file tree
Showing 22 changed files with 296 additions and 140 deletions.
Expand Up @@ -3,12 +3,12 @@

import static javax.ws.rs.core.MediaType.TEXT_XML;
import static javax.ws.rs.core.Response.ok;
import static org.fcrepo.services.ObjectService.getObjectNode;

import java.io.InputStream;
import java.util.List;

import javax.annotation.Resource;
import javax.inject.Inject;
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.RepositoryException;
Expand All @@ -20,19 +20,23 @@

import org.fcrepo.AbstractResource;
import org.fcrepo.generator.dublincore.DCGenerator;
import org.fcrepo.services.ObjectService;

@Path("/objects/{pid}/oai_dc")
public class DublinCoreGenerator extends AbstractResource {

@Resource
List<DCGenerator> dcgenerators;

@Inject
ObjectService objectService;

@GET
@Produces(TEXT_XML)
public Response getObjectAsDublinCore(@PathParam("pid")
final String pid) throws RepositoryException {

final Node obj = getObjectNode(pid);
final Node obj = objectService.getObjectNode(pid);

for (DCGenerator indexer : dcgenerators) {
InputStream inputStream = indexer.getStream(obj);
Expand Down
Expand Up @@ -3,12 +3,12 @@

import static javax.ws.rs.core.MediaType.TEXT_XML;
import static javax.ws.rs.core.Response.ok;
import static org.fcrepo.services.ObjectService.getObjectNode;

import java.io.ByteArrayOutputStream;
import java.util.List;

import javax.annotation.Resource;
import javax.inject.Inject;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.ws.rs.GET;
Expand All @@ -18,6 +18,7 @@
import javax.ws.rs.core.Response;

import org.fcrepo.generator.rdf.TripleGenerator;
import org.fcrepo.services.ObjectService;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
Expand All @@ -28,13 +29,16 @@ public class RdfGenerator {

@Resource
List<TripleGenerator> rdfgenerators;

@Inject
ObjectService objectService;

@GET
@Produces(TEXT_XML)
public Response getObjectAsRdfXml(@PathParam("pid")
final String pid) throws RepositoryException {

final Node obj = getObjectNode(pid);
final Node obj = objectService.getObjectNode(pid);


final Model model = getObjectAsRdf(obj);
Expand Down
5 changes: 5 additions & 0 deletions fcrepo-http-api/pom.xml
Expand Up @@ -131,6 +131,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
31 changes: 16 additions & 15 deletions fcrepo-http-api/src/main/java/org/fcrepo/api/FedoraDatastreams.java
Expand Up @@ -10,9 +10,6 @@
import static javax.ws.rs.core.Response.noContent;
import static org.fcrepo.api.FedoraObjects.getObjectSize;
import static org.fcrepo.jaxb.responses.management.DatastreamProfile.DatastreamStates.A;
import static org.fcrepo.services.DatastreamService.createDatastreamNode;
import static org.fcrepo.services.DatastreamService.purgeDatastream;
import static org.fcrepo.services.ObjectService.getObjectNode;
import static org.fcrepo.services.PathService.getDatastreamJcrNodePath;
import static org.fcrepo.services.PathService.getObjectJcrNodePath;
import static org.modeshape.jcr.api.JcrConstants.JCR_CONTENT;
Expand Down Expand Up @@ -64,6 +61,7 @@
import org.fcrepo.jaxb.responses.management.DatastreamProfile;
import org.fcrepo.services.DatastreamService;
import org.fcrepo.services.LowLevelStorageService;
import org.fcrepo.services.ObjectService;
import org.fcrepo.utils.FixityResult;
import org.modeshape.jcr.api.Binary;
import org.slf4j.Logger;
Expand All @@ -78,7 +76,10 @@ public class FedoraDatastreams extends AbstractResource {
.getLogger(FedoraDatastreams.class);

@Inject
private LowLevelStorageService llStorageService;
ObjectService objectService;

@Inject
DatastreamService datastreamService;

/**
* Returns a list of datastreams for the object
Expand All @@ -100,7 +101,7 @@ public ObjectDatastreams getDatastreams(@PathParam("pid")
final ObjectDatastreams objectDatastreams = new ObjectDatastreams();
final Builder<DatastreamElement> datastreams = builder();

NodeIterator i = getObjectNode(pid).getNodes();
NodeIterator i = datastreamService.getDatastreamsFor(pid);
while (i.hasNext()) {
final Node ds = i.nextNode();
datastreams.add(new DatastreamElement(ds.getName(), ds.getName(),
Expand All @@ -125,15 +126,15 @@ public Response modifyDatastreams(@PathParam("pid")

for (String dsid : dsidList) {
logger.debug("purging datastream " + dsid);
purgeDatastream(session, pid, dsid);
datastreamService.purgeDatastream(session, pid, dsid);
}

for (final Attachment a : attachmentList) {
final String dsid =
a.getContentDisposition().getParameter("name");
logger.debug("adding datastream " + dsid);
final String dsPath = getDatastreamJcrNodePath(pid, dsid);
createDatastreamNode(session, dsPath, a.getDataHandler()
datastreamService.createDatastreamNode(session, dsPath, a.getDataHandler()
.getContentType(), a.getDataHandler().getInputStream());

}
Expand Down Expand Up @@ -165,7 +166,7 @@ public Response deleteDatastreams(@PathParam("pid")
try {
for (String dsid : dsidList) {
logger.debug("purging datastream " + dsid);
purgeDatastream(session, pid, dsid);
datastreamService.purgeDatastream(session, pid, dsid);
}
session.save();
} finally {
Expand All @@ -185,7 +186,7 @@ public MultipartBody getDatastreamsContents(@PathParam("pid")
final Session session = repo.login();

if (dsids.isEmpty()) {
NodeIterator ni = getObjectNode(pid).getNodes();
NodeIterator ni = objectService.getObjectNode(pid).getNodes();
while (ni.hasNext()) {
dsids.add(ni.nextNode().getName());
}
Expand All @@ -199,7 +200,7 @@ public MultipartBody getDatastreamsContents(@PathParam("pid")

try {
final Datastream ds =
DatastreamService.getDatastream(pid, dsid);
datastreamService.getDatastream(pid, dsid);
atts.add(new Attachment(ds.getNode().getName(), ds
.getMimeType(), ds.getContent()));
} catch (PathNotFoundException e) {
Expand Down Expand Up @@ -327,7 +328,7 @@ private URI addDatastreamNode(final String pid, final String dsPath,
getObjectSize(session.getNode(getObjectJcrNodePath(pid)));
logger.debug("Attempting to add datastream node at path: " + dsPath);
try {
createDatastreamNode(session, dsPath, contentType.toString(),
datastreamService.createDatastreamNode(session, dsPath, contentType.toString(),
requestBodyStream, checksumType, checksum);
boolean created = session.nodeExists(dsPath);
session.save();
Expand Down Expand Up @@ -373,7 +374,7 @@ public DatastreamProfile getDatastream(@PathParam("pid")
final String pid, @PathParam("dsid")
final String dsId) throws RepositoryException, IOException {
logger.trace("Executing getDatastream() with dsId: " + dsId);
Datastream ds = DatastreamService.getDatastream(pid, dsId);
Datastream ds = datastreamService.getDatastream(pid, dsId);
logger.debug("Retrieved dsNode: " + ds.getNode().getName());
return getDSProfile(ds);

Expand All @@ -395,7 +396,7 @@ public Response getDatastreamContent(@PathParam("pid")
final String pid, @PathParam("dsid")
final String dsid, @Context Request request) throws RepositoryException {

final Datastream ds = DatastreamService.getDatastream(pid, dsid);
final Datastream ds = datastreamService.getDatastream(pid, dsid);

EntityTag etag = new EntityTag(ds.getContentDigest().toString());
Date date = ds.getLastModifiedDate();
Expand Down Expand Up @@ -435,7 +436,7 @@ DatastreamHistory getDatastreamHistory(@PathParam("pid")
final String pid, @PathParam("dsid")
final String dsId) throws RepositoryException, IOException {

final Datastream ds = DatastreamService.getDatastream(pid, dsId);
final Datastream ds = datastreamService.getDatastream(pid, dsId);
final DatastreamHistory dsHistory =
new DatastreamHistory(singletonList(getDSProfile(ds)));
dsHistory.dsID = dsId;
Expand Down Expand Up @@ -475,7 +476,7 @@ public DatastreamFixity getDatastreamFixity(@PathParam("pid")
final String pid, @PathParam("dsid")
final String dsid) throws RepositoryException {

final Datastream ds = DatastreamService.getDatastream(pid, dsid);
final Datastream ds = datastreamService.getDatastream(pid, dsid);

DatastreamFixity dsf = new DatastreamFixity();
dsf.objectId = pid;
Expand Down
14 changes: 8 additions & 6 deletions fcrepo-http-api/src/main/java/org/fcrepo/api/FedoraObjects.java
Expand Up @@ -9,9 +9,6 @@
import static javax.ws.rs.core.Response.ok;
import static org.fcrepo.api.FedoraDatastreams.getContentSize;
import static org.fcrepo.jaxb.responses.access.ObjectProfile.ObjectStates.A;
import static org.fcrepo.services.ObjectService.createObjectNode;
import static org.fcrepo.services.ObjectService.getObjectNames;
import static org.fcrepo.services.ObjectService.getObjectNode;
import static org.fcrepo.services.PathService.getObjectJcrNodePath;
import static org.fcrepo.utils.FedoraJcrTypes.DC_TITLE;
import static org.fcrepo.utils.FedoraTypesUtils.map;
Expand All @@ -20,6 +17,7 @@

import java.io.IOException;

import javax.inject.Inject;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
Expand All @@ -38,6 +36,7 @@
import org.fcrepo.AbstractResource;
import org.fcrepo.FedoraObject;
import org.fcrepo.jaxb.responses.access.ObjectProfile;
import org.fcrepo.services.ObjectService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -46,6 +45,9 @@ public class FedoraObjects extends AbstractResource {

private static final Logger logger = LoggerFactory
.getLogger(FedoraObjects.class);

@Inject
private ObjectService objectService;

/**
*
Expand All @@ -57,7 +59,7 @@ public class FedoraObjects extends AbstractResource {
@GET
public Response getObjects() throws RepositoryException {

return ok(getObjectNames().toString()).build();
return ok(objectService.getObjectNames().toString()).build();

}

Expand Down Expand Up @@ -115,7 +117,7 @@ public Response ingest(@PathParam("pid")

final Session session = repo.login();
try {
final Node obj = createObjectNode(session, pid);
final Node obj = objectService.createObjectNode(session, pid);
session.save();
/*
* we save before updating the repo size because the act of
Expand Down Expand Up @@ -147,7 +149,7 @@ public Response ingest(@PathParam("pid")
public ObjectProfile getObject(@PathParam("pid")
final String pid) throws RepositoryException, IOException {

final Node obj = getObjectNode(pid);
final Node obj = objectService.getObjectNode(pid);
final ObjectProfile objectProfile = new ObjectProfile();

objectProfile.pid = pid;
Expand Down
@@ -0,0 +1,47 @@
package org.fcrepo.api;

import static org.fcrepo.TestHelpers.mockDatastreamNode;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;

import java.io.IOException;

import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;

import org.fcrepo.jaxb.responses.access.ObjectDatastreams;
import org.fcrepo.services.DatastreamService;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class FedoraDatastreamsTest {

FedoraDatastreams testObj;

DatastreamService mockDatastreams;

@Before
public void setUp() {
mockDatastreams = mock(DatastreamService.class);
testObj = new FedoraDatastreams();
testObj.datastreamService = mockDatastreams;
}

@After
public void tearDown() {

}

@Test
public void testGetDatastreams() throws RepositoryException, IOException {
String pid = "FedoraDatastreamsTest1";
String dsid = "testDS";
NodeIterator mockIter = mockDatastreamNode(dsid, "asdf");
when(mockDatastreams.getDatastreamsFor(pid)).thenReturn(mockIter);
ObjectDatastreams actual = testObj.getDatastreams(pid);
verify(mockDatastreams).getDatastreamsFor(pid);
assertEquals(1, actual.datastreams.size());
assertEquals(dsid, actual.datastreams.iterator().next().dsid);
}
}
Expand Up @@ -84,8 +84,9 @@ public void testGetDatastream() throws Exception {
"objects/FedoraDatastreamsTest4/datastreams/ds1")));
assertEquals(201, getStatus(postDSMethod("FedoraDatastreamsTest4",
"ds1", "foo")));
assertEquals(200, getStatus(new HttpGet(serverAddress +
"objects/FedoraDatastreamsTest4/datastreams/ds1")));
HttpResponse response = execute(new HttpGet(serverAddress +
"objects/FedoraDatastreamsTest4/datastreams/ds1"));
assertEquals(EntityUtils.toString(response.getEntity()), 200, response.getStatusLine().getStatusCode());
}

@Test
Expand Down
5 changes: 5 additions & 0 deletions fcrepo-kernel/pom.xml
Expand Up @@ -68,6 +68,11 @@
<version>3.0.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down

0 comments on commit a602fb3

Please sign in to comment.