package org.openecomp.sdc.be.tosca.utils;
+import static org.mockito.Mockito.mock;
+import static org.openecomp.sdc.be.tosca.InterfacesOperationsConverter.SELF;
+import static org.openecomp.sdc.be.tosca.InterfacesOperationsConverter.addInterfaceTypeElement;
+
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
import org.apache.commons.collections4.MapUtils;
import org.junit.Assert;
import org.junit.Before;
import org.openecomp.sdc.be.model.Resource;
import org.openecomp.sdc.be.model.Service;
import org.openecomp.sdc.be.model.ServiceMetadataDefinition;
-import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
import org.openecomp.sdc.be.tosca.InterfacesOperationsConverter;
import org.openecomp.sdc.be.tosca.PropertyConvertor;
import org.openecomp.sdc.be.tosca.ToscaExportHandler;
import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
import org.openecomp.sdc.be.tosca.model.ToscaTemplate;
import org.openecomp.sdc.common.util.YamlToObjectConverter;
+import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import static org.mockito.Mockito.mock;
-import static org.openecomp.sdc.be.tosca.InterfacesOperationsConverter.SELF;
-import static org.openecomp.sdc.be.tosca.InterfacesOperationsConverter.addInterfaceTypeElement;
@RunWith(MockitoJUnitRunner.class)
public class InterfacesOperationsConverterTest {
template.setInterface_types(interfaceTypeElement);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- Assert.assertFalse(toscaRepresentation.getMainYaml().contains("operations"));
- Assert.assertTrue(toscaRepresentation.getMainYaml().contains("NodeTypeName"));
+ Assert.assertTrue(all(
+ containsAll("NodeTypeName"),
+ containsNone("operations")
+ ).apply(new String(toscaRepresentation.getMainYaml())));
}
@Test
template.setInterface_types(interfaceTypeElement);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- Assert.assertFalse(toscaRepresentation.getMainYaml().contains("operations"));
- Assert.assertTrue(toscaRepresentation.getMainYaml().contains("NodeTypeName"));
+ Assert.assertTrue(all(
+ containsAll("NodeTypeName"),
+ containsNone("operations")
+ ).apply(new String(toscaRepresentation.getMainYaml())));
}
@Test
template.setNode_types(nodeTypes);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- String mainYaml = toscaRepresentation.getMainYaml();
- Assert.assertFalse(mainYaml.contains("operations"));
- Assert.assertTrue(mainYaml.contains("resourceName:"));
- Assert.assertTrue(mainYaml.contains("inputs:"));
+ String mainYaml = new String(toscaRepresentation.getMainYaml());
+ Assert.assertTrue(all(
+ containsAll("resourceName:", "inputs:", "has description", MAPPED_PROPERTY_NAME, "com.some.resource.or.other.resourceName"),
+ containsNone("operations", "defaultp")
+ ).apply(mainYaml));
+
validateOperationInputs(mainYaml, 2, null);
- Assert.assertFalse(mainYaml.contains("defaultp"));
- Assert.assertTrue(mainYaml.contains("has description"));
- Assert.assertTrue(mainYaml.contains(MAPPED_PROPERTY_NAME));
- Assert.assertTrue(mainYaml.contains("com.some.resource.or.other.resourceName"));
}
@Test
nodeTypes.put(NODE_TYPE_NAME, nodeType);
template.setNode_types(nodeTypes);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- String mainYaml = toscaRepresentation.getMainYaml();
- Assert.assertFalse(mainYaml.contains("operations"));
- Assert.assertTrue(mainYaml.contains("serviceName:"));
- Assert.assertTrue(mainYaml.contains("inputs:"));
+ String mainYaml = new String(toscaRepresentation.getMainYaml());
+ Assert.assertTrue(all(
+ containsAll("serviceName", "inputs:", "has description", MAPPED_PROPERTY_NAME, "com.some.service.or.other.serviceName"),
+ containsNone("operations", "defaultp")
+ ).apply(mainYaml));
validateOperationInputs(mainYaml, 2, null);
- Assert.assertFalse(mainYaml.contains("defaultp"));
- Assert.assertTrue(mainYaml.contains("has description"));
- Assert.assertTrue(mainYaml.contains(MAPPED_PROPERTY_NAME));
- Assert.assertTrue(mainYaml.contains("com.some.service.or.other.serviceName"));
}
template.setNode_types(nodeTypes);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- String mainYaml = toscaRepresentation.getMainYaml();
- Assert.assertFalse(mainYaml.contains("operations"));
- Assert.assertTrue(mainYaml.contains("resourceName:"));
- Assert.assertTrue(mainYaml.contains("inputs:"));
+ String mainYaml = new String(toscaRepresentation.getMainYaml());
+ Assert.assertTrue(all(
+ containsAll("resourceName:", "inputs:", "has description", MAPPED_PROPERTY_NAME, "com.some.resource.or.other.resourceName"),
+ containsNone("operations", "defaultp")
+ ).apply(mainYaml));
validateServiceProxyOperationInputs(mainYaml);
- Assert.assertFalse(mainYaml.contains("defaultp"));
- Assert.assertTrue(mainYaml.contains("has description"));
- Assert.assertTrue(mainYaml.contains(MAPPED_PROPERTY_NAME));
- Assert.assertTrue(mainYaml.contains("com.some.resource.or.other.resourceName"));
}
@Test
template.setNode_types(nodeTypes);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- Assert.assertFalse(toscaRepresentation.getMainYaml().contains("operations"));
- Assert.assertFalse(toscaRepresentation.getMainYaml().contains(INPUT_NAME_PREFIX));
- Assert.assertFalse(toscaRepresentation.getMainYaml().contains("defaultp"));
- Assert.assertTrue(toscaRepresentation.getMainYaml().contains("resourceNameNoInputs:"));
- Assert.assertTrue(toscaRepresentation.getMainYaml().contains("has description"));
- Assert.assertTrue(toscaRepresentation.getMainYaml().contains("com.some.resource.or.other.resourceName"));
+ Assert.assertTrue(all(
+ containsAll("resourceNameNoInputs", "has description", "com.some.resource.or.other.resourceName"),
+ containsNone("operations", INPUT_NAME_PREFIX, "defaultp")
+ ).apply(new String(toscaRepresentation.getMainYaml())));
}
@Test
nodeTypes.put("test", nodeType);
template.setNode_types(nodeTypes);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- String mainYaml = toscaRepresentation.getMainYaml();
- Assert.assertFalse(mainYaml.contains("operations"));
- Assert.assertTrue(mainYaml.contains("resourceNameInputMappedToOutput:"));
- Assert.assertTrue(mainYaml.contains("inputs:"));
+ String mainYaml = new String(toscaRepresentation.getMainYaml());
+ Assert.assertTrue(all(
+ containsAll("resourceNameInputMappedToOutput:", "inputs:"),
+ containsNone("operations")
+ ).apply(mainYaml));
validateOperationInputs(mainYaml, 2, "name_for_op_1");
}
template.setNode_types(nodeTypes);
final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template);
- String mainYaml = toscaRepresentation.getMainYaml();
- Assert.assertFalse(mainYaml.contains("operations"));
- Assert.assertTrue(mainYaml.contains("resourceNameInputMappedToOutput:"));
- Assert.assertTrue(mainYaml.contains("inputs:"));
+ String mainYaml = new String(toscaRepresentation.getMainYaml());
+ Assert.assertTrue(all(
+ containsAll("resourceNameInputMappedToOutput:", "inputs:"),
+ containsNone("operations")
+ ).apply(mainYaml));
validateOperationInputs(mainYaml, 2, "name_for_op_1");
}
+ @FunctionalInterface
+ interface MainYamlAssertion extends Function<String, Boolean> {}
+
+ private static Function<String, Boolean> all(MainYamlAssertion...fs) {
+ return s -> io.vavr.collection.List.of(fs).map(f -> f.apply(s)).fold(true, (l, r) -> l && r);
+ }
+
+ private static MainYamlAssertion containsNone(String...expected) {
+ return s -> io.vavr.collection.List.of(expected).map(e -> !s.contains(e)).fold(true, (l, r) -> l && r);
+ }
+
+ private static MainYamlAssertion containsAll(String...expected) {
+ return s -> io.vavr.collection.List.of(expected).map(s::contains).fold(true, (l, r) -> l && r);
+ }
+
private void addOperationsToInterface(Component component, InterfaceDefinition addedInterface, int numOfOps,
int numOfInputsPerOp, boolean hasInputs, boolean hasOutputs) {
operationInputDefinition.setName(outputName);
operationInputDefinition.setType(inputTypes[index]);
operationInputDefinition.setRequired(index % 2 == 0);
- Map<String, List<String>> toscaDefaultValueMap = new HashMap<>();
List<String> toscaDefaultValues = new ArrayList<>();
toscaDefaultValues.add(SELF);
toscaDefaultValues.add(interfaceName);
toscaDefaultValues.add(operationName);
toscaDefaultValues.add(outputName);
+ Map<String, List<String>> toscaDefaultValueMap = new HashMap<>();
toscaDefaultValueMap.put(ToscaFunctions.GET_OPERATION_OUTPUT.getFunctionName(), toscaDefaultValues);
return operationInputDefinition;
}
- private void validateOperationInputs(String mainYaml, int numOfInputsPerOp, String mappedOperationName) {
+ private void validateOperationInputs(final String mainYaml, int numOfInputsPerOp, String mappedOperationName) {
String nodeTypeKey = NODE_TYPE_NAME + ":";
String nodeTypesRepresentation = mainYaml.substring(mainYaml.indexOf(nodeTypeKey) + nodeTypeKey.length(),
mainYaml.lastIndexOf(MAPPED_PROPERTY_NAME) + MAPPED_PROPERTY_NAME.length()