package edu.stanford.sulair.dlss.dor.resource; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; import org.custommonkey.xmlunit.XMLAssert; import org.custommonkey.xmlunit.XMLUnit; import org.junit.Assert; import org.junit.Test; import edu.stanford.sulair.dlss.dor.AbstractResourceTest; import org.xml.sax.SAXException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.io.IOException; /** * User: wmene * Date: Apr 27, 2010 * Time: 2:43:38 PM */ public class WorkflowResourceTests extends AbstractResourceTest { public WorkflowResourceTests() { super(); this._springConfig = "edu/stanford/sulair/dlss/dor/resource/WorkflowResourceTests-context.xml"; XMLUnit.setIgnoreWhitespace(true); XMLUnit.setIgnoreComments(true); XMLUnit.setIgnoreAttributeOrder(false); } @Test public void testPutWorkflow() { final WebResource objResource = resource( "dor/objects/pid:123/workflows/GoogleScannedWF"); ClientResponse r = objResource.entity("<workflow id=\"GoogleScannedWF\" objectId=\"pid:123\"><process name=\"convert\" status=\"waiting\" datetime=\"2008.11.15 13:30:00 PST\"/></workflow>", "application/xml").put(ClientResponse.class); Assert.assertEquals(204, r.getStatus()); } @Test public void testPutWorkflowProcessStep() { final WebResource objResource = resource( "dor/objects/pid:123/workflows/GoogleScannedWF/convert"); ClientResponse r = objResource.entity("<process name=\"convert\" status=\"waiting\" datetime=\"2008.11.15 13:30:00 PST\"/>", "application/xml").put(ClientResponse.class); Assert.assertEquals(204, r.getStatus()); } @Test public void testGetWorkflowProcessStep() throws Exception { final WebResource objResource = resource( "dor/objects/pid:123/workflows/googleScannedWF/convert"); ClientResponse response = objResource.get(ClientResponse.class); Assert.assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); Assert.assertEquals(MediaType.APPLICATION_XML_TYPE, response.getType()); String xml = response.getEntity(String.class); System.out.println(xml); XMLAssert.assertXpathEvaluatesTo("convert", "//process/@name", xml); XMLAssert.assertXpathEvaluatesTo("waiting", "//process/@status", xml); } @Test public void testGetWorkflowProcessStepNotFound() { final WebResource objResource = resource( "dor/objects/pid:123/workflows/GoogleScannedWF/ingest"); ClientResponse response = objResource.get(ClientResponse.class); Assert.assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus()); Assert.assertEquals(MediaType.TEXT_PLAIN_TYPE, response.getType()); String body = response.getEntity(String.class); Assert.assertEquals("Workflow step not found", body); } @Test public void testGetLifecycle() throws SAXException, IOException { final WebResource objResource = resource("dor/objects/dr:123/lifecycle"); ClientResponse response = objResource.get(ClientResponse.class); Assert.assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); Assert.assertEquals(MediaType.APPLICATION_XML_TYPE, response.getType()); String xml = response.getEntity(String.class); String expected = "<lifecycle objectId=\"dr:123\">" + " <milestone date=\"2010-11-15T13:30:00-0800\">registered</milestone>" + " <milestone date=\"2010-11-16T13:30:00-0800\">inprocess</milestone>" + " <milestone date=\"2010-11-17T13:30:00-0800\">released</milestone>" + "</lifecycle>"; XMLAssert.assertXMLEqual(expected, xml); } @Test public void testNoLifecycleFound() throws SAXException, IOException { final WebResource objResource = resource( "dor/objects/dr:nolifecycle123/lifecycle"); ClientResponse response = objResource.get(ClientResponse.class); Assert.assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus()); Assert.assertEquals(MediaType.TEXT_PLAIN_TYPE, response.getType()); String body = response.getEntity(String.class); Assert.assertEquals("No lifecycle found", body); } }