/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.workflow.execution.api;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import de.rcenvironment.core.communication.api.PlatformService;
import de.rcenvironment.core.component.api.ComponentUtils;
import de.rcenvironment.core.component.workflow.model.api.WorkflowDescription;
import de.rcenvironment.core.component.workflow.model.api.WorkflowDescriptionPersistenceHandlerTestUtils;
import de.rcenvironment.core.component.workflow.model.api.WorkflowTestUtils;
import de.rcenvironment.core.configuration.PersistentSettingsService;
/**
* Testclass for the placeholder.
*
* @author Sascha Zur
*
*/
public class WorkflowPlaceholderHandlerTest {
private static final String VERSION = "/3.1";
private WorkflowPlaceholderHandler weph;
private final String placeholder1 = "${myPlaceholder1}";
private final String placeholder2 = "${*.myPlaceholder2}";
private final String placeholder3 = "${global.myPlaceholder3}";
private final String placeholder4 = "${global.*.myPlaceholder4}";
private final String componentID1 = "de.rcenvironment.components.testcomp.TestComp";
private final String componentID2 = "de.rcenvironment.components.testcomp.TestComp2";
private final String componentUUID1 = "i am an UUID";
private final String dot = ".";
private final WorkflowDescription wd = WorkflowTestUtils.createWorkflowDescription();
private final String globalPlaceholderTestValue = "tada";
private final String placeholderTestValue = "tada2";
/** Injects a {@link PlatformService} to the {@link WorkflowDescriptionPersistenceHandler}. */
@BeforeClass
public static void initWorkflowDescriptionPersistenceHandler() {
WorkflowDescriptionPersistenceHandlerTestUtils.initializeStaticFieldsOfWorkflowDescriptionPersistenceHandler();
}
/** Init. */
@Before
public void init() {
WorkflowPlaceholderHandler.setPersistentSettingsService(new DummyPersistentSettingsService());
weph = WorkflowPlaceholderHandler.createPlaceholderDescriptionFromWorkflowDescription(wd, "");
}
/** Test. */
@Test
public void testGetNameOfPlaceholder() {
Assert.assertEquals("myPlaceholder1", WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder1));
Assert.assertEquals("myPlaceholder2", WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder2));
Assert.assertEquals("myPlaceholder3", WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder3));
Assert.assertEquals("myPlaceholder4", WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder4));
}
/** Test. */
@Test
public void testIsEncryptedPlaceholder() {
weph.addPlaceholder(placeholder1, componentID1, componentUUID1);
weph.addPlaceholder(placeholder2, componentID1, componentUUID1);
weph.addPlaceholder(placeholder3, componentID1, componentUUID1);
weph.addPlaceholder(placeholder4, componentID1, componentUUID1);
Assert.assertFalse(ComponentUtils.isEncryptedPlaceholder(componentID1 + dot
+ WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder1), WorkflowPlaceholderHandler.getEncryptedPlaceholder()));
Assert.assertTrue(ComponentUtils.isEncryptedPlaceholder(componentID1 + dot
+ WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder2), WorkflowPlaceholderHandler.getEncryptedPlaceholder()));
Assert.assertFalse(ComponentUtils.isEncryptedPlaceholder(componentID1 + dot
+ WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder3), WorkflowPlaceholderHandler.getEncryptedPlaceholder()));
Assert.assertTrue(ComponentUtils.isEncryptedPlaceholder(componentID1 + dot
+ WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder4), WorkflowPlaceholderHandler.getEncryptedPlaceholder()));
}
/** Test. */
@Test
public void testPlaceholderGetter() {
weph.addPlaceholder(placeholder1, componentID1, componentUUID1);
Assert.assertTrue(weph.getIdentifiersOfPlaceholderContainingComponents().contains(componentID1));
Assert.assertFalse(weph.getIdentifiersOfPlaceholderContainingComponents().contains(componentID2));
Assert.assertTrue(weph.getPlaceholderNameSetOfComponentInstance(componentUUID1)
.contains(WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder1)));
weph.addPlaceholder(placeholder2, componentID1, componentUUID1);
Assert.assertTrue(weph.getIdentifiersOfPlaceholderContainingComponents().contains(componentID1));
Assert.assertFalse(weph.getIdentifiersOfPlaceholderContainingComponents().contains(componentID2));
Assert.assertTrue(weph.getPlaceholderNameSetOfComponentInstance(componentUUID1)
.contains(WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder2)));
weph.addPlaceholder(placeholder3, componentID1, null);
Assert.assertTrue(weph.getIdentifiersOfPlaceholderContainingComponents().contains(componentID1));
Assert.assertFalse(weph.getIdentifiersOfPlaceholderContainingComponents().contains(componentID2));
Assert.assertFalse(weph.getPlaceholderNameSetOfComponentInstance(componentUUID1).contains(
WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder3)));
Assert.assertTrue(weph.getPlaceholderNameSetOfComponentID(componentID1).contains(
WorkflowPlaceholderHandler.getNameOfPlaceholder(placeholder3)));
Assert.assertTrue(weph.getPlaceholderNamesOfComponentInstance(componentUUID1).contains(placeholder1));
Assert.assertFalse(weph.getPlaceholderNamesOfComponentInstance(componentUUID1).contains(placeholder3));
Assert.assertFalse(weph.getPlaceholderNamesOfComponentInstance(componentUUID1).contains(placeholder4));
Assert.assertFalse(weph.getPlaceholderOfComponent(componentID1).contains(placeholder1));
Assert.assertTrue(weph.getPlaceholderOfComponent(componentID1).contains(placeholder3));
Assert.assertFalse(weph.getPlaceholderOfComponent(componentID1).contains(placeholder4));
Assert.assertNull(weph.getPlaceholderNameSetOfComponentID(null));
Assert.assertNotNull(weph.getComponentInstances(componentID1));
Assert.assertNull(weph.getComponentInstances(componentID2));
}
/** Test. */
@Test
public void testSetPlaceholderValue() {
weph.setGlobalPlaceholderValue(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME,
WorkflowTestUtils.CD_IDENTIFIER + VERSION, globalPlaceholderTestValue, WorkflowTestUtils.WFID, true);
weph.setPlaceholderValue(WorkflowTestUtils.PLACEHOLDERNAME, WorkflowTestUtils.CD_IDENTIFIER + VERSION,
wd.getWorkflowNodes().iterator().next().getIdentifier(),
placeholderTestValue, WorkflowTestUtils.WFID, true);
weph.setPlaceholderValue(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME, WorkflowTestUtils.CD_IDENTIFIER + VERSION,
wd.getWorkflowNodes().iterator().next().getIdentifier(),
globalPlaceholderTestValue, WorkflowTestUtils.WFID, true);
}
/** Test. */
@Test
public void testAllGetPlaceholderValues() {
weph.setGlobalPlaceholderValue(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME,
WorkflowTestUtils.CD_IDENTIFIER + VERSION, globalPlaceholderTestValue, WorkflowTestUtils.WFID, true);
weph.setPlaceholderValue(WorkflowTestUtils.PLACEHOLDERNAME, WorkflowTestUtils.CD_IDENTIFIER + VERSION,
wd.getWorkflowNodes().iterator().next().getIdentifier(),
placeholderTestValue, WorkflowTestUtils.WFID, true);
Assert.assertEquals(placeholderTestValue,
weph.getValueByPlaceholderName(WorkflowPlaceholderHandler.getNameOfPlaceholder(WorkflowTestUtils.PLACEHOLDERNAME),
wd.getWorkflowNodes().iterator().next().getIdentifier()));
Assert.assertEquals(globalPlaceholderTestValue, weph.getGlobalValueByPlaceholderName(
WorkflowPlaceholderHandler.getNameOfPlaceholder(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME),
WorkflowTestUtils.CD_IDENTIFIER + VERSION));
Assert.assertEquals(globalPlaceholderTestValue,
weph.getValueByPlaceholder(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME,
WorkflowTestUtils.CD_IDENTIFIER + VERSION));
Assert.assertEquals(placeholderTestValue,
weph.getValueByPlaceholder(WorkflowTestUtils.PLACEHOLDERNAME,
WorkflowTestUtils.CD_IDENTIFIER + VERSION,
wd.getWorkflowNodes().iterator().next().getIdentifier()));
}
/** Test. */
@Test
public void testHistoryMethods() {
weph.saveHistory();
weph.setGlobalPlaceholderValue(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME,
WorkflowTestUtils.CD_IDENTIFIER + VERSION, globalPlaceholderTestValue, WorkflowTestUtils.WFID, true);
weph.setPlaceholderValue(WorkflowTestUtils.PLACEHOLDERNAME, WorkflowTestUtils.CD_IDENTIFIER + VERSION,
wd.getWorkflowNodes().iterator().next().getIdentifier(),
placeholderTestValue, WorkflowTestUtils.WFID, true);
weph.saveHistory();
weph.setGlobalPlaceholderValue(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME,
WorkflowTestUtils.CD_IDENTIFIER + VERSION, globalPlaceholderTestValue + "4", WorkflowTestUtils.WFID, true);
weph.setPlaceholderValue(WorkflowTestUtils.PLACEHOLDERNAME, WorkflowTestUtils.CD_IDENTIFIER + VERSION,
wd.getWorkflowNodes().iterator().next().getIdentifier(),
placeholderTestValue + "3", WorkflowTestUtils.WFID, true);
weph.saveHistory();
String cid = wd.getWorkflowNodes().iterator().next().getIdentifier();
Assert.assertEquals(true, weph.getInstancePlaceholderHistory(
WorkflowPlaceholderHandler.getNameOfPlaceholder(WorkflowTestUtils.PLACEHOLDERNAME), cid).length == 2);
Assert.assertEquals(true, weph.getComponentPlaceholderHistory(
WorkflowPlaceholderHandler.getNameOfPlaceholder(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME),
WorkflowTestUtils.CD_IDENTIFIER + VERSION, WorkflowTestUtils.WFID).length == 2);
Assert.assertEquals(globalPlaceholderTestValue, weph.getOtherPlaceholderHistoryValues(
WorkflowPlaceholderHandler.getNameOfPlaceholder(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME))[0]);
Assert.assertEquals(globalPlaceholderTestValue + "4", weph.getValueFromOtherComponentInWorkflow(
WorkflowPlaceholderHandler.getNameOfPlaceholder(WorkflowTestUtils.GLOBAL_PLACEHOLDERNAME),
WorkflowTestUtils.CD_IDENTIFIER + VERSION));
}
/** Test. */
@Test
public void testAllGetter() {
Assert.assertNotNull(weph.getComponentTypeHistory());
Assert.assertNotNull(weph.getComponentInstanceHistory());
Assert.assertNotNull(weph.getComponentInstancePlaceholders());
Assert.assertNotNull(weph.getComponentTypePlaceholders());
Assert.assertNotNull(weph.getComponentInstancesOfType());
Assert.assertNull(weph.getValueFromOtherComponentInWorkflow(WorkflowTestUtils.PLACEHOLDERNAME, componentID1));
Assert.assertEquals(true, weph.getOtherPlaceholderHistoryValues(WorkflowTestUtils.PLACEHOLDERNAME).length == 0);
Assert.assertNotNull(weph.getPlaceholdersOfComponentInstance(wd.getWorkflowNodes().iterator().next().getIdentifier()));
Assert.assertNotNull(weph.getPlaceholdersOfComponentType(WorkflowTestUtils.CD_IDENTIFIER + VERSION));
}
/**
* Dummy class for testing.
*/
private class DummyPersistentSettingsService implements
PersistentSettingsService {
private Map<String, List<String>> tmpMap;
@Override
public void saveStringValue(String key, String value) {}
@Override
public String readStringValue(String key) {
return null;
}
@Override
public void delete(String key) {
}
@Override
public Map<String, List<String>> readMapWithStringList(String filename) {
if (tmpMap == null) {
return new HashMap<String, List<String>>();
} else {
return tmpMap;
}
}
@Override
public void saveMapWithStringList(Map<String, List<String>> map,
String filename) {
Assert.assertNotNull(map);
tmpMap = map;
}
@Override
public void saveStringValue(String key, String value, String filename) {
}
@Override
public String readStringValue(String key, String filename) {
return null;
}
@Override
public void delete(String key, String filename) {
}
}
}