|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
[HippoCMS-svn] [20624] ecm/site-toolkit: HSTTWO-882: Improving unit test cases for jax-rs servicesRevision: 20624
Author: wko Date: 2009-11-10 19:56:19 +0100 (Tue, 10 Nov 2009) Log Message: ----------- HSTTWO-882: Improving unit test cases for jax-rs services Modified Paths: -------------- ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/ContentService.java ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/PropertyContent.java ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/test/java/org/hippoecm/hst/services/support/jaxrs/content/TestContentService.java Modified: ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/ContentService.java =================================================================== --- ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/ContentService.java 2009-11-10 16:31:43 UTC (rev 20623) +++ ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/ContentService.java 2009-11-10 18:56:19 UTC (rev 20624) @@ -21,7 +21,6 @@ import javax.jcr.Item; import javax.jcr.Node; -import javax.jcr.PathNotFoundException; import javax.jcr.Property; import javax.jcr.PropertyType; import javax.servlet.http.HttpServletRequest; @@ -145,14 +144,6 @@ cpm.save(); return Response.ok(beanContent).build(); } - } catch (PathNotFoundException e) { - if (log.isDebugEnabled()) { - log.warn("The path is not found: " + itemPath, e); - } else { - log.warn("The path is not found: {}. {}", itemPath, e.toString()); - } - - throw new WebApplicationException(e); } catch (Exception e) { if (log.isDebugEnabled()) { log.warn("Failed to retrieve content bean.", e); @@ -213,7 +204,7 @@ } @POST - @Path("/{path:.*}") + @Path("/node/{path:.*}") public Response createContentNode(@PathParam("path") List<PathSegment> pathSegments, NodeContent nodeContent) { String itemPath = getContentItemPath(servletRequest, pathSegments); Modified: ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/PropertyContent.java =================================================================== --- ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/PropertyContent.java 2009-11-10 16:31:43 UTC (rev 20623) +++ ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/main/java/org/hippoecm/hst/services/support/jaxrs/content/PropertyContent.java 2009-11-10 18:56:19 UTC (rev 20624) @@ -22,6 +22,8 @@ import javax.jcr.RepositoryException; import javax.jcr.Value; import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlRootElement; import org.slf4j.Logger; @@ -76,6 +78,7 @@ this.multiple = multiple; } + @XmlElements(@XmlElement(name="value")) public Object [] getValues() { return values; } Modified: ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/test/java/org/hippoecm/hst/services/support/jaxrs/content/TestContentService.java =================================================================== --- ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/test/java/org/hippoecm/hst/services/support/jaxrs/content/TestContentService.java 2009-11-10 16:31:43 UTC (rev 20623) +++ ecm/site-toolkit/trunk/testsuite/sandbox/jaxrs/src/test/java/org/hippoecm/hst/services/support/jaxrs/content/TestContentService.java 2009-11-10 18:56:19 UTC (rev 20624) @@ -16,15 +16,27 @@ package org.hippoecm.hst.services.support.jaxrs.content; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.IOException; +import java.io.ByteArrayInputStream; +import java.lang.reflect.Method; -import javax.servlet.ServletException; +import javax.jcr.Session; import javax.servlet.http.HttpServlet; +import javax.ws.rs.core.Response; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathFactory; +import org.apache.commons.proxy.Invoker; import org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet; +import org.hippoecm.hst.core.container.ContainerConstants; +import org.hippoecm.hst.core.request.HstRequestContext; +import org.hippoecm.hst.proxy.ProxyFactory; +import org.hippoecm.hst.test.AbstractHstTestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -32,15 +44,23 @@ import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletConfig; import org.springframework.mock.web.MockServletContext; +import org.w3c.dom.Document; +import org.w3c.dom.Element; -public class TestContentService { - +public class TestContentService extends AbstractHstTestCase { + + private static final String PREVIEW_SITE_CONTENT_PATH = "/testpreview/testproject/hst:content"; + private MockServletContext servletContext; private MockServletConfig servletConfig; private HttpServlet jaxrsServlet; + private Session session; + private HstRequestContext hstRequestContext; @Before - public void setUp() throws ServletException { + public void setUp() throws Exception { + super.setUp(); + jaxrsServlet = new CXFNonSpringJaxrsServlet(); servletContext = new MockServletContext(); @@ -51,18 +71,42 @@ servletConfig.addInitParameter("jaxrs.serviceClasses", "org.hippoecm.hst.services.support.jaxrs.demo.CustomerService org.hippoecm.hst.services.support.jaxrs.content.ContentService"); jaxrsServlet.init(servletConfig); + + session = getSession(); + + assertNotNull(session); + + ProxyFactory factory = new ProxyFactory(); + Invoker invoker = new Invoker() { + public Object invoke(Object proxy, Method method, Object [] args) throws Throwable { + if ("getSession".equals(method.getName())) { + return session; + } + throw new UnsupportedOperationException("Unsupported: " + method); + } + }; + + hstRequestContext = (HstRequestContext) factory.createInvokerProxy(Thread.currentThread().getContextClassLoader(), invoker, new Class [] { HstRequestContext.class }); } @After - public void tearDown() { + public void tearDown() throws Exception { + super.tearDown(); + + if (session != null) { + try { + session.logout(); + } catch (Exception ignore) { + } + } + jaxrsServlet.destroy(); } @Test - public void testDemo() throws ServletException, IOException { + public void testDemo() throws Exception { // retrieves customer json data... MockHttpServletRequest request = new MockHttpServletRequest(servletContext); - MockHttpServletResponse response = new MockHttpServletResponse(); request.setProtocol("http"); request.setServerName("localhost"); request.setServerPort(8085); @@ -71,16 +115,17 @@ request.setContextPath("/testapp"); request.setServletPath("/preview/services"); request.setPathInfo("/customerservice/customers/123/"); + + MockHttpServletResponse response = new MockHttpServletResponse(); jaxrsServlet.service(request, response); - assertEquals(200, response.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); assertNotNull(response.getContentAsString()); assertEquals("{\"Customer\":{\"id\":123,\"name\":\"John\"}}", response.getContentAsString()); // updating the existing customer... request = new MockHttpServletRequest(servletContext); - response = new MockHttpServletResponse(); request.setProtocol("http"); request.setServerName("localhost"); request.setServerPort(8085); @@ -96,11 +141,10 @@ jaxrsServlet.service(request, response); - assertEquals(200, response.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); // adding a new customer... request = new MockHttpServletRequest(servletContext); - response = new MockHttpServletResponse(); request.setProtocol("http"); request.setServerName("localhost"); request.setServerPort(8085); @@ -116,14 +160,13 @@ jaxrsServlet.service(request, response); - assertEquals(200, response.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); assertNotNull(response.getContentAsString()); assertTrue(response.getContentAsString().startsWith("{\"Customer\":")); assertTrue(response.getContentAsString().contains("\"name\":\"Jisung Park\"")); // deleting a new customer... request = new MockHttpServletRequest(servletContext); - response = new MockHttpServletResponse(); request.setProtocol("http"); request.setServerName("localhost"); request.setServerPort(8085); @@ -133,40 +176,172 @@ request.setServletPath("/preview/services"); request.setPathInfo("/customerservice/customers/123/"); - response = new MockHttpServletResponse(); + response = new MockHttpServletResponse (); jaxrsServlet.service(request, response); - assertEquals(200, response.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); } @Test - public void testGetContentNodeByUUID() throws ServletException, IOException { - // TODO: + public void testGetContentNodeByUUID() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest(servletContext); + request.setAttribute(ContainerConstants.HST_REQUEST_CONTEXT, hstRequestContext); + request.setAttribute(BaseHstContentService.SITE_CONTENT_PATH, PREVIEW_SITE_CONTENT_PATH); + request.setProtocol("http"); + request.setServerName("localhost"); + request.setServerPort(8085); + request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + request.setMethod("GET"); + request.setRequestURI("/testapp/preview/services/contentservice/uuid/abababab-5fa8-48a8-b03b-4524373d992a/"); + request.setContextPath("/testapp"); + request.setServletPath("/preview/services"); + request.setPathInfo("/contentservice/uuid/abababab-5fa8-48a8-b03b-4524373d992a/"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + jaxrsServlet.service(request, response); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(response.getContentAsByteArray())); + Element root = document.getDocumentElement(); + assertEquals("folder", root.getNodeName()); + assertEquals("abababab-5fa8-48a8-b03b-4524373d992a", root.getAttribute("uuid")); } @Test - public void testGetContentItem() throws ServletException, IOException { - // TODO: + public void testGetContentItem() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest(servletContext); + request.setAttribute(ContainerConstants.HST_REQUEST_CONTEXT, hstRequestContext); + request.setAttribute(BaseHstContentService.SITE_CONTENT_PATH, PREVIEW_SITE_CONTENT_PATH); + request.setProtocol("http"); + request.setServerName("localhost"); + request.setServerPort(8085); + request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + request.setMethod("GET"); + request.setRequestURI("/testapp/preview/services/contentservice/Products/HippoCMS"); + request.setContextPath("/testapp"); + request.setServletPath("/preview/services"); + request.setPathInfo("/contentservice/Products/HippoCMS"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + jaxrsServlet.service(request, response); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(response.getContentAsByteArray())); + Element root = document.getDocumentElement(); + assertEquals("document", root.getNodeName()); + + XPath xpath = XPathFactory.newInstance().newXPath(); + XPathExpression expr = xpath.compile("string(/document/node[@name='testproject:body']/@uri)"); + assertEquals("http://localhost:8085/testapp/preview/services/contentservice/Products/HippoCMS/HippoCMS/testproject:body", + expr.evaluate(document)); + expr = xpath.compile("string(/document/property[@name='testproject:title']/@uri)"); + assertEquals("http://localhost:8085/testapp/preview/services/contentservice/Products/HippoCMS/HippoCMS/testproject:title", + expr.evaluate(document)); + + request = new MockHttpServletRequest(servletContext); + request.setAttribute(ContainerConstants.HST_REQUEST_CONTEXT, hstRequestContext); + request.setAttribute(BaseHstContentService.SITE_CONTENT_PATH, PREVIEW_SITE_CONTENT_PATH); + request.setProtocol("http"); + request.setServerName("localhost"); + request.setServerPort(8085); + request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + request.setMethod("GET"); + request.setRequestURI("/testapp/preview/services/contentservice/Products/HippoCMS/HippoCMS/testproject:title"); + request.setContextPath("/testapp"); + request.setServletPath("/preview/services"); + request.setPathInfo("/contentservice/Products/HippoCMS/HippoCMS/testproject:title"); + + response = new MockHttpServletResponse(); + + jaxrsServlet.service(request, response); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(response.getContentAsByteArray())); + root = document.getDocumentElement(); + assertEquals("property", root.getNodeName()); + expr = xpath.compile("string(/property/value)"); + assertEquals("Hippo CMS", expr.evaluate(document)); + + request = new MockHttpServletRequest(servletContext); + request.setAttribute(ContainerConstants.HST_REQUEST_CONTEXT, hstRequestContext); + request.setAttribute(BaseHstContentService.SITE_CONTENT_PATH, PREVIEW_SITE_CONTENT_PATH); + request.setProtocol("http"); + request.setServerName("localhost"); + request.setServerPort(8085); + request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + request.setMethod("GET"); + request.setRequestURI("/testapp/preview/services/contentservice/Products/HippoCMS/HippoCMS/testproject:body"); + request.setContextPath("/testapp"); + request.setServletPath("/preview/services"); + request.setPathInfo("/contentservice/Products/HippoCMS/HippoCMS/testproject:body"); + + response = new MockHttpServletResponse(); + + jaxrsServlet.service(request, response); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(response.getContentAsByteArray())); + root = document.getDocumentElement(); + assertEquals("content", root.getNodeName()); } @Test - public void testDeleteContentNode() throws ServletException, IOException { - // TODO: + public void testDeleteContentNode() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest(servletContext); + request.setAttribute(ContainerConstants.HST_REQUEST_CONTEXT, hstRequestContext); + request.setAttribute(BaseHstContentService.SITE_CONTENT_PATH, PREVIEW_SITE_CONTENT_PATH); + request.setProtocol("http"); + request.setServerName("localhost"); + request.setServerPort(8085); + request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + request.setMethod("DELETE"); + request.setRequestURI("/testapp/preview/services/contentservice/Solutions/SolutionsPage"); + request.setContextPath("/testapp"); + request.setServletPath("/preview/services"); + request.setPathInfo("/contentservice/Solutions/SolutionsPage"); + + MockHttpServletResponse response = new MockHttpServletResponse(); + + jaxrsServlet.service(request, response); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + request = new MockHttpServletRequest(servletContext); + request.setAttribute(ContainerConstants.HST_REQUEST_CONTEXT, hstRequestContext); + request.setAttribute(BaseHstContentService.SITE_CONTENT_PATH, PREVIEW_SITE_CONTENT_PATH); + request.setProtocol("http"); + request.setServerName("localhost"); + request.setServerPort(8085); + request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + request.setMethod("GET"); + request.setRequestURI("/testapp/preview/services/contentservice/Solutions/SolutionsPage"); + request.setContextPath("/testapp"); + request.setServletPath("/preview/services"); + request.setPathInfo("/contentservice/Solutions/SolutionsPage"); + + response = new MockHttpServletResponse(); + + jaxrsServlet.service(request, response); + + assertFalse(Response.Status.OK.getStatusCode() == response.getStatus()); } @Test - public void testCreateContentDocument() throws ServletException, IOException { + public void testCreateContentDocument() throws Exception { // TODO: } @Test - public void testCreateContentNode() throws ServletException, IOException { + public void testCreateContentNode() throws Exception { // TODO: } @Test - public void testSetContentProperty() throws ServletException, IOException { + public void testUpdateContentItem() throws Exception { // TODO: } _______________________________________________ Hippocms-svn mailing list Hippocms-svn@... http://lists.hippo.nl/mailman/listinfo/hippocms-svn |
| Free embeddable forum powered by Nabble | Forum Help |