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/08/06 17:57:21 UTC
svn commit: r1154534 - in
/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck:
impl/AbstractSessionTest.java tests/query/QuerySmokeTest.java
Author: fmui
Date: Sat Aug 6 15:57:21 2011
New Revision: 1154534
URL: http://svn.apache.org/viewvc?rev=1154534&view=rev
Log:
TCK: added a few more checks
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QuerySmokeTest.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=1154534&r1=1154533&r2=1154534&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 Sat Aug 6 15:57:21 2011
@@ -500,7 +500,7 @@ public abstract class AbstractSessionTes
propertyCheck = PropertyCheckEnum.MUST_BE_SET;
}
- // special cases
+ // special case: parent
if (PropertyIds.PARENT_ID.equals(propId)) {
if (object instanceof Folder) {
if (((Folder) object).isRootFolder()) {
@@ -598,7 +598,16 @@ public abstract class AbstractSessionTes
addResult(results, assertNotAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, null, f));
}
} else {
- addResult(results, createResult(FAILURE, "Property cmis:isVersionSeriesCheckedOut is not set!"));
+ addResult(results, createResult(WARNING, "Property cmis:isVersionSeriesCheckedOut is not set!"));
+ }
+
+ if (Boolean.TRUE.equals(doc.isImmutable())) {
+ f = createResult(FAILURE,
+ "Document is immutable and has CAN_UPDATE_PROPERTIES allowable action!");
+ addResult(results, assertNotAllowableAction(object, Action.CAN_UPDATE_PROPERTIES, null, f));
+
+ f = createResult(FAILURE, "Document is immutable and has CAN_DELETE_OBJECT allowable action!");
+ addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_OBJECT, null, f));
}
} else {
f = createResult(FAILURE, "Non-Document object has CAN_CHECK_IN allowable action!");
@@ -732,6 +741,7 @@ public abstract class AbstractSessionTes
Document doc = (Document) object;
DocumentTypeDefinition type = (DocumentTypeDefinition) doc.getType();
+ // check ContentStreamAllowed flag
boolean hasContentProperties = (doc.getContentStreamFileName() != null) || (doc.getContentStreamId() != null)
|| (doc.getContentStreamLength() > -1) || (doc.getContentStreamMimeType() != null);
@@ -749,6 +759,7 @@ public abstract class AbstractSessionTes
}
}
+ // get the content stream
ContentStream contentStream = doc.getContentStream();
if (contentStream == null) {
@@ -769,6 +780,7 @@ public abstract class AbstractSessionTes
addResult(results, createResult(FAILURE, "Document type doesn't allow content but document has content!"));
}
+ // file name check
f = createResult(FAILURE, "Content file names don't match!");
addResult(results, assertEquals(doc.getContentStreamFileName(), contentStream.getFileName(), null, f));
@@ -776,9 +788,20 @@ public abstract class AbstractSessionTes
f = createResult(FAILURE, "Content lengths don't match!");
addResult(results, assertEquals(doc.getContentStreamLength(), contentStream.getLength(), null, f));
}
+
+ // MIME type check
f = createResult(FAILURE, "Content MIME types don't match!");
addResult(results, assertEquals(doc.getContentStreamMimeType(), contentStream.getMimeType(), null, f));
+ if (contentStream.getMimeType() != null) {
+ f = createResult(FAILURE, "Content MIME types is invalid: " + contentStream.getMimeType());
+ addResult(
+ results,
+ assertIsTrue(contentStream.getMimeType().length() > 2
+ && contentStream.getMimeType().indexOf('/') > 0, null, f));
+ }
+
+ // check stream
InputStream stream = contentStream.getStream();
if (stream == null) {
addResult(results, createResult(FAILURE, "Docuemnt has no content stream!"));
@@ -795,6 +818,7 @@ public abstract class AbstractSessionTes
}
stream.close();
+ // check content length
if (doc.getContentStreamLength() > -1) {
f = createResult(FAILURE,
"Content stream length property value doesn't match the actual content length!");
@@ -949,15 +973,26 @@ public abstract class AbstractSessionTes
}
// check checked out
- boolean checkedOut = Boolean.TRUE.equals(doc.isVersionSeriesCheckedOut());
- if (checkedOut) {
- f = createResult(FAILURE, "Version series is marked as checked out but the PWC id is not set! Id: "
- + version.getId());
+ if (Boolean.TRUE.equals(doc.isVersionSeriesCheckedOut())) {
+ f = createResult(WARNING,
+ "Version series is marked as checked out but cmis:versionSeriesCheckedOutId is not set! Id: "
+ + version.getId());
addResult(results, assertStringNotEmpty(doc.getVersionSeriesCheckedOutId(), null, f));
- } else {
- f = createResult(FAILURE, "Version series is not marked as checked out but the PWC id is set! Id: "
- + version.getId());
+
+ f = createResult(WARNING,
+ "Version series is marked as checked out but cmis:versionSeriesCheckedOutBy is not set! Id: "
+ + version.getId());
+ addResult(results, assertStringNotEmpty(doc.getVersionSeriesCheckedOutBy(), null, f));
+ } else if (Boolean.FALSE.equals(doc.isVersionSeriesCheckedOut())) {
+ f = createResult(FAILURE,
+ "Version series is not marked as checked out but cmis:versionSeriesCheckedOutId is set! Id: "
+ + version.getId());
addResult(results, assertNull(doc.getVersionSeriesCheckedOutId(), null, f));
+
+ f = createResult(FAILURE,
+ "Version series is not marked as checked out but cmis:versionSeriesCheckedOutIdBy is set! Id: "
+ + version.getId());
+ addResult(results, assertNull(doc.getVersionSeriesCheckedOutBy(), null, f));
}
// found origin object?
@@ -1892,7 +1927,9 @@ public abstract class AbstractSessionTes
}
}
- // TODO: compare allowable actions
+ f = createResult(FAILURE, "Allowable actions don't match!");
+ addResult(results, assertEquals(expected.getAllowableActions(), actual.getAllowableActions(), null, f));
+
// TODO: compare ACLs
// TODO: compare renditions
// TODO: compare policies
@@ -1959,6 +1996,49 @@ public abstract class AbstractSessionTes
}
}
+ protected CmisTestResult assertEquals(AllowableActions expected, AllowableActions actual, CmisTestResult success,
+ CmisTestResult failure) {
+
+ List<CmisTestResult> results = new ArrayList<CmisTestResult>();
+
+ CmisTestResult f;
+
+ if ((expected == null) && (actual == null)) {
+ return success;
+ }
+
+ if (expected == null) {
+ f = createResult(FAILURE, "Expected allowable actions are null, but actual allowable actions are not!");
+ addResultChild(failure, f);
+
+ return failure;
+ }
+
+ if (actual == null) {
+ f = createResult(FAILURE, "Actual allowable actions are null, but expected allowable actions are not!");
+ addResultChild(failure, f);
+
+ return failure;
+ }
+
+ f = createResult(FAILURE, "Allowable action sets don't match!");
+ addResult(results, assertEqualSet(expected.getAllowableActions(), actual.getAllowableActions(), null, f));
+
+ if (getWorst(results).getLevel() <= OK.getLevel()) {
+ for (CmisTestResult result : results) {
+ addResultChild(success, result);
+ }
+
+ return success;
+ } else {
+ for (CmisTestResult result : results) {
+ addResultChild(failure, result);
+ }
+
+ return failure;
+ }
+ }
+
// --- helpers ---
protected void addResult(List<CmisTestResult> results, CmisTestResult result) {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QuerySmokeTest.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/tests/query/QuerySmokeTest.java?rev=1154534&r1=1154533&r2=1154534&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QuerySmokeTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QuerySmokeTest.java Sat Aug 6 15:57:21 2011
@@ -28,6 +28,8 @@ import java.util.Map;
import org.apache.chemistry.opencmis.client.api.ItemIterable;
import org.apache.chemistry.opencmis.client.api.QueryResult;
import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.data.PropertyData;
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
@@ -90,8 +92,19 @@ public class QuerySmokeTest extends Abst
continue;
}
- f = createResult(FAILURE, "QUery property not result set: " + propDef.getQueryName());
- addResult(results, assertNotNull(qr.getPropertyByQueryName(propDef.getQueryName()), null, f));
+ PropertyData<?> pd = qr.getPropertyByQueryName(propDef.getQueryName());
+
+ if (pd == null) {
+ addResult(results,
+ createResult(FAILURE, "Query property not in result set: " + propDef.getQueryName()));
+ } else {
+ if (PropertyIds.OBJECT_ID.equals(propDef.getId())
+ || PropertyIds.OBJECT_TYPE_ID.equals(propDef.getId())
+ || PropertyIds.BASE_TYPE_ID.equals(propDef.getId())) {
+ f = createResult(FAILURE, "Query property must not be empty: " + propDef.getQueryName());
+ addResult(results, assertStringNotEmpty((String) pd.getFirstValue(), null, f));
+ }
+ }
}
}