From 0a8a9c41eccd9d930179d95d49bd2149357e067c Mon Sep 17 00:00:00 2001 From: David Caruana Date: Mon, 23 Mar 2009 11:16:31 +0000 Subject: [PATCH] Refactor of CMIS Tests. Move generic helpers to base test class. - allows for multiple CMIS unit tests e.g. isolate tests that rely on vendor specific behaviour git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13717 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../cmis/rest/test/BaseCMISWebScriptTest.java | 350 +++++++++++++++++- .../cmis/rest/test/CMISCustomTypeTest.java | 55 +++ .../repo/cmis/rest/test/CMISTest.java | 312 ++-------------- .../repo/cmis/rest/test/CMISTestRunner.java | 2 +- .../rest/test/CMISTestRunnerWebScript.java | 2 +- 5 files changed, 430 insertions(+), 291 deletions(-) create mode 100644 source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java diff --git a/source/java/org/alfresco/repo/cmis/rest/test/BaseCMISWebScriptTest.java b/source/java/org/alfresco/repo/cmis/rest/test/BaseCMISWebScriptTest.java index 9e634e3770..7406421ce2 100644 --- a/source/java/org/alfresco/repo/cmis/rest/test/BaseCMISWebScriptTest.java +++ b/source/java/org/alfresco/repo/cmis/rest/test/BaseCMISWebScriptTest.java @@ -27,20 +27,42 @@ package org.alfresco.repo.cmis.rest.test; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.PrintStream; import java.io.StringReader; import java.io.StringWriter; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.dom.DOMSource; import javax.xml.validation.Validator; +import junit.framework.Test; + import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.repo.cmis.rest.xsd.CMISValidator; import org.alfresco.repo.web.scripts.BaseWebScriptTest; +import org.alfresco.util.Base64; +import org.alfresco.web.scripts.Format; +import org.alfresco.web.scripts.TestWebScriptServer.GetRequest; +import org.alfresco.web.scripts.TestWebScriptServer.PostRequest; import org.alfresco.web.scripts.TestWebScriptServer.Request; import org.alfresco.web.scripts.TestWebScriptServer.Response; +import org.alfresco.web.scripts.atom.AbderaService; +import org.alfresco.web.scripts.atom.AbderaServiceImpl; +import org.apache.abdera.ext.cmis.CMISCapabilities; +import org.apache.abdera.ext.cmis.CMISConstants; +import org.apache.abdera.ext.cmis.CMISExtensionFactory; +import org.apache.abdera.ext.cmis.CMISObject; +import org.apache.abdera.ext.cmis.CMISRepositoryInfo; +import org.apache.abdera.i18n.iri.IRI; +import org.apache.abdera.model.Collection; +import org.apache.abdera.model.Entry; +import org.apache.abdera.model.Feed; +import org.apache.abdera.model.Link; +import org.apache.abdera.model.Service; +import org.apache.abdera.model.Workspace; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -53,10 +75,35 @@ import org.xml.sax.SAXException; */ public class BaseCMISWebScriptTest extends BaseWebScriptTest { - private CMISValidator cmisValidator = new CMISValidator(); + // Repository Access + private String serviceUrl = "http://localhost:8080/alfresco/service/api/repository"; + + // TODO: remove this for v0.6 of spec + // Argument support private boolean argsAsHeaders = false; + + // validation support + private CMISValidator cmisValidator = new CMISValidator(); private boolean validateResponse = true; + // cached responses + private AbderaService abdera; + private Service service = null; + private String fullTextCapability = null; + private Entry testRootFolder = null; + private Entry testRunFolder = null; + + + /** + * Sets the Repository Service URL + * + * @param serviceUrl serviceURL + */ + public void setServiceUrl(String serviceUrl) + { + this.serviceUrl = serviceUrl; + } + /** * Pass URL arguments as headers * @@ -77,6 +124,31 @@ public class BaseCMISWebScriptTest extends BaseWebScriptTest this.validateResponse = validateResponse; } + + @Override + protected void setUp() + throws Exception + { + // setup client atom support + AbderaServiceImpl abderaImpl = new AbderaServiceImpl(); + abderaImpl.afterPropertiesSet(); + abderaImpl.registerExtensionFactory(new CMISExtensionFactory()); + abdera = abderaImpl; + + super.setUp(); + } + + + /** + * Gets the Abdera Service + * + * @return abdera service + */ + protected AbderaService getAbdera() + { + return abdera; + } + /** * Determines if URL arguments are passed as headers * @@ -266,4 +338,280 @@ public class BaseCMISWebScriptTest extends BaseWebScriptTest return super.sendRequest(req, expectedStatus, asUser); } + + /** + * Default Test Listener + */ + public static class CMISTestListener extends BaseWebScriptTestListener implements WebScriptTestListener + { + /** + * Construct + * + * @param writer + */ + public CMISTestListener(PrintStream writer) + { + super(writer); + } + + /* (non-Javadoc) + * @see junit.textui.ResultPrinter#startTest(junit.framework.Test) + */ + @Override + public void startTest(Test test) + { + BaseCMISWebScriptTest cmisTest = (BaseCMISWebScriptTest)test; + getWriter().println(); + getWriter().println("*** Test started: " + cmisTest.getName() + " (remote: " + (cmisTest.getRemoteServer() != null) + ", headers: " + cmisTest.getArgsAsHeaders() + ")"); + } + } + + + // + // General Abdera Helpers + // + protected Entry getEntry(IRI href) + throws Exception + { + return getEntry(href, null); + } + + protected Entry getEntry(IRI href, Map args) + throws Exception + { + Request get = new GetRequest(href.toString()).setArgs(args); + Response res = sendRequest(get, 200, getAtomValidator()); + assertNotNull(res); + String xml = res.getContentAsString(); + Entry entry = abdera.parseEntry(new StringReader(xml), null); + assertNotNull(entry); + assertEquals(getArgsAsHeaders() ? get.getUri() : get.getFullUri(), entry.getSelfLink().getHref().toString()); + return entry; + } + + protected Feed getFeed(IRI href) + throws Exception + { + return getFeed(href, null); + } + + protected Feed getFeed(IRI href, Map args) + throws Exception + { + Request get = new GetRequest(href.toString()).setArgs(args); + Response res = sendRequest(get, 200, getAtomValidator()); + assertNotNull(res); + String xml = res.getContentAsString(); + Feed feed = abdera.parseFeed(new StringReader(xml), null); + assertNotNull(feed); + assertEquals(getArgsAsHeaders() ? get.getUri() : get.getFullUri(), feed.getSelfLink().getHref().toString()); + return feed; + } + + // + // General CMIS Helpers + // + + protected Service getRepository() + throws Exception + { + if (service == null) + { + Response res = sendRequest(new GetRequest(serviceUrl), 200, getAppValidator()); + String xml = res.getContentAsString(); + assertNotNull(xml); + assertTrue(xml.length() > 0); + service = abdera.parseService(new StringReader(xml), null); + assertNotNull(service); + } + return service; + } + + protected String getFullTextCapability() + throws Exception + { + if (fullTextCapability == null) + { + Service repo = getRepository(); + Workspace workspace = getWorkspace(service); + CMISRepositoryInfo repoInfo = workspace.getExtension(CMISConstants.REPOSITORY_INFO); + assertNotNull(repoInfo); + CMISCapabilities capabilities = repoInfo.getCapabilities(); + assertNotNull(repoInfo); + fullTextCapability = capabilities.getFullText(); + assertNotNull(fullTextCapability); + } + return fullTextCapability; + } + + protected Workspace getWorkspace(Service service) + { + return service.getWorkspaces().get(0); + } + + protected Collection getCMISCollection(Workspace workspace, String collectionId) + { + List collections = workspace.getCollections(); + for (Collection collection : collections) + { + String id = collection.getAttributeValue(CMISConstants.COLLECTION_TYPE); + if (id != null && id.equals(collectionId)) + { + return collection; + } + } + return null; + } + + protected IRI getRootChildrenCollection(Workspace workspace) + { + Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_ROOT_CHILDREN); + assertNotNull(root); + IRI rootHREF = root.getHref(); + assertNotNull(rootHREF); + return rootHREF; + } + + protected IRI getCheckedOutCollection(Workspace workspace) + { + Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_CHECKEDOUT); + assertNotNull(root); + IRI rootHREF = root.getHref(); + assertNotNull(rootHREF); + return rootHREF; + } + + protected IRI getTypesChildrenCollection(Workspace workspace) + { + Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_TYPES_CHILDREN); + assertNotNull(root); + IRI rootHREF = root.getHref(); + assertNotNull(rootHREF); + return rootHREF; + } + + protected IRI getQueryCollection(Workspace workspace) + { + Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_QUERY); + assertNotNull(root); + IRI rootHREF = root.getHref(); + assertNotNull(rootHREF); + return rootHREF; + } + + + protected Entry createFolder(IRI parent, String name) + throws Exception + { + return createFolder(parent, name, "/org/alfresco/repo/cmis/rest/test/createfolder.atomentry.xml"); + } + + protected Entry createFolder(IRI parent, String name, String atomEntryFile) + throws Exception + { + String createFolder = loadString(atomEntryFile); + createFolder = createFolder.replace("${NAME}", name); + Response res = sendRequest(new PostRequest(parent.toString(), createFolder, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); + assertNotNull(res); + String xml = res.getContentAsString(); + Entry entry = abdera.parseEntry(new StringReader(xml), null); + assertNotNull(entry); + assertEquals(name, entry.getTitle()); + //assertEquals(name + " (summary)", entry.getSummary()); + CMISObject object = entry.getExtension(CMISConstants.OBJECT); + assertEquals("folder", object.getBaseType().getValue()); + String testFolderHREF = (String)res.getHeader("Location"); + assertNotNull(testFolderHREF); + return entry; + } + + protected Entry createDocument(IRI parent, String name) + throws Exception + { + return createDocument(parent, name, "/org/alfresco/repo/cmis/rest/test/createdocument.atomentry.xml"); + } + + protected Entry createDocument(IRI parent, String name, String atomEntryFile) + throws Exception + { + String createFile = loadString(atomEntryFile); + createFile = createFile.replace("${NAME}", name); + createFile = createFile.replace("${CONTENT}", Base64.encodeBytes(name.getBytes())); + Response res = sendRequest(new PostRequest(parent.toString(), createFile, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); + assertNotNull(res); + String xml = res.getContentAsString(); + Entry entry = abdera.parseEntry(new StringReader(xml), null); + assertNotNull(entry); + assertEquals(name, entry.getTitle()); + //assertEquals(name + " (summary)", entry.getSummary()); + assertNotNull(entry.getContentSrc()); + CMISObject object = entry.getExtension(CMISConstants.OBJECT); + assertEquals("document", object.getBaseType().getValue()); + String testFileHREF = (String)res.getHeader("Location"); + assertNotNull(testFileHREF); + return entry; + } + + // + // General Test Helpers + // + + protected Entry getTestRootFolder() + throws Exception + { + if (testRootFolder == null) + { + testRootFolder = createTestRootFolder(); + } + return testRootFolder; + } + + protected Entry createTestRootFolder() + throws Exception + { + Service service = getRepository(); + IRI rootFolderHREF = getRootChildrenCollection(getWorkspace(service)); + + // TODO: Convert to query + Feed children = getFeed(rootFolderHREF); + for (Entry child : children.getEntries()) + { + if (child.getTitle().equals("CMIS Tests")) + { + return child; + } + } + + // not found, create it + return createFolder(rootFolderHREF, "CMIS Tests"); + } + + protected Entry getTestRunFolder() + throws Exception + { + if (testRunFolder == null) + { + testRunFolder = createTestRunFolder(); + } + return testRunFolder; + } + + protected Entry createTestRunFolder() + throws Exception + { + Entry testRootFolder = getTestRootFolder(); + Link testsChildrenLink = testRootFolder.getLink(CMISConstants.REL_CHILDREN); + return createFolder(testsChildrenLink.getHref(), "Test Run " + System.currentTimeMillis()); + } + + protected Entry createTestFolder(String name) + throws Exception + { + Entry testRunFolder = getTestRunFolder(); + Link childrenLink = testRunFolder.getLink(CMISConstants.REL_CHILDREN); + assertNotNull(childrenLink); + Entry testFolder = createFolder(childrenLink.getHref(), name + " " + System.currentTimeMillis()); + return testFolder; + } + } diff --git a/source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java b/source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java new file mode 100644 index 0000000000..9a15a1d6fc --- /dev/null +++ b/source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java @@ -0,0 +1,55 @@ +/* + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * Copyright (C) 2005-2008 Alfresco Software Limited. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.repo.cmis.rest.test; + + + +/** + * CMIS API Test Harness + * + * @author davidc + */ +public class CMISCustomTypeTest extends CMISTest +{ + + @Override + protected void setUp() + throws Exception + { + // Uncomment to change default behaviour of tests + setDefaultRunAs("admin"); +// RemoteServer server = new RemoteServer(); +// server.username = "admin"; +// server.password = "admin"; +// setRemoteServer(server); +// setArgsAsHeaders(false); +// setValidateResponse(false); +// setListener(new CMISTestListener(System.out)); +// setTraceReqRes(true); + + super.setUp(); + } + +} diff --git a/source/java/org/alfresco/repo/cmis/rest/test/CMISTest.java b/source/java/org/alfresco/repo/cmis/rest/test/CMISTest.java index 2fc3449cde..27aedb1320 100644 --- a/source/java/org/alfresco/repo/cmis/rest/test/CMISTest.java +++ b/source/java/org/alfresco/repo/cmis/rest/test/CMISTest.java @@ -24,7 +24,6 @@ */ package org.alfresco.repo.cmis.rest.test; -import java.io.PrintStream; import java.io.StringReader; import java.util.HashMap; import java.util.HashSet; @@ -32,31 +31,20 @@ import java.util.List; import java.util.Map; import java.util.Set; -import junit.framework.Test; - -import org.alfresco.util.Base64; import org.alfresco.util.GUID; import org.alfresco.web.scripts.Format; import org.alfresco.web.scripts.TestWebScriptServer.DeleteRequest; import org.alfresco.web.scripts.TestWebScriptServer.GetRequest; import org.alfresco.web.scripts.TestWebScriptServer.PostRequest; import org.alfresco.web.scripts.TestWebScriptServer.PutRequest; -import org.alfresco.web.scripts.TestWebScriptServer.Request; import org.alfresco.web.scripts.TestWebScriptServer.Response; -import org.alfresco.web.scripts.atom.AbderaService; -import org.alfresco.web.scripts.atom.AbderaServiceImpl; -import org.apache.abdera.ext.cmis.CMISCapabilities; import org.apache.abdera.ext.cmis.CMISConstants; -import org.apache.abdera.ext.cmis.CMISExtensionFactory; import org.apache.abdera.ext.cmis.CMISObject; -import org.apache.abdera.ext.cmis.CMISRepositoryInfo; import org.apache.abdera.i18n.iri.IRI; -import org.apache.abdera.model.Collection; import org.apache.abdera.model.Entry; import org.apache.abdera.model.Feed; import org.apache.abdera.model.Link; import org.apache.abdera.model.Service; -import org.apache.abdera.model.Workspace; /** @@ -66,36 +54,11 @@ import org.apache.abdera.model.Workspace; */ public class CMISTest extends BaseCMISWebScriptTest { - // Repository Access - private String serviceUrl = "http://localhost:8080/alfresco/service/api/repository"; - - // cached responses - private AbderaService abdera; - private Service service = null; - private String fulltextCapability = null; - private Entry testsFolder = null; - private Entry testRunFolder = null; - /** - * Sets the Repository Service URL - * - * @param serviceUrl serviceURL - */ - public void setServiceUrl(String serviceUrl) - { - this.serviceUrl = serviceUrl; - } - @Override protected void setUp() throws Exception { - // setup client atom support - AbderaServiceImpl abderaImpl = new AbderaServiceImpl(); - abderaImpl.afterPropertiesSet(); - abderaImpl.registerExtensionFactory(new CMISExtensionFactory()); - abdera = abderaImpl; - // Uncomment to change default behaviour of tests setDefaultRunAs("admin"); // RemoteServer server = new RemoteServer(); @@ -110,234 +73,6 @@ public class CMISTest extends BaseCMISWebScriptTest super.setUp(); } - /** - * Default Test Listener - */ - public static class CMISTestListener extends BaseWebScriptTestListener implements WebScriptTestListener - { - /** - * Construct - * - * @param writer - */ - public CMISTestListener(PrintStream writer) - { - super(writer); - } - - /* (non-Javadoc) - * @see junit.textui.ResultPrinter#startTest(junit.framework.Test) - */ - @Override - public void startTest(Test test) - { - CMISTest cmisTest = (CMISTest)test; - getWriter().println(); - getWriter().println("*** Test started: " + cmisTest.getName() + " (remote: " + (cmisTest.getRemoteServer() != null) + ", headers: " + cmisTest.getArgsAsHeaders() + ")"); - } - } - - private Service getRepository() - throws Exception - { - if (service == null) - { - Response res = sendRequest(new GetRequest(serviceUrl), 200, getAppValidator()); - String xml = res.getContentAsString(); - assertNotNull(xml); - assertTrue(xml.length() > 0); - - service = abdera.parseService(new StringReader(xml), null); - assertNotNull(service); - Workspace workspace = getWorkspace(service); - CMISRepositoryInfo repoInfo = workspace.getExtension(CMISConstants.REPOSITORY_INFO); - assertNotNull(repoInfo); - CMISCapabilities capabilities = repoInfo.getCapabilities(); - assertNotNull(repoInfo); - fulltextCapability = capabilities.getFullText(); - assertNotNull(fulltextCapability); - } - return service; - } - - private Workspace getWorkspace(Service service) - { - return service.getWorkspaces().get(0); - } - - private Collection getCMISCollection(Workspace workspace, String collectionId) - { - List collections = workspace.getCollections(); - for (Collection collection : collections) - { - String id = collection.getAttributeValue(CMISConstants.COLLECTION_TYPE); - if (id != null && id.equals(collectionId)) - { - return collection; - } - } - return null; - } - - private IRI getRootChildrenCollection(Workspace workspace) - { - Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_ROOT_CHILDREN); - assertNotNull(root); - IRI rootHREF = root.getHref(); - assertNotNull(rootHREF); - return rootHREF; - } - - private IRI getCheckedOutCollection(Workspace workspace) - { - Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_CHECKEDOUT); - assertNotNull(root); - IRI rootHREF = root.getHref(); - assertNotNull(rootHREF); - return rootHREF; - } - - private IRI getTypesChildrenCollection(Workspace workspace) - { - Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_TYPES_CHILDREN); - assertNotNull(root); - IRI rootHREF = root.getHref(); - assertNotNull(rootHREF); - return rootHREF; - } - - private IRI getQueryCollection(Workspace workspace) - { - Collection root = getCMISCollection(workspace, CMISConstants.COLLECTION_QUERY); - assertNotNull(root); - IRI rootHREF = root.getHref(); - assertNotNull(rootHREF); - return rootHREF; - } - - private Entry createFolder(IRI parent, String name) - throws Exception - { - return createFolder(parent, name, "/org/alfresco/repo/cmis/rest/test/createfolder.atomentry.xml"); - } - - private Entry createFolder(IRI parent, String name, String atomEntryFile) - throws Exception - { - String createFolder = loadString(atomEntryFile); - createFolder = createFolder.replace("${NAME}", name); - Response res = sendRequest(new PostRequest(parent.toString(), createFolder, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); - assertNotNull(res); - String xml = res.getContentAsString(); - Entry entry = abdera.parseEntry(new StringReader(xml), null); - assertNotNull(entry); - assertEquals(name, entry.getTitle()); - //assertEquals(name + " (summary)", entry.getSummary()); - CMISObject object = entry.getExtension(CMISConstants.OBJECT); - assertEquals("folder", object.getBaseType().getValue()); - String testFolderHREF = (String)res.getHeader("Location"); - assertNotNull(testFolderHREF); - return entry; - } - - private Entry createDocument(IRI parent, String name) - throws Exception - { - return createDocument(parent, name, "/org/alfresco/repo/cmis/rest/test/createdocument.atomentry.xml"); - } - - private Entry createDocument(IRI parent, String name, String atomEntryFile) - throws Exception - { - String createFile = loadString(atomEntryFile); - createFile = createFile.replace("${NAME}", name); - createFile = createFile.replace("${CONTENT}", Base64.encodeBytes(name.getBytes())); - Response res = sendRequest(new PostRequest(parent.toString(), createFile, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); - assertNotNull(res); - String xml = res.getContentAsString(); - Entry entry = abdera.parseEntry(new StringReader(xml), null); - assertNotNull(entry); - assertEquals(name, entry.getTitle()); - //assertEquals(name + " (summary)", entry.getSummary()); - assertNotNull(entry.getContentSrc()); - CMISObject object = entry.getExtension(CMISConstants.OBJECT); - assertEquals("document", object.getBaseType().getValue()); - String testFileHREF = (String)res.getHeader("Location"); - assertNotNull(testFileHREF); - return entry; - } - - private Entry createTestsFolder(IRI rootFolder) - throws Exception - { - // TODO: Convert to query - Feed children = getFeed(rootFolder); - for (Entry child : children.getEntries()) - { - if (child.getTitle().equals("CMIS Tests")) - { - return child; - } - } - - // not found, create it - return createFolder(rootFolder, "CMIS Tests"); - } - - private Entry createTestFolder(String name) - throws Exception - { - if (testRunFolder == null) - { - Service service = getRepository(); - IRI rootFolderHREF = getRootChildrenCollection(getWorkspace(service)); - testsFolder = createTestsFolder(rootFolderHREF); - Link testsChildrenLink = testsFolder.getLink(CMISConstants.REL_CHILDREN); - testRunFolder = createFolder(testsChildrenLink.getHref(), "Test Run " + System.currentTimeMillis()); - } - Link childrenLink = testRunFolder.getLink(CMISConstants.REL_CHILDREN); - assertNotNull(childrenLink); - Entry testFolder = createFolder(childrenLink.getHref(), name + " " + System.currentTimeMillis()); - return testFolder; - } - - private Entry getEntry(IRI href) - throws Exception - { - return getEntry(href, null); - } - - private Entry getEntry(IRI href, Map args) - throws Exception - { - Request get = new GetRequest(href.toString()).setArgs(args); - Response res = sendRequest(get, 200, getAtomValidator()); - assertNotNull(res); - String xml = res.getContentAsString(); - Entry entry = abdera.parseEntry(new StringReader(xml), null); - assertNotNull(entry); - assertEquals(getArgsAsHeaders() ? get.getUri() : get.getFullUri(), entry.getSelfLink().getHref().toString()); - return entry; - } - - private Feed getFeed(IRI href) - throws Exception - { - return getFeed(href, null); - } - - private Feed getFeed(IRI href, Map args) - throws Exception - { - Request get = new GetRequest(href.toString()).setArgs(args); - Response res = sendRequest(get, 200, getAtomValidator()); - assertNotNull(res); - String xml = res.getContentAsString(); - Feed feed = abdera.parseFeed(new StringReader(xml), null); - assertNotNull(feed); - assertEquals(getArgsAsHeaders() ? get.getUri() : get.getFullUri(), feed.getSelfLink().getHref().toString()); - return feed; - } public void testRepository() throws Exception @@ -489,7 +224,7 @@ public class CMISTest extends BaseCMISWebScriptTest IRI checkedoutHREF = getCheckedOutCollection(getWorkspace(getRepository())); Response pwcRes = sendRequest(new PostRequest(checkedoutHREF.toString(), documentXML, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); assertNotNull(pwcRes); - Entry pwc = abdera.parseEntry(new StringReader(pwcRes.getContentAsString()), null); + Entry pwc = getAbdera().parseEntry(new StringReader(pwcRes.getContentAsString()), null); // get children, ensure they exist (but not private working copy) Feed children = getFeed(childrenLink.getHref()); @@ -706,9 +441,9 @@ public class CMISTest extends BaseCMISWebScriptTest assertEquals(4, parentsToRoot.getEntries().size()); assertEquals(testFolder.getId(), parentsToRoot.getEntries().get(0).getId()); assertNotNull(parentsToRoot.getEntries().get(0).getLink(CMISConstants.REL_PARENT)); - assertEquals(testRunFolder.getId(), parentsToRoot.getEntries().get(1).getId()); + assertEquals(getTestRunFolder().getId(), parentsToRoot.getEntries().get(1).getId()); assertNotNull(parentsToRoot.getEntries().get(1).getLink(CMISConstants.REL_PARENT)); - assertEquals(testsFolder.getId(), parentsToRoot.getEntries().get(2).getId()); + assertEquals(getTestRootFolder().getId(), parentsToRoot.getEntries().get(2).getId()); assertNotNull(parentsToRoot.getEntries().get(2).getLink(CMISConstants.REL_PARENT)); Feed root = getFeed(getRootChildrenCollection(getWorkspace(getRepository()))); Entry rootEntry = getEntry(root.getLink(CMISConstants.REL_SOURCE).getHref()); @@ -741,9 +476,9 @@ public class CMISTest extends BaseCMISWebScriptTest assertEquals(4, parentsToRoot.getEntries().size()); assertEquals(testFolder.getId(), parentsToRoot.getEntries().get(0).getId()); //assertNotNull(parentsToRoot.getEntries().get(0).getLink(CMISConstants.REL_PARENT)); - assertEquals(testRunFolder.getId(), parentsToRoot.getEntries().get(1).getId()); + assertEquals(getTestRunFolder().getId(), parentsToRoot.getEntries().get(1).getId()); //assertNotNull(parentsToRoot.getEntries().get(1).getLink(CMISConstants.REL_PARENT)); - assertEquals(testsFolder.getId(), parentsToRoot.getEntries().get(2).getId()); + assertEquals(getTestRootFolder().getId(), parentsToRoot.getEntries().get(2).getId()); //assertNotNull(parentsToRoot.getEntries().get(2).getLink(CMISConstants.REL_PARENT)); Feed root = getFeed(getRootChildrenCollection(getWorkspace(getRepository()))); Entry rootEntry = getEntry(root.getLink(CMISConstants.REL_SOURCE).getHref()); @@ -807,7 +542,7 @@ public class CMISTest extends BaseCMISWebScriptTest updateFile = updateFile.replace("${NAME}", guid); Response res = sendRequest(new PutRequest(document.getSelfLink().getHref().toString(), updateFile, Format.ATOMENTRY.mimetype()), 200, getAtomValidator()); assertNotNull(res); - Entry updated = abdera.parseEntry(new StringReader(res.getContentAsString()), null); + Entry updated = getAbdera().parseEntry(new StringReader(res.getContentAsString()), null); // ensure update occurred assertEquals(document.getId(), updated.getId()); @@ -860,7 +595,7 @@ public class CMISTest extends BaseCMISWebScriptTest assertNotNull(pwcRes); String pwcXml = pwcRes.getContentAsString(); assertNotNull(pwcXml); - Entry pwc = abdera.parseEntry(new StringReader(pwcXml), null); + Entry pwc = getAbdera().parseEntry(new StringReader(pwcXml), null); assertNotNull(pwc); CMISObject pwcObject = pwc.getExtension(CMISConstants.OBJECT); assertNotNull(pwcObject); @@ -873,7 +608,7 @@ public class CMISTest extends BaseCMISWebScriptTest Response pwcGetRes = sendRequest(new GetRequest(pwc.getSelfLink().getHref().toString()), 200); assertNotNull(pwcGetRes); String pwcGetXml = pwcRes.getContentAsString(); - Entry pwcGet = abdera.parseEntry(new StringReader(pwcGetXml), null); + Entry pwcGet = getAbdera().parseEntry(new StringReader(pwcGetXml), null); assertNotNull(pwcGet); CMISObject pwcGetObject = pwc.getExtension(CMISConstants.OBJECT); assertNotNull(pwcGetObject); @@ -922,7 +657,7 @@ public class CMISTest extends BaseCMISWebScriptTest assertEquals(1, checkedout.getEntries().size()); // cancel checkout - Entry pwc = abdera.parseEntry(new StringReader(pwcXml), null); + Entry pwc = getAbdera().parseEntry(new StringReader(pwcXml), null); assertNotNull(pwc); Response cancelRes = sendRequest(new DeleteRequest(pwc.getSelfLink().getHref().toString()), 204); assertNotNull(cancelRes); @@ -955,7 +690,7 @@ public class CMISTest extends BaseCMISWebScriptTest IRI checkedoutHREF = getCheckedOutCollection(getWorkspace(getRepository())); Response pwcRes = sendRequest(new PostRequest(checkedoutHREF.toString(), xml, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); assertNotNull(pwcRes); - Entry pwc = abdera.parseEntry(new StringReader(pwcRes.getContentAsString()), null); + Entry pwc = getAbdera().parseEntry(new StringReader(pwcRes.getContentAsString()), null); assertNotNull(pwc); // test getCheckedOut is updated @@ -983,7 +718,7 @@ public class CMISTest extends BaseCMISWebScriptTest updateFile = updateFile.replace("${NAME}", guid); Response pwcUpdatedres = sendRequest(new PutRequest(pwc.getEditLink().getHref().toString(), updateFile, Format.ATOMENTRY.mimetype()), 200, getAtomValidator()); assertNotNull(pwcUpdatedres); - Entry updated = abdera.parseEntry(new StringReader(pwcUpdatedres.getContentAsString()), null); + Entry updated = getAbdera().parseEntry(new StringReader(pwcUpdatedres.getContentAsString()), null); // ensure update occurred assertEquals(pwc.getId(), updated.getId()); assertEquals(pwc.getPublished(), updated.getPublished()); @@ -1012,7 +747,7 @@ public class CMISTest extends BaseCMISWebScriptTest assertEquals(0, checkedout2.getEntries().size()); // test checked-in doc has new updates - Entry checkedIn = abdera.parseEntry(new StringReader(checkinResXML), null); + Entry checkedIn = getAbdera().parseEntry(new StringReader(checkinResXML), null); Entry updatedDoc = getEntry(checkedIn.getSelfLink().getHref()); // TODO: issue with updating name on PWC and it not reflecting on checked-in document //assertEquals("Updated Title " + guid, updatedDoc.getTitle()); @@ -1048,7 +783,7 @@ public class CMISTest extends BaseCMISWebScriptTest IRI checkedoutHREF = getCheckedOutCollection(getWorkspace(getRepository())); Response pwcRes = sendRequest(new PostRequest(checkedoutHREF.toString(), xml, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); assertNotNull(pwcRes); - Entry pwc = abdera.parseEntry(new StringReader(pwcRes.getContentAsString()), null); + Entry pwc = getAbdera().parseEntry(new StringReader(pwcRes.getContentAsString()), null); assertNotNull(pwc); // test getCheckedOut is updated @@ -1082,7 +817,7 @@ public class CMISTest extends BaseCMISWebScriptTest assertEquals(0, checkedout2.getEntries().size()); // test checked-in doc has new updates - Entry checkedIn = abdera.parseEntry(new StringReader(checkinResXML), null); + Entry checkedIn = getAbdera().parseEntry(new StringReader(checkinResXML), null); Entry updatedDoc = getEntry(checkedIn.getSelfLink().getHref()); // TODO: issue with updating name on PWC and it not reflecting on checked-in document //assertEquals("Updated Title " + guid, updatedDoc.getTitle()); @@ -1113,7 +848,7 @@ public class CMISTest extends BaseCMISWebScriptTest // checkout Response pwcRes = sendRequest(new PostRequest(checkedoutHREF.toString(), xml, Format.ATOMENTRY.mimetype()), 201, getAtomValidator()); assertNotNull(pwcRes); - Entry pwc = abdera.parseEntry(new StringReader(pwcRes.getContentAsString()), null); + Entry pwc = getAbdera().parseEntry(new StringReader(pwcRes.getContentAsString()), null); assertNotNull(pwc); // checkin @@ -1162,7 +897,7 @@ public class CMISTest extends BaseCMISWebScriptTest Entry retrievedType = getEntry(type.getSelfLink().getHref()); assertEquals(type.getId(), retrievedType.getId()); assertEquals(type.getTitle(), retrievedType.getTitle()); - // TODO: type specific properties - extension to Abdera + // TODO: type specific properties - extension to abdera } } @@ -1261,7 +996,7 @@ public class CMISTest extends BaseCMISWebScriptTest // issue structured query Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), CMISConstants.MIMETYPE_QUERY), 200); assertNotNull(queryRes); - Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null); + Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null); assertNotNull(queryFeed); assertEquals(1, queryFeed.getEntries().size()); assertNotNull(queryFeed.getEntry(testFolder.getId().toString())); @@ -1283,7 +1018,7 @@ public class CMISTest extends BaseCMISWebScriptTest // issue structured query Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), CMISConstants.MIMETYPE_QUERY), 200); assertNotNull(queryRes); - Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null); + Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null); assertNotNull(queryFeed); assertEquals(1, queryFeed.getEntries().size()); assertNotNull(queryFeed.getEntry(document1.getId().toString())); @@ -1293,7 +1028,8 @@ public class CMISTest extends BaseCMISWebScriptTest assertEquals(document1Object.getObjectTypeId().getValue(), result1.getObjectTypeId().getValue()); } - if (fulltextCapability.equals("fulltextonly") || fulltextCapability.equals("fulltextandstructured")) + String fullTextCapability = getFullTextCapability(); + if (fullTextCapability.equals("fulltextonly") || fullTextCapability.equals("fulltextandstructured")) { // construct fulltext query String query = "SELECT ObjectId, ObjectTypeId, Name FROM Document " + @@ -1305,7 +1041,7 @@ public class CMISTest extends BaseCMISWebScriptTest // issue fulltext query Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), CMISConstants.MIMETYPE_QUERY), 200); assertNotNull(queryRes); - Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null); + Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null); assertNotNull(queryFeed); assertEquals(1, queryFeed.getEntries().size()); assertNotNull(queryFeed.getEntry(document2.getId().toString())); @@ -1315,7 +1051,7 @@ public class CMISTest extends BaseCMISWebScriptTest assertEquals(document2Object.getObjectTypeId().getValue(), result1.getObjectTypeId().getValue()); } - if (fulltextCapability.equals("fulltextandstructured")) + if (fullTextCapability.equals("fulltextandstructured")) { // construct fulltext and structured query String query = "SELECT ObjectId, ObjectTypeId, Name FROM Document " + @@ -1329,7 +1065,7 @@ public class CMISTest extends BaseCMISWebScriptTest // issue structured query Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), CMISConstants.MIMETYPE_QUERY), 200); assertNotNull(queryRes); - Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null); + Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null); assertNotNull(queryFeed); assertEquals(1, queryFeed.getEntries().size()); assertNotNull(queryFeed.getEntry(document1.getId().toString())); @@ -1371,7 +1107,7 @@ public class CMISTest extends BaseCMISWebScriptTest Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), CMISConstants.MIMETYPE_QUERY), 200); assertNotNull(queryRes); - Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null); + Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null); assertNotNull(queryFeed); assertEquals(page < 3 ? 4 : 3, queryFeed.getEntries().size()); diff --git a/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunner.java b/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunner.java index 2466f060c8..6b94dfd2e2 100644 --- a/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunner.java +++ b/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunner.java @@ -32,7 +32,7 @@ import java.util.List; import junit.framework.TestResult; import junit.framework.TestSuite; -import org.alfresco.repo.cmis.rest.test.CMISTest.CMISTestListener; +import org.alfresco.repo.cmis.rest.test.BaseCMISWebScriptTest.CMISTestListener; import org.alfresco.repo.web.scripts.BaseWebScriptTest.RemoteServer; import org.alfresco.repo.web.scripts.BaseWebScriptTest.WebScriptTestListener; import org.alfresco.util.CachingDateFormat; diff --git a/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunnerWebScript.java b/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunnerWebScript.java index 9cf3152055..1f417bf27c 100644 --- a/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunnerWebScript.java +++ b/source/java/org/alfresco/repo/cmis/rest/test/CMISTestRunnerWebScript.java @@ -27,7 +27,7 @@ package org.alfresco.repo.cmis.rest.test; import java.io.IOException; import java.io.PrintStream; -import org.alfresco.repo.cmis.rest.test.CMISTest.CMISTestListener; +import org.alfresco.repo.cmis.rest.test.BaseCMISWebScriptTest.CMISTestListener; import org.alfresco.repo.web.scripts.BaseWebScriptTest.WebScriptTestListener; import org.alfresco.web.scripts.AbstractWebScript; import org.alfresco.web.scripts.WebScriptRequest;