mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merge from SEAMIST3
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10733 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -40,15 +40,20 @@ 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.CMISProperties;
|
||||
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.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
||||
/**
|
||||
@@ -58,6 +63,9 @@ import org.apache.abdera.model.Service;
|
||||
*/
|
||||
public class CMISTest extends BaseCMISWebScriptTest
|
||||
{
|
||||
// Logger
|
||||
private static final Log logger = LogFactory.getLog(CMISTest.class);
|
||||
|
||||
private AbderaService abdera;
|
||||
|
||||
// test context
|
||||
@@ -65,6 +73,7 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
|
||||
// cached responses
|
||||
private static Service service = null;
|
||||
private static String fulltextCapability = null;
|
||||
private static Entry testsFolder = null;
|
||||
private static Entry testRunFolder = null;
|
||||
|
||||
@@ -80,9 +89,6 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
}
|
||||
|
||||
|
||||
// TODO: checkout/checkin tests need to perform version property assertions
|
||||
|
||||
|
||||
@Override
|
||||
protected void setUp()
|
||||
throws Exception
|
||||
@@ -97,6 +103,9 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
setDefaultRunAs("admin");
|
||||
|
||||
super.setUp();
|
||||
|
||||
if (logger.isInfoEnabled())
|
||||
logger.info("*** Test: " + getName() + " (HEADERS: " + getArgsAsHeaders() + ")");
|
||||
}
|
||||
|
||||
private Service getRepository()
|
||||
@@ -108,10 +117,16 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
String xml = res.getContentAsString();
|
||||
assertNotNull(xml);
|
||||
assertTrue(xml.length() > 0);
|
||||
//assertValidXML(xml, getCMISValidator().getAppValidator());
|
||||
|
||||
service = abdera.parseService(new StringReader(xml), null);
|
||||
assertNotNull(service);
|
||||
Workspace workspace = service.getWorkspaces().get(0);
|
||||
CMISRepositoryInfo repoInfo = workspace.getExtension(CMISConstants.REPOSITORY_INFO);
|
||||
assertNotNull(repoInfo);
|
||||
CMISCapabilities capabilities = repoInfo.getCapabilities();
|
||||
assertNotNull(repoInfo);
|
||||
fulltextCapability = capabilities.getFullText();
|
||||
assertNotNull(fulltextCapability);
|
||||
}
|
||||
return service;
|
||||
}
|
||||
@@ -143,6 +158,15 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
return rootHREF;
|
||||
}
|
||||
|
||||
private IRI getQueryCollection(Service service)
|
||||
{
|
||||
Collection root = service.getCollection("Main Repository", "query collection");
|
||||
assertNotNull(root);
|
||||
IRI rootHREF = root.getHref();
|
||||
assertNotNull(rootHREF);
|
||||
return rootHREF;
|
||||
}
|
||||
|
||||
private Entry createFolder(IRI parent, String name)
|
||||
throws Exception
|
||||
{
|
||||
@@ -178,7 +202,6 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
throws Exception
|
||||
{
|
||||
String createFile = loadString(atomEntryFile);
|
||||
name = name + " " + System.currentTimeMillis();
|
||||
createFile = createFile.replace("${NAME}", name);
|
||||
Response res = sendRequest(new PostRequest(parent.toString(), createFile, Format.ATOMENTRY.mimetype()), 201, getAtomValidator());
|
||||
assertNotNull(res);
|
||||
@@ -770,6 +793,7 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
String checkinUrl = pwc.getSelfLink().getHref().toString();
|
||||
Map<String, String> args2 = new HashMap<String, String>();
|
||||
args2.put("checkinComment", guid);
|
||||
args2.put("checkin", "true");
|
||||
Response checkinRes = sendRequest(new PutRequest(checkinUrl, checkinFile, Format.ATOMENTRY.mimetype()).setArgs(args2), 200, getAtomValidator());
|
||||
assertNotNull(checkinRes);
|
||||
String checkinResXML = checkinRes.getContentAsString();
|
||||
@@ -839,6 +863,7 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
String checkinUrl = pwc.getSelfLink().getHref().toString();
|
||||
Map<String, String> args2 = new HashMap<String, String>();
|
||||
args2.put("checkinComment", guid);
|
||||
args2.put("checkin", "true");
|
||||
Response checkinRes = sendRequest(new PutRequest(checkinUrl, checkinFile, Format.ATOMENTRY.mimetype()).setArgs(args2), 200, getAtomValidator());
|
||||
assertNotNull(checkinRes);
|
||||
String checkinResXML = checkinRes.getContentAsString();
|
||||
@@ -892,7 +917,8 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
checkinFile = checkinFile.replace("${NAME}", "checkin " + i);
|
||||
String checkinUrl = pwc.getSelfLink().getHref().toString();
|
||||
Map<String, String> args2 = new HashMap<String, String>();
|
||||
args2.put("checkinComment", "checkin " + i);
|
||||
args2.put("checkinComment", "checkin" + i);
|
||||
args2.put("checkin", "true");
|
||||
Response checkinRes = sendRequest(new PutRequest(checkinUrl, checkinFile, Format.ATOMENTRY.mimetype()).setArgs(args2), 200, getAtomValidator());
|
||||
assertNotNull(checkinRes);
|
||||
}
|
||||
@@ -913,7 +939,9 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
//assertEquals("Update Title checkin " + i, version.getTitle());
|
||||
Response versionContentRes = sendRequest(new GetRequest(version.getContentSrc().toString()), 200);
|
||||
assertEquals("updated content checkin " + (NUMBER_OF_VERSIONS -1 - i), versionContentRes.getContentAsString());
|
||||
// TODO: test version specific properties e.g. checkin comment
|
||||
CMISProperties versionProps = version.getExtension(CMISConstants.PROPERTIES);
|
||||
assertNotNull(versionProps);
|
||||
assertEquals("checkin" + + (NUMBER_OF_VERSIONS -1 - i), versionProps.getCheckinComment());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -995,6 +1023,99 @@ public class CMISTest extends BaseCMISWebScriptTest
|
||||
}
|
||||
}
|
||||
|
||||
public void testQuery()
|
||||
throws Exception
|
||||
{
|
||||
// retrieve query collection
|
||||
IRI queryHREF = getQueryCollection(getRepository());
|
||||
|
||||
// retrieve test folder for query
|
||||
Entry testFolder = createTestFolder("testQuery");
|
||||
CMISProperties testFolderProps = testFolder.getExtension(CMISConstants.PROPERTIES);
|
||||
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
||||
|
||||
// create documents query
|
||||
Entry document1 = createDocument(childrenLink.getHref(), "apple1");
|
||||
assertNotNull(document1);
|
||||
CMISProperties document1Props = document1.getExtension(CMISConstants.PROPERTIES);
|
||||
assertNotNull(document1Props);
|
||||
String doc2name = "name" + System.currentTimeMillis();
|
||||
Entry document2 = createDocument(childrenLink.getHref(), doc2name);
|
||||
assertNotNull(document2);
|
||||
CMISProperties document2Props = document2.getExtension(CMISConstants.PROPERTIES);
|
||||
assertNotNull(document2Props);
|
||||
Entry document3 = createDocument(childrenLink.getHref(), "banana1");
|
||||
assertNotNull(document3);
|
||||
|
||||
// TODO: query based on query capabilities
|
||||
String queryDoc = loadString("/cmis/rest/query.cmissqlquery.xml");
|
||||
|
||||
{
|
||||
// construct structured query
|
||||
String query = "SELECT OBJECT_ID, OBJECT_TYPE_ID, NAME FROM DOCUMENT_OBJECT_TYPE " +
|
||||
"WHERE IN_FOLDER('" + testFolderProps.getObjectId() + "') " +
|
||||
"AND NAME = 'apple1'";
|
||||
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
||||
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
||||
|
||||
// issue structured query
|
||||
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), "application/cmisrequest+xml;type=query"), 200, getAtomValidator());
|
||||
assertNotNull(queryRes);
|
||||
Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null);
|
||||
assertNotNull(queryFeed);
|
||||
assertEquals(1, queryFeed.getEntries().size());
|
||||
assertNotNull(queryFeed.getEntry(document1.getId().toString()));
|
||||
CMISProperties result1 = queryFeed.getEntry(document1.getId().toString()).getExtension(CMISConstants.PROPERTIES);
|
||||
assertEquals(document1Props.getName(), result1.findPropertyString("NAME"));
|
||||
assertEquals(document1Props.getObjectId(), result1.findPropertyID("OBJECT_ID"));
|
||||
assertEquals(document1Props.getObjectType(), result1.findPropertyID("OBJECT_TYPE_ID"));
|
||||
}
|
||||
|
||||
if (fulltextCapability.equals("fulltextonly") || fulltextCapability.equals("fulltextandstructured"))
|
||||
{
|
||||
// construct fulltext query
|
||||
String query = "SELECT OBJECT_ID, OBJECT_TYPE_ID, NAME FROM DOCUMENT_OBJECT_TYPE " +
|
||||
"WHERE CONTAINS('" + doc2name + "')";
|
||||
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
||||
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
||||
|
||||
// issue fulltext query
|
||||
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), "application/cmisrequest+xml;type=query"), 200, getAtomValidator());
|
||||
assertNotNull(queryRes);
|
||||
Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null);
|
||||
assertNotNull(queryFeed);
|
||||
assertEquals(1, queryFeed.getEntries().size());
|
||||
assertNotNull(queryFeed.getEntry(document2.getId().toString()));
|
||||
CMISProperties result1 = queryFeed.getEntry(document2.getId().toString()).getExtension(CMISConstants.PROPERTIES);
|
||||
assertEquals(document2Props.getName(), result1.findPropertyString("NAME"));
|
||||
assertEquals(document2Props.getObjectId(), result1.findPropertyID("OBJECT_ID"));
|
||||
assertEquals(document2Props.getObjectType(), result1.findPropertyID("OBJECT_TYPE_ID"));
|
||||
}
|
||||
|
||||
if (fulltextCapability.equals("fulltextandstructured"))
|
||||
{
|
||||
// construct fulltext and structured query
|
||||
String query = "SELECT OBJECT_ID, OBJECT_TYPE_ID, NAME FROM DOCUMENT_OBJECT_TYPE " +
|
||||
"WHERE IN_FOLDER('" + testFolderProps.getObjectId() + "') " +
|
||||
"AND NAME = 'apple1'" +
|
||||
"AND CONTAINS('test content')";
|
||||
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
||||
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
||||
|
||||
// issue structured query
|
||||
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), "application/cmisrequest+xml;type=query"), 200, getAtomValidator());
|
||||
assertNotNull(queryRes);
|
||||
Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null);
|
||||
assertNotNull(queryFeed);
|
||||
assertEquals(1, queryFeed.getEntries().size());
|
||||
assertNotNull(queryFeed.getEntry(document1.getId().toString()));
|
||||
CMISProperties result1 = queryFeed.getEntry(document1.getId().toString()).getExtension(CMISConstants.PROPERTIES);
|
||||
assertEquals(document1Props.getName(), result1.findPropertyString("NAME"));
|
||||
assertEquals(document1Props.getObjectId(), result1.findPropertyID("OBJECT_ID"));
|
||||
assertEquals(document1Props.getObjectType(), result1.findPropertyID("OBJECT_TYPE_ID"));
|
||||
}
|
||||
}
|
||||
|
||||
// public void testUnfiled()
|
||||
// {
|
||||
// }
|
||||
|
Reference in New Issue
Block a user