Search in sources :

Example 56 with CmisTestResult

use of org.apache.chemistry.opencmis.tck.CmisTestResult in project copper-cms by PogeyanOSS.

the class AbstractSessionTest method checkRenditions.

protected CmisTestResult checkRenditions(Session session, CmisObject object, String message) {
    List<CmisTestResult> results = new ArrayList<CmisTestResult>();
    CmisTestResult f;
    if (object.getRenditions() != null) {
        for (Rendition rend : object.getRenditions()) {
            f = createResult(FAILURE, "A rendition in the list of renditions is null!");
            addResult(results, assertNotNull(rend, null, f));
            if (rend != null) {
                f = createResult(FAILURE, "A rendition has an empty stream ID!");
                addResult(results, assertStringNotEmpty(rend.getStreamId(), null, f));
                f = createResult(FAILURE, "A rendition has an empty kind! Stream ID: " + rend.getStreamId());
                addResult(results, assertStringNotEmpty(rend.getKind(), null, f));
                f = createResult(FAILURE, "A rendition has an empty MIME type! Stream ID: " + rend.getStreamId());
                addResult(results, assertStringNotEmpty(rend.getMimeType(), null, f));
                if ("cmis:thumbnail".equals(rend.getKind())) {
                    f = createResult(WARNING, "A rendition is of kind 'cmis:thumbnail' but the height is not set or has an invalid value! Stream ID: " + rend.getStreamId());
                    addResult(results, assertIsTrue(rend.getHeight() > 0, null, f));
                    f = createResult(WARNING, "A rendition is of kind 'cmis:thumbnail' but the width is not set or has an invalid value! Stream ID: " + rend.getStreamId());
                    addResult(results, assertIsTrue(rend.getWidth() > 0, null, f));
                }
                // check the content
                ContentStream contentStream = rend.getContentStream();
                f = createResult(FAILURE, "A rendition has no content stream! Stream ID: " + rend.getStreamId());
                addResult(results, assertNotNull(contentStream, null, f));
                if (contentStream != null) {
                    InputStream stream = contentStream.getStream();
                    f = createResult(FAILURE, "A rendition has no stream! Stream ID: " + rend.getStreamId());
                    addResult(results, assertNotNull(stream, null, f));
                    if (stream != null) {
                        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();
                            // check content length
                            if (rend.getLength() > -1) {
                                f = createResult(FAILURE, "Rendition content stream length value doesn't match the actual content length!");
                                addResult(results, assertEquals(rend.getLength(), bytes, null, f));
                            }
                        } catch (Exception e) {
                            addResult(results, createResult(FAILURE, "Reading content failed: " + e, e, false));
                        } finally {
                            IOUtils.closeQuietly(stream);
                        }
                    }
                }
            }
        }
    }
    CmisTestResultImpl result = createResult(getWorst(results), message);
    result.getChildren().addAll(results);
    return result.getStatus().getLevel() <= OK.getLevel() ? null : result;
}
Also used : ContentStream(org.apache.chemistry.opencmis.commons.data.ContentStream) Rendition(org.apache.chemistry.opencmis.client.api.Rendition) BufferedInputStream(java.io.BufferedInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) CmisTestResult(org.apache.chemistry.opencmis.tck.CmisTestResult) ArrayList(java.util.ArrayList) CmisObjectNotFoundException(org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException) CmisBaseException(org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException) CmisNotSupportedException(org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException) IOException(java.io.IOException) CmisInvalidArgumentException(org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException)

Example 57 with CmisTestResult

use of org.apache.chemistry.opencmis.tck.CmisTestResult in project copper-cms by PogeyanOSS.

the class AbstractSessionTest method checkObject.

protected CmisTestResult checkObject(Session session, CmisObject object, String[] properties, String message) {
    List<CmisTestResult> results = new ArrayList<CmisTestResult>();
    CmisTestResult f;
    f = createResult(FAILURE, "Object is null!", true);
    addResult(results, assertNotNull(object, null, f));
    if (object != null) {
        f = createResult(FAILURE, "Object ID is not set!");
        addResult(results, assertStringNotEmpty(object.getId(), null, f));
        GregorianCalendar creationDate = null;
        GregorianCalendar lastModificationDate = null;
        // properties
        for (String propId : properties) {
            Property<?> prop = object.getProperty(propId);
            // values of non-spec properties are not checked here
            PropertyCheckEnum propertyCheck = PropertyCheckEnum.NO_VALUE_CHECK;
            // known properties that are strings and must be set
            if (PropertyIds.OBJECT_ID.equals(propId) || PropertyIds.BASE_TYPE_ID.equals(propId) || PropertyIds.OBJECT_TYPE_ID.equals(propId) || PropertyIds.PATH.equals(propId) || PropertyIds.SOURCE_ID.equals(propId) || PropertyIds.TARGET_ID.equals(propId)) {
                propertyCheck = PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY;
            }
            if (!(object instanceof Relationship)) {
                if (PropertyIds.CREATED_BY.equals(propId) || PropertyIds.LAST_MODIFIED_BY.equals(propId)) {
                    propertyCheck = PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY;
                }
            }
            // known properties that are strings and should be set
            if (PropertyIds.NAME.equals(propId) || PropertyIds.POLICY_TEXT.equals(propId)) {
                propertyCheck = PropertyCheckEnum.STRING_SHOULD_NOT_BE_EMPTY;
            }
            // known properties that are not strings and must be set
            if (PropertyIds.IS_IMMUTABLE.equals(propId)) {
                propertyCheck = PropertyCheckEnum.MUST_BE_SET;
            }
            if (!(object instanceof Relationship)) {
                if (PropertyIds.CREATION_DATE.equals(propId) || PropertyIds.LAST_MODIFICATION_DATE.equals(propId)) {
                    propertyCheck = PropertyCheckEnum.MUST_BE_SET;
                }
            }
            // special case: parent
            if (PropertyIds.PARENT_ID.equals(propId)) {
                if (object instanceof Folder) {
                    if (((Folder) object).isRootFolder()) {
                        propertyCheck = PropertyCheckEnum.MUST_NOT_BE_SET;
                    } else {
                        propertyCheck = PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY;
                    }
                } else {
                    addResult(results, createResult(FAILURE, "Property " + PropertyIds.PARENT_ID + " is only defined for folders!"));
                }
            }
            // special case: path
            if (PropertyIds.PATH.equals(propId) && prop.getFirstValue() != null) {
                Object path = prop.getFirstValue();
                if (path instanceof String) {
                    f = createResult(FAILURE, "Path does not start with '/': " + path);
                    addResult(results, assertIsTrue(((String) path).length() > 0 && ((String) path).charAt(0) == '/', null, f));
                } else {
                    addResult(results, createResult(FAILURE, "Property " + PropertyIds.PATH + " is not a string!"));
                }
            }
            // check property
            addResult(results, checkProperty(prop, "Property " + propId, propertyCheck));
            // catch creationDate and lastModificationDate
            if (PropertyIds.CREATION_DATE.equals(propId)) {
                if (prop != null) {
                    creationDate = (GregorianCalendar) prop.getFirstValue();
                }
            } else if (PropertyIds.LAST_MODIFICATION_DATE.equals(propId)) {
                if (prop != null) {
                    lastModificationDate = (GregorianCalendar) prop.getFirstValue();
                }
            }
        }
        // check creationDate <= lastModificationDate
        if (creationDate != null && lastModificationDate != null) {
            f = createResult(FAILURE, "Last modification date precedes creation date!");
            addResult(results, assertIsTrue(creationDate.getTimeInMillis() <= lastModificationDate.getTimeInMillis(), null, f));
            f = createResult(WARNING, "Creation date and last modification date have different timezones.");
            addResult(assertIsTrue(creationDate.getTimeZone().hasSameRules(lastModificationDate.getTimeZone()), null, f));
        }
        // allowable actions
        if ((object.getAllowableActions() == null) || (object.getAllowableActions().getAllowableActions() == null)) {
            addResult(results, createResult(FAILURE, "Object has no allowable actions!"));
        } else {
            Set<Action> actions = object.getAllowableActions().getAllowableActions();
            f = createResult(FAILURE, "Object has no CAN_GET_PROPERTIES allowable action!");
            addResult(results, assertAllowableAction(object, Action.CAN_GET_PROPERTIES, null, f));
            addResult(results, assertIsTrue(object.hasAllowableAction(Action.CAN_GET_PROPERTIES), null, f));
            if (object instanceof Document) {
                if (actions.contains(Action.CAN_CHECK_OUT) && actions.contains(Action.CAN_CHECK_IN)) {
                    addResult(results, createResult(FAILURE, "Document object has CAN_CHECK_OUT and CAN_CHECK_IN allowable actions!"));
                }
                if (actions.contains(Action.CAN_CHECK_OUT) && actions.contains(Action.CAN_CANCEL_CHECK_OUT)) {
                    addResult(results, createResult(FAILURE, "Document object has CAN_CHECK_OUT and CAN_CANCEL_CHECK_OUT allowable actions!"));
                }
                Document doc = (Document) object;
                DocumentTypeDefinition docType = (DocumentTypeDefinition) doc.getType();
                if (doc.isVersionSeriesCheckedOut() != null) {
                    if (doc.isVersionSeriesCheckedOut()) {
                        f = createResult(WARNING, "Document is checked out and has CAN_CHECK_OUT allowable action!");
                        addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_OUT, null, f));
                        if (doc.getVersionSeriesCheckedOutId() == null) {
                            addResult(results, createResult(WARNING, "Document is checked out and but the property cmis:versionSeriesCheckedOutId is not set!"));
                        } else {
                            if (doc.getVersionSeriesCheckedOutId().equals(object.getId())) {
                                // object is PWC
                                f = createResult(FAILURE, "PWC doesn't have CAN_CHECK_IN allowable action!");
                                addResult(results, assertAllowableAction(object, Action.CAN_CHECK_IN, null, f));
                                f = createResult(FAILURE, "PWC doesn't have CAN_CANCEL_CHECK_OUT allowable action!");
                                addResult(results, assertAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, null, f));
                            } else {
                                // object is not PWC
                                f = createResult(WARNING, "Non-PWC has CAN_CHECK_IN allowable action!");
                                addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_IN, null, f));
                                f = createResult(WARNING, "Non-PWC has CAN_CANCEL_CHECK_OUT allowable action!");
                                addResult(results, assertNotAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, null, f));
                            }
                        }
                    } else {
                        f = createResult(FAILURE, "Document is not checked out and has CAN_CHECK_IN allowable action!");
                        addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_IN, null, f));
                        f = createResult(FAILURE, "Document is not checked out and has CAN_CANCEL_CHECK_OUT allowable action!");
                        addResult(results, assertNotAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, null, f));
                        // versionable check
                        if (docType.isVersionable()) {
                            // 
                            if (Boolean.TRUE.equals(doc.isLatestVersion())) {
                                f = createResult(WARNING, "Document is versionable and not checked but has no CAN_CHECK_OUT allowable action!");
                                addResult(results, assertAllowableAction(object, Action.CAN_CHECK_OUT, null, f));
                            }
                        } else {
                            f = createResult(FAILURE, "Document is not versionable but has CAN_CHECK_OUT allowable action!");
                            addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_OUT, null, f));
                        }
                    }
                } else {
                    addResult(results, createResult(WARNING, "Property cmis:isVersionSeriesCheckedOut is not set!"));
                }
                // immutable check
                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!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_IN, null, f));
                f = createResult(FAILURE, "Non-Document object has CAN_CHECK_OUT allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_OUT, null, f));
                f = createResult(FAILURE, "Non-Document object has CAN_CANCEL_CHECK_OUT allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, null, f));
                f = createResult(FAILURE, "Non-Document object has CAN_GET_CONTENT_STREAM allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_GET_CONTENT_STREAM, null, f));
                f = createResult(FAILURE, "Non-Document object has CAN_DELETE_CONTENT_STREAM allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_CONTENT_STREAM, null, f));
                f = createResult(FAILURE, "Non-Document object has CAN_GET_ALL_VERSIONS allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_GET_ALL_VERSIONS, null, f));
            }
            if (object instanceof Folder) {
                Folder folder = (Folder) object;
                if (folder.isRootFolder()) {
                    f = createResult(FAILURE, "Root folder has CAN_DELETE_OBJECT allowable action!");
                    addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_OBJECT, null, f));
                    f = createResult(FAILURE, "Root folder has CAN_GET_FOLDER_PARENT allowable action!");
                    addResult(results, assertNotAllowableAction(object, Action.CAN_GET_FOLDER_PARENT, null, f));
                    f = createResult(FAILURE, "Root folder has CAN_MOVE_OBJECT allowable action!");
                    addResult(results, assertNotAllowableAction(object, Action.CAN_MOVE_OBJECT, null, f));
                }
            } else {
                f = createResult(FAILURE, "Non-Folder object has CAN_GET_DESCENDANTS allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_GET_DESCENDANTS, null, f));
                f = createResult(FAILURE, "Non-Folder object has CAN_GET_FOLDER_PARENT allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_GET_FOLDER_PARENT, null, f));
                f = createResult(FAILURE, "Non-Folder object has CAN_GET_CHILDREN allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_GET_CHILDREN, null, f));
                f = createResult(FAILURE, "Non-Folder object has CAN_DELETE_TREE allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_TREE, null, f));
                f = createResult(FAILURE, "Non-Folder object has CAN_GET_FOLDER_PARENT allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_GET_FOLDER_PARENT, null, f));
                f = createResult(FAILURE, "Non-Folder object has CAN_CREATE_DOCUMENT allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_CREATE_DOCUMENT, null, f));
                f = createResult(FAILURE, "Non-Folder object has CAN_CREATE_FOLDER allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_CREATE_FOLDER, null, f));
            }
            if (!(object instanceof FileableCmisObject) || (object instanceof Folder)) {
                f = createResult(FAILURE, "Non-Filable object or folder has CAN_ADD_OBJECT_TO_FOLDER allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_ADD_OBJECT_TO_FOLDER, null, f));
                f = createResult(FAILURE, "Non-Filable object or folder has CAN_REMOVE_OBJECT_FROM_FOLDER allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_REMOVE_OBJECT_FROM_FOLDER, null, f));
            }
            if (!(object instanceof FileableCmisObject)) {
                f = createResult(FAILURE, "Non-Fileable object has CAN_MOVE_OBJECT allowable action!");
                addResult(results, assertNotAllowableAction(object, Action.CAN_MOVE_OBJECT, null, f));
            }
            // get allowable actions again
            AllowableActions allowableActions = session.getBinding().getObjectService().getAllowableActions(session.getRepositoryInfo().getId(), object.getId(), null);
            if (allowableActions.getAllowableActions() == null) {
                addResult(results, createResult(FAILURE, "getAllowableActions() didn't returned allowable actions!"));
            } else {
                f = createResult(FAILURE, "Object allowable actions don't match the allowable actions returned by getAllowableActions()!");
                addResult(results, assertEqualSet(object.getAllowableActions().getAllowableActions(), allowableActions.getAllowableActions(), null, f));
            }
        }
        // check ACL
        if (object.getAcl() != null && object.getAcl().getAces() != null) {
            addResult(results, checkACL(session, object.getAcl(), true, "ACL"));
        }
        // check policies
        if (hasPolicies(session)) {
            try {
                List<ObjectData> appliedPolicies = session.getBinding().getPolicyService().getAppliedPolicies(session.getRepositoryInfo().getId(), object.getId(), "*", null);
                if (appliedPolicies == null) {
                    appliedPolicies = Collections.emptyList();
                }
                List<Policy> objectPolicies = object.getPolicies();
                if (objectPolicies == null) {
                    objectPolicies = Collections.emptyList();
                }
                f = createResult(FAILURE, "The number of policies returned by getAppliedPolicies() and the number of object policies don't match!");
                addResult(results, assertEquals(appliedPolicies.size(), objectPolicies.size(), null, f));
            } catch (CmisNotSupportedException e) {
                addResult(results, createResult(WARNING, "getAppliedPolicies() not supported for object: " + object.getId()));
            }
        }
        // check relationships
        checkRelationships(session, results, object);
        // check document content
        checkDocumentContent(session, results, object);
        // check renditions
        if (object.getRenditions() != null) {
            addResult(results, checkRenditions(session, object, "Rendition check"));
        }
        // check allowed child object type ids
        if (object instanceof Folder) {
            List<String> otids = object.getPropertyValue(PropertyIds.ALLOWED_CHILD_OBJECT_TYPE_IDS);
            if (otids != null) {
                for (String otid : otids) {
                    try {
                        session.getTypeDefinition(otid);
                    } catch (CmisBaseException e) {
                        addResult(results, createResult(FAILURE, "The cmis:allowedChildObjectTypeIds property contains the type ID '" + otid + "' but the type doesn't exists. Folder ID: " + object.getId()));
                    }
                }
            }
        }
        // check path
        if (object instanceof FileableCmisObject) {
            List<String> paths = ((FileableCmisObject) object).getPaths();
            if (object instanceof Folder) {
                f = createResult(FAILURE, "Folder does not have excatly one path! This is an OpenCMIS bug!");
                addResult(results, assertEquals(1, paths.size(), null, f));
            } else {
                if (Boolean.FALSE.equals(session.getRepositoryInfo().getCapabilities().isMultifilingSupported())) {
                    f = createResult(FAILURE, "Repository does not support multi-filing, but the object has more than one parent!");
                    addResult(results, assertIsTrue(paths.size() < 2, null, f));
                }
            }
        }
    }
    CmisTestResultImpl result = createResult(getWorst(results), message);
    result.getChildren().addAll(results);
    return result.getStatus().getLevel() <= OK.getLevel() ? null : result;
}
Also used : Policy(org.apache.chemistry.opencmis.client.api.Policy) CmisNotSupportedException(org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException) Action(org.apache.chemistry.opencmis.commons.enums.Action) DocumentTypeDefinition(org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition) ArrayList(java.util.ArrayList) GregorianCalendar(java.util.GregorianCalendar) ObjectData(org.apache.chemistry.opencmis.commons.data.ObjectData) Folder(org.apache.chemistry.opencmis.client.api.Folder) Document(org.apache.chemistry.opencmis.client.api.Document) CmisBaseException(org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException) CmisTestResult(org.apache.chemistry.opencmis.tck.CmisTestResult) Relationship(org.apache.chemistry.opencmis.client.api.Relationship) AllowableActions(org.apache.chemistry.opencmis.commons.data.AllowableActions) FileableCmisObject(org.apache.chemistry.opencmis.client.api.FileableCmisObject) CmisObject(org.apache.chemistry.opencmis.client.api.CmisObject) FileableCmisObject(org.apache.chemistry.opencmis.client.api.FileableCmisObject)

Example 58 with CmisTestResult

use of org.apache.chemistry.opencmis.tck.CmisTestResult in project copper-cms by PogeyanOSS.

the class AbstractSessionTest method assertEquals.

protected CmisTestResult assertEquals(Acl expected, Acl 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 ACL is null, but actual ACL is not!");
        addResultChild(failure, f);
        return failure;
    }
    if (actual == null) {
        f = createResult(FAILURE, "Actual ACL is null, but expected ACL is not!");
        addResultChild(failure, f);
        return failure;
    }
    f = createResult(FAILURE, "ACEs don't match!");
    addResult(results, assertEqualAceLists(expected.getAces(), actual.getAces(), null, f));
    f = createResult(FAILURE, "Exact flags dont't match!");
    addResult(results, assertEquals(expected.isExact(), actual.isExact(), 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;
    }
}
Also used : CmisTestResult(org.apache.chemistry.opencmis.tck.CmisTestResult) ArrayList(java.util.ArrayList)

Example 59 with CmisTestResult

use of org.apache.chemistry.opencmis.tck.CmisTestResult in project copper-cms by PogeyanOSS.

the class AbstractSessionTest method assertEquals.

protected CmisTestResult assertEquals(TypeDefinition expected, TypeDefinition 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 type defintion is null, but actual type defintion is not!");
        addResultChild(failure, f);
        return failure;
    }
    if (actual == null) {
        f = createResult(FAILURE, "Actual type defintion is null, but expected type defintion is not!");
        addResultChild(failure, f);
        return failure;
    }
    f = createResult(FAILURE, "Type IDs don't match!");
    addResult(results, assertEquals(expected.getId(), actual.getId(), null, f));
    f = createResult(FAILURE, "Base type IDs don't match!");
    addResult(results, assertEquals(expected.getBaseTypeId(), actual.getBaseTypeId(), null, f));
    f = createResult(FAILURE, "Parent type IDs don't match!");
    addResult(results, assertEquals(expected.getParentTypeId(), actual.getParentTypeId(), null, f));
    f = createResult(FAILURE, "Query names don't match!");
    addResult(results, assertEquals(expected.getQueryName(), actual.getQueryName(), null, f));
    f = createResult(FAILURE, "Local names don't match!");
    addResult(results, assertEquals(expected.getLocalName(), actual.getLocalName(), null, f));
    f = createResult(FAILURE, "Local namespaces don't match!");
    addResult(results, assertEquals(expected.getLocalNamespace(), actual.getLocalNamespace(), null, f));
    f = createResult(FAILURE, "Display names don't match!");
    addResult(results, assertEquals(expected.getDisplayName(), actual.getDisplayName(), null, f));
    f = createResult(FAILURE, "Descriptions don't match!");
    addResult(results, assertEquals(expected.getDescription(), actual.getDescription(), null, f));
    f = createResult(FAILURE, "Controllable ACl flags don't match!");
    addResult(results, assertEquals(expected.isControllableAcl(), actual.isControllableAcl(), null, f));
    f = createResult(FAILURE, "Controllable Policy flags don't match!");
    addResult(results, assertEquals(expected.isControllablePolicy(), actual.isControllablePolicy(), null, f));
    f = createResult(FAILURE, "Creatable flags don't match!");
    addResult(results, assertEquals(expected.isCreatable(), actual.isCreatable(), null, f));
    f = createResult(FAILURE, "Fileable flags don't match!");
    addResult(results, assertEquals(expected.isFileable(), actual.isFileable(), null, f));
    f = createResult(FAILURE, "Fulltext indexed flags don't match!");
    addResult(results, assertEquals(expected.isFulltextIndexed(), actual.isFulltextIndexed(), null, f));
    f = createResult(FAILURE, "Queryable flags don't match!");
    addResult(results, assertEquals(expected.isQueryable(), actual.isQueryable(), null, f));
    f = createResult(FAILURE, "Included in supertype query flags don't match!");
    addResult(results, assertEquals(expected.isIncludedInSupertypeQuery(), actual.isIncludedInSupertypeQuery(), null, f));
    if (expected.getTypeMutability() != null && actual.getTypeMutability() != null) {
        f = createResult(FAILURE, "Type Mutability: Create flags don't match!");
        addResult(results, assertEquals(expected.getTypeMutability().canCreate(), actual.getTypeMutability().canCreate(), null, f));
        f = createResult(FAILURE, "Type Mutability: update flags don't match!");
        addResult(results, assertEquals(expected.getTypeMutability().canUpdate(), actual.getTypeMutability().canUpdate(), null, f));
        f = createResult(FAILURE, "Type Mutability: delete flags don't match!");
        addResult(results, assertEquals(expected.getTypeMutability().canDelete(), actual.getTypeMutability().canDelete(), null, f));
    } else {
        f = createResult(FAILURE, "Type Mutability infos don't match!");
        addResult(results, assertEquals(expected.getTypeMutability(), actual.getTypeMutability(), null, f));
    }
    if ((expected.getPropertyDefinitions() != null) && (actual.getPropertyDefinitions() != null)) {
        Map<String, PropertyDefinition<?>> epd = expected.getPropertyDefinitions();
        Map<String, PropertyDefinition<?>> apd = actual.getPropertyDefinitions();
        f = createResult(FAILURE, "Different number of property defintions!");
        addResult(results, assertEquals(epd.size(), apd.size(), null, f));
        for (PropertyDefinition<?> pd : epd.values()) {
            f = createResult(FAILURE, "Property definition mismatch: " + pd.getId());
            addResult(results, assertEquals(pd, apd.get(pd.getId()), 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;
    }
}
Also used : CmisTestResult(org.apache.chemistry.opencmis.tck.CmisTestResult) ArrayList(java.util.ArrayList) PropertyDefinition(org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition)

Example 60 with CmisTestResult

use of org.apache.chemistry.opencmis.tck.CmisTestResult in project copper-cms by PogeyanOSS.

the class AbstractSessionTest method assertEqualRenditionLists.

protected CmisTestResult assertEqualRenditionLists(List<Rendition> expected, List<Rendition> actual, CmisTestResult success, CmisTestResult failure) {
    List<CmisTestResult> results = new ArrayList<CmisTestResult>();
    CmisTestResult f;
    if (expected == null && actual == null) {
        return success;
    }
    if (expected == null) {
        return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Expected rendition list is null!"));
    }
    if (actual == null) {
        return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Actual rendition list is null!"));
    }
    if (expected.size() != actual.size()) {
        addResult(results, createResult(CmisTestResultStatus.INFO, "Rendition list sizes don't match! expected: " + expected.size() + " / actual: " + actual.size()));
    } else {
        for (int i = 0; i < expected.size(); i++) {
            f = createResult(FAILURE, "Renditions at position " + i + "  dont't match!");
            addResult(results, assertEquals(expected.get(i), actual.get(i), 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;
    }
}
Also used : CmisTestResult(org.apache.chemistry.opencmis.tck.CmisTestResult) ArrayList(java.util.ArrayList)

Aggregations

CmisTestResult (org.apache.chemistry.opencmis.tck.CmisTestResult)82 ArrayList (java.util.ArrayList)33 Folder (org.apache.chemistry.opencmis.client.api.Folder)33 Document (org.apache.chemistry.opencmis.client.api.Document)32 HashMap (java.util.HashMap)19 CmisObject (org.apache.chemistry.opencmis.client.api.CmisObject)18 DocumentTypeDefinition (org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition)14 CmisBaseException (org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException)14 CmisObjectNotFoundException (org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException)14 ObjectId (org.apache.chemistry.opencmis.client.api.ObjectId)12 ContentStream (org.apache.chemistry.opencmis.commons.data.ContentStream)11 FileableCmisObject (org.apache.chemistry.opencmis.client.api.FileableCmisObject)8 ObjectType (org.apache.chemistry.opencmis.client.api.ObjectType)8 CmisInvalidArgumentException (org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException)8 ByteArrayInputStream (java.io.ByteArrayInputStream)7 IOException (java.io.IOException)6 HashSet (java.util.HashSet)6 CmisNotSupportedException (org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException)6 OperationContext (org.apache.chemistry.opencmis.client.api.OperationContext)5 TypeDefinition (org.apache.chemistry.opencmis.commons.definitions.TypeDefinition)4