/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community 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://opensource.org/licenses/ecl2.txt * * 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.opencastproject.workflow.handler.workflow; import org.opencastproject.mediapackage.MediaPackage; import org.opencastproject.mediapackage.MediaPackageBuilder; import org.opencastproject.mediapackage.MediaPackageBuilderFactory; import org.opencastproject.workflow.api.WorkflowInstanceImpl; import org.opencastproject.workflow.api.WorkflowOperationInstance; import org.opencastproject.workflow.api.WorkflowOperationInstance.OperationState; import org.opencastproject.workflow.api.WorkflowOperationInstanceImpl; import org.opencastproject.workflow.api.WorkflowOperationResult; import org.opencastproject.workspace.api.Workspace; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.io.File; import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Test class for {@link TagWorkflowOperationHandler} */ public class ConfigureByDublinCoreTermWOHTest { private ConfigureByDublinCoreTermWOH operationHandler; private WorkflowInstanceImpl instance; private WorkflowOperationInstanceImpl operation; private MediaPackage mp; private Workspace workspace; @Before public void setUp() throws Exception { MediaPackageBuilder builder = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder(); mp = builder.loadFromXml(this.getClass().getResourceAsStream("/archive_mediapackage.xml")); mp.getCatalog("catalog-1").setURI(this.getClass().getResource("/dublincore.xml").toURI()); // set up the handler operationHandler = new ConfigureByDublinCoreTermWOH(); // Initialize the workflow instance = new WorkflowInstanceImpl(); operation = new WorkflowOperationInstanceImpl("test", OperationState.INSTANTIATED); List<WorkflowOperationInstance> ops = new ArrayList<WorkflowOperationInstance>(); ops.add(operation); instance.setOperations(ops); instance.setConfiguration("oldConfigProperty", "foo"); instance.setMediaPackage(mp); workspace = EasyMock.createNiceMock(Workspace.class); EasyMock.expect(workspace.get((URI) EasyMock.anyObject())).andReturn( new File(this.getClass().getResource("/dublincore.xml").toURI())); EasyMock.replay(workspace); operationHandler.setWorkspace(workspace); } @Test public void testMatchPresentDCTerm() throws Exception { operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCCATALOG_PROPERTY, "episode"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCTERM_PROPERTY, "publisher"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.MATCH_VALUE_PROPERTY, "University of Opencast"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.COPY_PROPERTY, "false"); operation.setConfiguration("newConfigProperty", "true"); WorkflowOperationResult result = operationHandler.start(instance, null); Map<String, String> properties = result.getProperties(); Assert.assertTrue(properties.containsKey("newConfigProperty")); Assert.assertEquals("true", properties.get("newConfigProperty")); } @Test public void testMatchPresentDCTermOverwriteProperty() throws Exception { operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCCATALOG_PROPERTY, "episode"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCTERM_PROPERTY, "publisher"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.MATCH_VALUE_PROPERTY, "University of Opencast"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.COPY_PROPERTY, "false"); operation.setConfiguration("oldConfigProperty", "bar"); WorkflowOperationResult result = operationHandler.start(instance, null); Map<String, String> properties = result.getProperties(); Assert.assertTrue(properties.containsKey("oldConfigProperty")); Assert.assertEquals("bar", properties.get("oldConfigProperty")); } @Test public void testMatchDefaultDCTerm() throws Exception { // Match == Default Value operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCCATALOG_PROPERTY, "episode"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCTERM_PROPERTY, "source"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DEFAULT_VALUE_PROPERTY, "Timbuktu"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.MATCH_VALUE_PROPERTY, "Timbuktu"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.COPY_PROPERTY, "false"); operation.setConfiguration("newConfigProperty", "true"); WorkflowOperationResult result = operationHandler.start(instance, null); Map<String, String> properties = result.getProperties(); Assert.assertTrue(properties.containsKey("newConfigProperty")); Assert.assertEquals("true", properties.get("newConfigProperty")); } @Test public void testMisMatchDefaultDCTerm() throws Exception { // Match != Default Value operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCCATALOG_PROPERTY, "episode"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCTERM_PROPERTY, "source"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DEFAULT_VALUE_PROPERTY, "Cairo"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.MATCH_VALUE_PROPERTY, "Timbuktu"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.COPY_PROPERTY, "false"); operation.setConfiguration("newConfigProperty", "true"); WorkflowOperationResult result = operationHandler.start(instance, null); Map<String, String> properties = result.getProperties(); Assert.assertTrue(properties == null); } @Test public void testMissingNoDefaultDCTerm() throws Exception { // No Default Value operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCCATALOG_PROPERTY, "episode"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCTERM_PROPERTY, "source"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.MATCH_VALUE_PROPERTY, "Timbuktu"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.COPY_PROPERTY, "false"); operation.setConfiguration("newConfigProperty", "true"); WorkflowOperationResult result = operationHandler.start(instance, null); Map<String, String> properties = result.getProperties(); Assert.assertTrue(properties == null); } @Test public void testNoMatchConfiguredDCTerm() throws Exception { // No Match or Default Value // without dcterm or default the match should always fail operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCCATALOG_PROPERTY, "episode"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.DCTERM_PROPERTY, "source"); operation.setConfiguration(ConfigureByDublinCoreTermWOH.COPY_PROPERTY, "false"); WorkflowOperationResult result = operationHandler.start(instance, null); Map<String, String> properties = result.getProperties(); Assert.assertTrue(properties == null); } }