You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by dc...@apache.org on 2009/10/13 19:23:02 UTC
svn commit: r824848 - in
/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry:
abdera/ext/ tck/atompub/client/ tck/atompub/fixture/ tck/atompub/test/
tck/atompub/test/spec/
Author: dcaruana
Date: Tue Oct 13 17:23:02 2009
New Revision: 824848
URL: http://svn.apache.org/viewvc?rev=824848&view=rev
Log:
Addition of Move tests to AtomPub TCK (CMIS-88)
Fix validation of responses - validator now based on returned content type rather than explicitly defined.
Added:
incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/MoveTest.java (with props)
Modified:
incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java
incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISClient.java
incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java
incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/TCKTestSuite.java
Modified: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java?rev=824848&r1=824847&r2=824848&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java Tue Oct 13 17:23:02 2009
@@ -30,6 +30,8 @@
public static final String CMISLINK_NS = "http://docs.oasis-open.org/ns/cmis/link/200908/";
// Mimetypes
+ public static final String MIMETYPE_APP = "application/atomsvc+xml";
+ public static final String MIMETYPE_ATOM = "application/atom+xml";
public static final String MIMETYPE_ENTRY = "application/atom+xml;type=entry";
public static final String MIMETYPE_FEED = "application/atom+xml;type=feed";
public static final String MIMETYPE_TEXT = "text/plain";
Modified: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISClient.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISClient.java?rev=824848&r1=824847&r2=824848&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISClient.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISClient.java Tue Oct 13 17:23:02 2009
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.io.StringReader;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -99,7 +100,7 @@
public Service getRepository() throws Exception {
if (cmisService == null) {
Request req = new GetRequest(serviceUrl);
- Response res = executeRequest(req, 200, cmisValidator.getAppValidator());
+ Response res = executeRequest(req, 200);
String xml = res.getContentAsString();
Assert.assertNotNull(xml);
Assert.assertTrue(xml.length() > 0);
@@ -237,7 +238,7 @@
public Entry getEntry(IRI href, Map<String, String> args) throws Exception {
Request get = new GetRequest(href.toString()).setArgs(args);
- Response res = executeRequest(get, 200, cmisValidator.getCMISAtomValidator());
+ Response res = executeRequest(get, 200);
String xml = res.getContentAsString();
Entry entry = appModel.parseEntry(new StringReader(xml), null);
Assert.assertNotNull(entry);
@@ -254,7 +255,7 @@
public Feed getFeed(IRI href, Map<String, String> args) throws Exception {
Request get = new GetRequest(href.toString()).setArgs(args);
- Response res = executeRequest(get, 200, cmisValidator.getCMISAtomValidator());
+ Response res = executeRequest(get, 200);
Assert.assertNotNull(res);
String xml = res.getContentAsString();
Feed feed = appModel.parseFeed(new StringReader(xml), null);
@@ -271,7 +272,7 @@
String createFolder = templates.load(atomEntryFile == null ? "createfolder.atomentry.xml" : atomEntryFile);
createFolder = createFolder.replace("${NAME}", name);
Request req = new PostRequest(parent.toString(), createFolder, CMISConstants.MIMETYPE_ENTRY);
- Response res = executeRequest(req, 201, cmisValidator.getCMISAtomValidator());
+ Response res = executeRequest(req, 201);
Assert.assertNotNull(res);
String xml = res.getContentAsString();
Entry entry = appModel.parseEntry(new StringReader(xml), null);
@@ -299,7 +300,7 @@
createFile = createFile.replace("${CMISCONTENT}", new String(Base64.encodeBase64(name.getBytes())));
createFile = createFile.replace("${CONTENT}", mediaType ? new String(Base64.encodeBase64(name.getBytes())) : name);
Request req = new PostRequest(parent.toString(), createFile, CMISConstants.MIMETYPE_ENTRY);
- Response res = executeRequest(req, 201, cmisValidator.getCMISAtomValidator());
+ Response res = executeRequest(req, 201);
Assert.assertNotNull(res);
String xml = res.getContentAsString();
Entry entry = appModel.parseEntry(new StringReader(xml), null);
@@ -323,7 +324,7 @@
createFile = createFile.replace("${RELTYPE}", type);
createFile = createFile.replace("${TARGETID}", targetId);
Request req = new PostRequest(parent.toString(), createFile, CMISConstants.MIMETYPE_ENTRY);
- Response res = executeRequest(req, 201, cmisValidator.getCMISAtomValidator());
+ Response res = executeRequest(req, 201);
Assert.assertNotNull(res);
String xml = res.getContentAsString();
Entry entry = appModel.parseEntry(new StringReader(xml), null);
@@ -336,10 +337,22 @@
return entry;
}
- public Response executeRequest(Request req, int expectedStatus) throws IOException {
- return executeRequest(req, expectedStatus, null);
+ public Entry moveObject(IRI destFolder, Entry atomEntry, String sourceFolderId) throws Exception {
+ Response res = moveObjectRequest(destFolder, atomEntry, sourceFolderId, 201);
+ Assert.assertNotNull(res);
+ String xml = res.getContentAsString();
+ Entry entry = appModel.parseEntry(new StringReader(xml), null);
+ return entry;
}
-
+
+ public Response moveObjectRequest(IRI destFolder, Entry atomEntry, String sourceFolderId, int expectedStatus) throws Exception {
+ Map<String, String> args = new HashMap<String, String>();
+ args.put("sourceFolderId", sourceFolderId);
+ Request req = new PostRequest(destFolder.toString(), atomEntry.toString(), CMISConstants.MIMETYPE_ENTRY).setArgs(args);
+ Response res = executeRequest(req, expectedStatus);
+ return res;
+ }
+
/**
* Execute Request
*
@@ -349,7 +362,7 @@
* @return response
* @throws IOException
*/
- public Response executeRequest(Request req, int expectedStatus, Validator validator) throws IOException {
+ public Response executeRequest(Request req, int expectedStatus) throws IOException {
if (traceConnection) {
messageWriter.trace("Request: " + req.getMethod() + " " + req.getFullUri()
+ (req.getBody() == null ? "" : "\n" + new String(req.getBody(), req.getEncoding())));
@@ -365,15 +378,34 @@
if (expectedStatus > -1)
Assert.assertEquals("Request status for " + req.getFullUri(), expectedStatus, res.getStatus());
- if (validator != null && validate) {
- try {
- String resXML = res.getContentAsString();
- assertValid(resXML, validator);
- } catch (ParserConfigurationException e) {
- // @TODO: Maybe make a Chemistry specific exception
- throw new RuntimeException("Failed to validate", e);
+ if (validate) {
+ Validator mimetypeValidator = null;
+ String contentType = res.getContentType();
+ if (contentType != null) {
+ try {
+ // @TODO: register of mappings
+ if (contentType.startsWith(CMISConstants.MIMETYPE_ATOM)) {
+ mimetypeValidator = getAtomValidator();
+ }
+ else if (contentType.startsWith(CMISConstants.MIMETYPE_APP)) {
+ mimetypeValidator = getAppValidator();
+ }
+ } catch(SAXException e) {}
+
+ if (mimetypeValidator != null) {
+ try {
+ messageWriter.trace("Validating Response of content type " + contentType);
+
+ String resXML = res.getContentAsString();
+ assertValid(resXML, mimetypeValidator);
+ } catch (ParserConfigurationException e) {
+ // @TODO: Maybe make a Chemistry specific exception
+ throw new RuntimeException("Failed to validate", e);
+ }
+ }
}
}
+
return res;
}
Modified: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java?rev=824848&r1=824847&r2=824848&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/CMISTestFixture.java Tue Oct 13 17:23:02 2009
@@ -112,7 +112,8 @@
// do deeper, if required
if (depth > 0) {
- Entry subFolder = client.createFolder(childrenLink.getHref(), name, folderTemplate);
+ String folderName = name + " (depth " + (0 - depth) + ")";
+ Entry subFolder = client.createFolder(childrenLink.getHref(), folderName, folderTemplate);
folderEntry.children.add(createTree(entry, subFolder, depth - 1, docCount, folderTemplate, docTemplate));
}
Modified: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/TCKTestSuite.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/TCKTestSuite.java?rev=824848&r1=824847&r2=824848&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/TCKTestSuite.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/TCKTestSuite.java Tue Oct 13 17:23:02 2009
@@ -27,6 +27,7 @@
import org.apache.chemistry.tck.atompub.test.spec.FolderChildrenTest;
import org.apache.chemistry.tck.atompub.test.spec.FolderHierarchyTest;
import org.apache.chemistry.tck.atompub.test.spec.GetTest;
+import org.apache.chemistry.tck.atompub.test.spec.MoveTest;
import org.apache.chemistry.tck.atompub.test.spec.QueryPagingTest;
import org.apache.chemistry.tck.atompub.test.spec.QueryTest;
import org.apache.chemistry.tck.atompub.test.spec.RepositoryServiceTest;
@@ -53,6 +54,7 @@
suite.addTestSuite(FolderHierarchyTest.class);
suite.addTestSuite(ContentStreamTest.class);
suite.addTestSuite(UpdateTest.class);
+ suite.addTestSuite(MoveTest.class);
suite.addTestSuite(QueryTest.class);
suite.addTestSuite(QueryPagingTest.class);
suite.addTestSuite(AllowableActionsTest.class);
Added: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/MoveTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/MoveTest.java?rev=824848&view=auto
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/MoveTest.java (added)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/MoveTest.java Tue Oct 13 17:23:02 2009
@@ -0,0 +1,123 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Authors:
+ * David Caruana, Alfresco
+ * Gabriele Columbro, Alfresco
+ */
+package org.apache.chemistry.tck.atompub.test.spec;
+
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.model.Link;
+import org.apache.chemistry.abdera.ext.CMISConstants;
+import org.apache.chemistry.abdera.ext.CMISObject;
+import org.apache.chemistry.tck.atompub.TCKTest;
+import org.apache.chemistry.tck.atompub.fixture.AssertEntryInFeedVisitor;
+import org.apache.chemistry.tck.atompub.fixture.CMISTree;
+import org.apache.chemistry.tck.atompub.fixture.EntryTree;
+import org.junit.Assert;
+
+
+/**
+ * CMIS Move Tests
+ */
+public class MoveTest extends TCKTest {
+
+ public void testMoveDocument() throws Exception {
+ EntryTree sourceFolder = fixture.createTestTree("sourceTree", 1, 1, null, null);
+ EntryTree destFolder = fixture.createTestTree("destTree", 1, 0, null, null);
+
+ // assert one child in source folder
+ Link sourceChildrenLink = client.getChildrenLink(sourceFolder.entry);
+ Feed sourceChildren = client.getFeed(sourceChildrenLink.getHref());
+ Assert.assertEquals(1, sourceChildren.getEntries().size());
+ sourceFolder.walkChildren(new AssertEntryInFeedVisitor(sourceChildren));
+
+ // assert no children in dest folder
+ Link destChildrenLink = client.getChildrenLink(destFolder.entry);
+ Feed destChildren = client.getFeed(destChildrenLink.getHref());
+ Assert.assertEquals(0, destChildren.getEntries().size());
+
+ // move document
+ CMISObject sourceFolderObject = sourceFolder.entry.getExtension(CMISConstants.OBJECT);
+ String sourceFolderId = sourceFolderObject.getObjectId().getStringValue();
+ Entry document = sourceFolder.children.get(0).entry;
+ client.moveObject(destChildrenLink.getHref(), document, sourceFolderId);
+
+ // assert one source child in dest folder
+ Feed destChildrenAfter = client.getFeed(destChildrenLink.getHref());
+ EntryTree destFolderAfter = new CMISTree(destFolder, destChildrenAfter);
+ Assert.assertEquals(1, destChildrenAfter.getEntries().size());
+ destFolderAfter.walkChildren(new AssertEntryInFeedVisitor(sourceChildren));
+
+ // assert no children in source folder
+ Feed sourceChildrenAfter = client.getFeed(sourceChildrenLink.getHref());
+ Assert.assertEquals(0, sourceChildrenAfter.getEntries().size());
+ }
+
+ public void testMoveFolder() throws Exception {
+ EntryTree sourceFolder = fixture.createTestTree("sourceTree", 2, 0, null, null);
+ EntryTree destFolder = fixture.createTestTree("destTree", 1, 0, null, null);
+
+ // assert one child in source folder
+ Link sourceChildrenLink = client.getChildrenLink(sourceFolder.entry);
+ Feed sourceChildren = client.getFeed(sourceChildrenLink.getHref());
+ Assert.assertEquals(1, sourceChildren.getEntries().size());
+ sourceFolder.walkChildren(new AssertEntryInFeedVisitor(sourceChildren));
+
+ // assert no children in dest folder
+ Link destChildrenLink = client.getChildrenLink(destFolder.entry);
+ Feed destChildren = client.getFeed(destChildrenLink.getHref());
+ Assert.assertEquals(0, destChildren.getEntries().size());
+
+ // move folder
+ CMISObject sourceFolderObject = sourceFolder.entry.getExtension(CMISConstants.OBJECT);
+ String sourceFolderId = sourceFolderObject.getObjectId().getStringValue();
+ Entry folder = sourceFolder.children.get(0).entry;
+ client.moveObject(destChildrenLink.getHref(), folder, sourceFolderId);
+
+ // assert one source child in dest folder
+ Feed destChildrenAfter = client.getFeed(destChildrenLink.getHref());
+ EntryTree destFolderAfter = new CMISTree(destFolder, destChildrenAfter);
+ Assert.assertEquals(1, destChildrenAfter.getEntries().size());
+ destFolderAfter.walkChildren(new AssertEntryInFeedVisitor(sourceChildren));
+
+ // assert no children in source folder
+ Feed sourceChildrenAfter = client.getFeed(sourceChildrenLink.getHref());
+ Assert.assertEquals(0, sourceChildrenAfter.getEntries().size());
+ }
+
+ public void testInvalidSourceFolderId() throws Exception {
+ EntryTree sourceFolder = fixture.createTestTree("sourceTree", 1, 1, null, null);
+ EntryTree destFolder = fixture.createTestTree("destTree", 1, 0, null, null);
+
+ // assert one child in source folder
+ Link sourceChildrenLink = client.getChildrenLink(sourceFolder.entry);
+ Feed sourceChildren = client.getFeed(sourceChildrenLink.getHref());
+ Assert.assertEquals(1, sourceChildren.getEntries().size());
+ sourceFolder.walkChildren(new AssertEntryInFeedVisitor(sourceChildren));
+
+ // assert no children in dest folder
+ Link destChildrenLink = client.getChildrenLink(destFolder.entry);
+ Feed destChildren = client.getFeed(destChildrenLink.getHref());
+ Assert.assertEquals(0, destChildren.getEntries().size());
+
+ // move document
+ CMISObject sourceFolderObject = sourceFolder.entry.getExtension(CMISConstants.OBJECT);
+ String sourceFolderId = "invalid" + sourceFolderObject.getObjectId().getStringValue();
+ Entry document = sourceFolder.children.get(0).entry;
+ client.moveObjectRequest(destChildrenLink.getHref(), document, sourceFolderId, 400);
+ }
+
+}
Propchange: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/test/spec/MoveTest.java
------------------------------------------------------------------------------
svn:eol-style = native