/** * 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 static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertEquals; import org.opencastproject.mediapackage.Attachment; import org.opencastproject.mediapackage.MediaPackage; import org.opencastproject.mediapackage.MediaPackageBuilderFactory; import org.opencastproject.mediapackage.MediaPackageElementFlavor; import org.opencastproject.mediapackage.attachment.AttachmentImpl; import org.opencastproject.workflow.api.WorkflowInstance; import org.opencastproject.workflow.api.WorkflowOperationInstance; import org.opencastproject.workflow.api.WorkflowOperationResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URI; import java.util.HashSet; import java.util.Properties; import java.util.Set; public class ExportWorkflowPropertiesWOHTest { public static final String FLAVOR = "processing/defaults"; private UnitTestWorkspace workspace; private URI uri; @Before public void setUp() throws Exception { workspace = new UnitTestWorkspace(); try (InputStream is = ExportWorkflowPropertiesWOHTest.class.getResourceAsStream("/workflow-properties.xml")) { uri = workspace.putInCollection("test", "workflow-properties.xml", is); } } @Test public void testExport() throws Exception { final WorkflowOperationInstance woi = createMock(WorkflowOperationInstance.class); expect(woi.getConfiguration("target-flavor")).andStubReturn(FLAVOR); expect(woi.getConfiguration("target-tags")).andStubReturn("archive"); expect(woi.getConfiguration("keys")).andStubReturn("chapter,presenter_position"); replay(woi); final Attachment att = new AttachmentImpl(); att.setURI(uri); att.setFlavor(MediaPackageElementFlavor.parseFlavor(FLAVOR)); final MediaPackage mp = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder().createNew(); mp.add(att); WorkflowInstance wi = createMock(WorkflowInstance.class); expect(wi.getCurrentOperation()).andStubReturn(woi); expect(wi.getMediaPackage()).andStubReturn(mp); Set<String> keys = new HashSet<>(); keys.add("presenter_position"); keys.add("cover_marker_in_s"); expect(wi.getConfigurationKeys()).andStubReturn(keys); expect(wi.getConfiguration("presenter_position")).andStubReturn("right"); expect(wi.getConfiguration("cover_marker_in_s")).andStubReturn("30.674"); replay(wi); final ExportWorkflowPropertiesWOH woh = new ExportWorkflowPropertiesWOH(); woh.setWorkspace(workspace); WorkflowOperationResult result = woh.start(wi, null); Attachment[] attachments = result.getMediaPackage().getAttachments(); Assert.assertTrue(attachments.length == 1); Attachment attachment = attachments[0]; assertEquals("processing/defaults", attachment.getFlavor().toString()); assertEquals("archive", attachment.getTags()[0]); Assert.assertNotNull(attachment.getURI()); File file = workspace.get(attachment.getURI()); Properties props = new Properties(); try (InputStream is = new FileInputStream(file)) { props.loadFromXML(is); } assertEquals("30.674", props.get("cover_marker_in_s")); assertEquals("right", props.get("presenter_position")); Assert.assertFalse(props.contains("chapter")); verify(wi); } }