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
This commit is contained in:
David Caruana
2009-03-23 11:16:31 +00:00
parent 6800d56525
commit 0a8a9c41ec
5 changed files with 430 additions and 291 deletions

View File

@@ -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<String, String> 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<String, String> 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<Collection> 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;
}
}

View File

@@ -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();
}
}

View File

@@ -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<Collection> 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<String, String> 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<String, String> 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());

View File

@@ -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;

View File

@@ -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;