All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.chemistry.opencmis.tck.tests.crud.CreateAndDeletePolicyTest Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */
package org.apache.chemistry.opencmis.tck.tests.crud;

import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.INFO;
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;

import java.util.List;
import java.util.Map;

import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.Policy;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.tck.CmisTestResult;
import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;

/**
 * Simple folder test.
 */
public class CreateAndDeletePolicyTest extends AbstractSessionTest {

    @Override
    public void init(Map parameters) {
        super.init(parameters);
        setName("Create and Delete Policy Test");
        setDescription(
                "Creates a policy object, checks the newly created policy object, applys and removes it from a document, and finally deletes the created policy object.");
    }

    @Override
    public void run(Session session) {

        if (hasPolicies(session)) {
            CmisTestResult f;

            // create a test folder
            Folder testFolder = createTestFolder(session);

            try {
                // create policy object
                Policy policy = createPolicy(session, testFolder, "testPolicy", "TCK Test Policy");

                // create document and apply policy
                Document doc = createDocument(session, testFolder, "testDocument", "Policy Test");

                if (Boolean.TRUE.equals(doc.getType().isControllablePolicy())) {
                    doc.applyPolicy(policy);

                    // check if policy has been applied
                    List policies1 = doc.getPolicies();
                    boolean found1 = false;
                    for (Policy p : policies1) {
                        if (p.getId().equals(policy.getId())) {
                            found1 = true;
                            break;
                        }
                    }

                    f = createResult(FAILURE, "Policy has not been applied to document! Policy Id: " + policy.getId()
                            + ", Doc Id: " + doc.getId());
                    addResult(assertIsTrue(found1, null, f));

                    // check if policy IDs and policy object match
                    f = createResult(WARNING, "Not all policy IDs can be resolved to policy objects.");
                    addResult(assertEquals(doc.getPolicyIds().size(), doc.getPolicies().size(), null, f));

                    // get the policies
                    List policiesData2 = session.getBinding().getPolicyService()
                            .getAppliedPolicies(session.getRepositoryInfo().getId(), doc.getId(), "*", null);

                    boolean found2 = false;
                    if (policiesData2 != null && !policiesData2.isEmpty()) {
                        for (ObjectData p : policiesData2) {
                            if (p.getId().equals(policy.getId())) {
                                found2 = true;
                                break;
                            }
                        }
                    }

                    f = createResult(FAILURE, "Applied policy is not returned by the repository! Policy Id: "
                            + policy.getId() + ", Doc Id: " + doc.getId());
                    addResult(assertIsTrue(found2, null, f));

                    // remove policy
                    doc.removePolicy(policy);

                    // check if policy has been applied
                    List policies3 = doc.getPolicies();
                    if (policies3 != null) {
                        boolean found3 = false;
                        for (Policy p : policies3) {
                            if (p.getId().equals(policy.getId())) {
                                found3 = true;
                                break;
                            }
                        }

                        f = createResult(FAILURE, "Policy has not been removed from document! Policy Id: "
                                + policy.getId() + ", Doc Id: " + doc.getId());
                        addResult(assertIsFalse(found3, null, f));
                    }
                } else {
                    addResult(createResult(INFO, "Document type " + doc.getType().getId()
                            + " does not allow applying and removing policies. Choose a different document type for this test."));
                }

                // delete document
                deleteObject(doc);

                // delete policy object
                deleteObject(policy);

            } finally {
                // delete the test folder
                deleteTestFolder();
            }
        } else {
            addResult(createResult(SKIPPED, "Policies not supported. Test skipped!"));
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy