You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2011/07/31 22:01:13 UTC
svn commit: r1152622 -
/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
Author: fmui
Date: Sun Jul 31 20:01:12 2011
New Revision: 1152622
URL: http://svn.apache.org/viewvc?rev=1152622&view=rev
Log:
TCK: added content checks
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java?rev=1152622&r1=1152621&r2=1152622&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java Sun Jul 31 20:01:12 2011
@@ -25,6 +25,7 @@ import static org.apache.chemistry.openc
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
import java.io.ByteArrayInputStream;
+import java.io.InputStream;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.GregorianCalendar;
@@ -62,6 +63,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
import org.apache.chemistry.opencmis.commons.enums.BindingType;
import org.apache.chemistry.opencmis.commons.enums.Cardinality;
+import org.apache.chemistry.opencmis.commons.enums.ContentStreamAllowed;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
import org.apache.chemistry.opencmis.commons.enums.PropertyType;
import org.apache.chemistry.opencmis.commons.enums.Updatability;
@@ -639,6 +641,9 @@ public abstract class AbstractSessionTes
// check relationships
checkRelationships(session, results, object);
+
+ // check document content
+ checkDocumentContent(session, results, object);
}
CmisTestResultImpl result = createResult(getWorst(results), message);
@@ -671,6 +676,95 @@ public abstract class AbstractSessionTes
}
}
+ private void checkDocumentContent(Session session, List<CmisTestResult> results, CmisObject object) {
+ if (!(object instanceof Document)) {
+ // only documents have content
+ return;
+ }
+
+ CmisTestResult f;
+
+ Document doc = (Document) object;
+ DocumentTypeDefinition type = (DocumentTypeDefinition) doc.getType();
+
+ boolean hasContentProperties = (doc.getContentStreamFileName() != null) || (doc.getContentStreamId() != null)
+ || (doc.getContentStreamLength() > -1) || (doc.getContentStreamMimeType() != null);
+
+ if (hasContentProperties) {
+ if (type.getContentStreamAllowed() == ContentStreamAllowed.NOTALLOWED) {
+ addResult(
+ results,
+ createResult(FAILURE,
+ "Content properties have values but the document type doesn't allow content!"));
+ }
+ } else {
+ if (type.getContentStreamAllowed() == ContentStreamAllowed.REQUIRED) {
+ addResult(results,
+ createResult(FAILURE, "Content properties are not set but the document type demands content!"));
+ }
+ }
+
+ ContentStream contentStream = doc.getContentStream();
+
+ if (contentStream == null) {
+ if (hasContentProperties) {
+ addResult(results,
+ createResult(FAILURE, "Content properties have values but the document has no content!"));
+ }
+
+ if (type.getContentStreamAllowed() == ContentStreamAllowed.REQUIRED) {
+ addResult(results,
+ createResult(FAILURE, "The document type demands content but the document has no content!"));
+ }
+
+ return;
+ }
+
+ if (type.getContentStreamAllowed() == ContentStreamAllowed.NOTALLOWED) {
+ addResult(results, createResult(FAILURE, "Document type doesn't allow content but document has content!"));
+ }
+
+ f = createResult(FAILURE, "Content file names don't match!");
+ addResult(results, assertEquals(doc.getContentStreamFileName(), contentStream.getFileName(), null, f));
+
+ if (doc.getContentStreamLength() > -1 && contentStream.getLength() > -1) {
+ f = createResult(FAILURE, "Content lengths don't match!");
+ addResult(results, assertEquals(doc.getContentStreamLength(), contentStream.getLength(), null, f));
+ }
+ f = createResult(FAILURE, "Content MIME types don't match!");
+ addResult(results, assertEquals(doc.getContentStreamMimeType(), contentStream.getMimeType(), null, f));
+
+ InputStream stream = contentStream.getStream();
+ if (stream == null) {
+ addResult(results, createResult(FAILURE, "Docuemnt has no content stream!"));
+ return;
+ }
+
+ try {
+ long bytes = 0;
+ byte[] buffer = new byte[64 * 1024];
+ int b = stream.read(buffer);
+ while (b > -1) {
+ bytes += b;
+ b = stream.read(buffer);
+ }
+ stream.close();
+
+ if (doc.getContentStreamLength() > -1) {
+ f = createResult(FAILURE,
+ "Content stream length property value doesn't match the actual content length!");
+ addResult(results, assertEquals(doc.getContentStreamLength(), bytes, null, f));
+ }
+
+ if (contentStream.getLength() > -1) {
+ f = createResult(FAILURE, "Content length value doesn't match the actual content length!");
+ addResult(results, assertEquals(contentStream.getLength(), bytes, null, f));
+ }
+ } catch (Exception e) {
+ addResult(results, createResult(FAILURE, "Reading content failed: " + e, e, false));
+ }
+ }
+
protected CmisTestResult checkVersionHistory(Session session, CmisObject object, String[] properties, String message) {
List<CmisTestResult> results = new ArrayList<CmisTestResult>();