/* * (C) Copyright 2014 Nuxeo SA (http://nuxeo.com/) and others. * * Licensed 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. * * Contributors: * Nicolas Chapurlat <nchapurlat@nuxeo.com> */ package org.nuxeo.ecm.core.api.validation; import java.util.Arrays; import javax.inject.Inject; import org.junit.Test; import org.junit.runner.RunWith; import org.nuxeo.common.utils.Path; import org.nuxeo.ecm.core.api.CoreSession; import org.nuxeo.ecm.core.api.DocumentModel; import org.nuxeo.ecm.core.api.impl.DocumentModelImpl; import org.nuxeo.ecm.core.api.validation.DocumentValidationService.Forcing; import org.nuxeo.ecm.core.test.CoreFeature; import org.nuxeo.ecm.core.test.annotations.Granularity; import org.nuxeo.ecm.core.test.annotations.RepositoryConfig; import org.nuxeo.runtime.test.runner.Deploy; import org.nuxeo.runtime.test.runner.Features; import org.nuxeo.runtime.test.runner.FeaturesRunner; // Look at the @Test(expected=...) to understand the tests // for those tests, both saveDocument, createDocument and importDocument validation context are enable by default @RunWith(FeaturesRunner.class) @Deploy({ "org.nuxeo.ecm.core.test.tests:OSGI-INF/test-validation-activation-contrib.xml" }) @Features(CoreFeature.class) @RepositoryConfig(cleanup = Granularity.METHOD) public class TestDocumentValidationActivation { private static final int VALID = 12345; private static final int INVALID = -12345; private static final String SIMPLE_FIELD = "vs:groupCode"; @Inject protected DocumentValidationService validator; @Inject protected CoreSession session; @Test public void testOnCreateDocumentActivationWithoutViolation() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc.setPropertyValue(SIMPLE_FIELD, VALID); doc = session.createDocument(doc); } @Test public void testOnCreateDocumentActivationWithViolationNotDirty() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc = session.createDocument(doc); } @Test(expected = DocumentValidationException.class) public void testOnCreateDocumentActivationWithViolation() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc = session.createDocument(doc); } @Test public void testOnCreateDocumentActivationWithViolationIgnored() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.TURN_OFF); doc = session.createDocument(doc); } @Test(expected = DocumentValidationException.class) public void testOnCreateDocumentActivationWithViolationForced() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.TURN_ON); doc = session.createDocument(doc); } @Test(expected = DocumentValidationException.class) public void testOnCreateDocumentActivationWithViolationNoForcing() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.USUAL); doc = session.createDocument(doc); } @Test public void testOnSaveDocumentActivationWithoutViolation() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc = session.createDocument(doc); doc.setPropertyValue(SIMPLE_FIELD, VALID); doc = session.saveDocument(doc); } @Test public void testOnSaveDocumentActivationWithViolationNotDirty() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc = session.createDocument(doc); doc = session.saveDocument(doc); } @Test(expected = DocumentValidationException.class) public void testOnSaveDocumentActivationWithViolation() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc = session.createDocument(doc); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc = session.saveDocument(doc); } @Test public void testOnSaveDocumentActivationWithViolationIgnored() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc = session.createDocument(doc); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.TURN_OFF); doc = session.saveDocument(doc); } @Test(expected = DocumentValidationException.class) public void testOnSaveDocumentActivationWithViolationForced() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc = session.createDocument(doc); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.TURN_ON); doc = session.saveDocument(doc); } @Test(expected = DocumentValidationException.class) public void testOnSaveDocumentActivationWithViolationNoForcing() { DocumentModel doc; doc = session.createDocumentModel("/", "doc1", "ValidatedUserGroup"); doc = session.createDocument(doc); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.USUAL); doc = session.saveDocument(doc); } @Test public void testOnImportDocumentActivationWithoutViolation() { DocumentModel doc = new DocumentModelImpl(null, "ValidatedUserGroup", "12345", new Path("doc1"), null, null, null, null, null, null, null); doc.setPropertyValue(SIMPLE_FIELD, VALID); session.importDocuments(Arrays.asList(doc)); } @Test(expected = DocumentValidationException.class) public void testOnImportDocumentActivationWithViolation() { DocumentModel doc = new DocumentModelImpl(null, "ValidatedUserGroup", "12345", new Path("doc1"), null, null, null, null, null, null, null); doc.setPropertyValue(SIMPLE_FIELD, INVALID); session.importDocuments(Arrays.asList(doc)); } @Test public void testOnImportDocumentActivationWithViolationIgnored() { DocumentModel doc = new DocumentModelImpl(null, "ValidatedUserGroup", "12345", new Path("doc1"), null, null, null, null, null, null, null); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.TURN_OFF); session.importDocuments(Arrays.asList(doc)); } @Test(expected = DocumentValidationException.class) public void testOnImportDocumentActivationWithViolationForced() { DocumentModel doc = new DocumentModelImpl(null, "ValidatedUserGroup", "12345", new Path("doc1"), null, null, null, null, null, null, null); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.TURN_ON); session.importDocuments(Arrays.asList(doc)); } @Test(expected = DocumentValidationException.class) public void testOnImportDocumentActivationWithViolationNoForcing() { DocumentModel doc = new DocumentModelImpl(null, "ValidatedUserGroup", "12345", new Path("doc1"), null, null, null, null, null, null, null); doc.setPropertyValue(SIMPLE_FIELD, INVALID); doc.putContextData(DocumentValidationService.CTX_MAP_KEY, Forcing.USUAL); session.importDocuments(Arrays.asList(doc)); } }