This project has retired. For details please refer to its
Attic page.
VersioningSmokeTest xref
1/*2 * Licensed to the Apache Software Foundation (ASF) under one3 * or more contributor license agreements. See the NOTICE file4 * distributed with this work for additional information5 * regarding copyright ownership. The ASF licenses this file6 * to you under the Apache License, Version 2.0 (the7 * "License"); you may not use this file except in compliance8 * with the License. You may obtain a copy of the License at9 *10 * http://www.apache.org/licenses/LICENSE-2.011 *12 * Unless required by applicable law or agreed to in writing,13 * software distributed under the License is distributed on an14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY15 * KIND, either express or implied. See the License for the16 * specific language governing permissions and limitations17 * under the License.18 */19package org.apache.chemistry.opencmis.tck.tests.versioning;
2021importstatic org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
22importstatic org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
23importstatic org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
2425import java.util.List;
26import java.util.Map;
2728import org.apache.chemistry.opencmis.client.api.Document;
29import org.apache.chemistry.opencmis.client.api.Folder;
30import org.apache.chemistry.opencmis.client.api.ObjectId;
31import org.apache.chemistry.opencmis.client.api.Session;
32import org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
33import org.apache.chemistry.opencmis.tck.CmisTestResult;
34import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
3536/**37 * Checked out test.38 */39publicclassVersioningSmokeTestextendsAbstractSessionTest {
4041 @Override
42publicvoid init(Map<String, String> parameters) {
43super.init(parameters);
44 setName("Versioning Smoke Test");
45 setDescription("Creates a document, checks it out, cancels the check out, checks it out again and finally checks it in.");
46 }
4748 @Override
49publicvoid run(Session session) {
50CmisTestResult f;
5152try {
53// create folder and document54 Folder testFolder = createTestFolder(session);
55 Document doc = createDocument(session, testFolder, "versioningtest.txt", "versioning");
56 DocumentTypeDefinition docType = (DocumentTypeDefinition) doc.getType();
5758if (!docType.isVersionable()) {
59 addResult(createResult(SKIPPED, "Test type is not versionable. Test skipped!"));
60 doc.delete(true);
61return;
62 }
6364// check out65 ObjectId pwcId = doc.checkOut();
66 Document pwc = (Document) session.getObject(pwcId, SELECT_ALL_NO_CACHE_OC);
6768 addResult(checkObject(session, pwc, getAllProperties(pwc), "PWC spec compliance - test 1"));
6970 checkCheckedOut(pwc);
7172// cancel checkout73 pwc.cancelCheckOut();
7475 doc.refresh();
76 checkCheckedIn(doc);
7778// check out again79 pwcId = doc.checkOut();
80 pwc = (Document) session.getObject(pwcId, SELECT_ALL_NO_CACHE_OC);
8182 addResult(checkObject(session, pwc, getAllProperties(pwc), "PWC spec compliance - test 2"));
8384 checkCheckedOut(pwc);
8586// check in87 ObjectId newVersionId = pwc.checkIn(true, null, null, "Test Version 2");
88 Document newVersion = (Document) session.getObject(newVersionId, SELECT_ALL_NO_CACHE_OC);
8990 addResult(checkObject(session, newVersion, getAllProperties(newVersion), "New version compliance"));
9192 checkCheckedIn(newVersion);
9394// check version history95 List<Document> versions = newVersion.getAllVersions();
96 f = createResult(FAILURE, "Version series should have 2 versions but has " + versions.size() + "!");
97 addResult(assertEquals(2, versions.size(), null, f));
9899if (versions.size() > 0) {
100 f = createResult(FAILURE,
101"Version history order is incorrect! The first version should be the new version.");
102 addResult(assertEquals(newVersion.getId(), versions.get(0).getId(), null, f));
103 }
104105if (versions.size() > 1) {
106 f = createResult(FAILURE,
107"Version history order is incorrect! The second version should be the origin document.");
108 addResult(assertEquals(doc.getId(), versions.get(1).getId(), null, f));
109 }
110111// remove the document112 deleteObject(doc);
113 } finally {
114 deleteTestFolder();
115 }
116 }
117118privatevoid checkCheckedOut(Document pwc) {
119CmisTestResult f;
120121 f = createResult(FAILURE, "Version series has a PWC but cmis:isVersionSeriesCheckedOut is not TRUE!");
122 addResult(assertIsTrue(pwc.isVersionSeriesCheckedOut(), null, f));
123124if (pwc.getVersionSeriesCheckedOutId() == null) {
125 addResult(createResult(WARNING, "cmis:versionSeriesCheckedOutId is not set!"));
126 } else {
127 f = createResult(FAILURE, "PWC id and cmis:versionSeriesCheckedOutId don't match!");
128 addResult(assertEquals(pwc.getId(), pwc.getVersionSeriesCheckedOutId(), null, f));
129 }
130131 f = createResult(WARNING, "PWC does not have a value for cmis:versionSeriesCheckedOutBy!");
132 addResult(assertStringNotEmpty(pwc.getVersionSeriesCheckedOutBy(), null, f));
133 }
134135privatevoid checkCheckedIn(Document doc) {
136CmisTestResult f;
137138 f = createResult(FAILURE, "Version series is not checked out but cmis:isVersionSeriesCheckedOut is not FALSE!");
139 addResult(assertIsFalse(doc.isVersionSeriesCheckedOut(), null, f));
140141 f = createResult(FAILURE, "Version series is not checked out but cmis:versionSeriesCheckedOutId has a value!");
142 addResult(assertNull(doc.getVersionSeriesCheckedOutId(), null, f));
143144 f = createResult(FAILURE, "Version series is not checked out but cmis:versionSeriesCheckedOutBy has a value!");
145 addResult(assertNull(doc.getVersionSeriesCheckedOutBy(), null, f));
146 }
147 }