2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.openecomp.sdc.be.tosca.utils;
18 import org.apache.commons.text.WordUtils;
19 import org.junit.Assert;
20 import org.junit.BeforeClass;
21 import org.junit.Test;
22 import org.openecomp.sdc.be.DummyConfigurationManager;
23 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
24 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
25 import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
26 import org.openecomp.sdc.be.model.ArtifactDefinition;
27 import org.openecomp.sdc.be.model.Component;
28 import org.openecomp.sdc.be.model.ComponentInstance;
29 import org.openecomp.sdc.be.model.ComponentMetadataDefinition;
30 import org.openecomp.sdc.be.model.InterfaceDefinition;
31 import org.openecomp.sdc.be.model.Resource;
32 import org.openecomp.sdc.be.tosca.CsarUtils;
33 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
34 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
37 import java.util.HashMap;
39 import java.util.UUID;
41 import static org.junit.Assert.assertEquals;
42 import static org.openecomp.sdc.be.tosca.utils.OperationArtifactUtil.BPMN_ARTIFACT_PATH;
44 public class OperationArtifactUtilTest {
47 public static void setUp() throws Exception {
48 new DummyConfigurationManager();
52 public void testCorrectPathForOperationArtifacts() {
53 ResourceMetadataDataDefinition componentMetadataDataDefinition = new ResourceMetadataDataDefinition();
54 componentMetadataDataDefinition.setToscaResourceName("org.openecomp.resource.vf.TestResource");
55 final ComponentMetadataDefinition componentMetadataDefinition =
56 new ComponentMetadataDefinition(componentMetadataDataDefinition);
57 Component component = new Resource(componentMetadataDefinition);
58 final OperationDataDefinition op = new OperationDataDefinition();
59 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
60 implementation.setArtifactName("createBPMN.bpmn");
61 op.setImplementation(implementation);
62 final String actualArtifactPath = OperationArtifactUtil.createOperationArtifactPath(component, null, op, false);
63 String expectedArtifactPath = CsarUtils.ARTIFACTS + File.separator +
64 WordUtils.capitalizeFully(ArtifactGroupTypeEnum.DEPLOYMENT.name()) + File.separator +
65 ArtifactTypeEnum.WORKFLOW.getType() + File.separator + BPMN_ARTIFACT_PATH + File.separator +
69 assertEquals(expectedArtifactPath,actualArtifactPath);
73 public void testCorrectPathForOperationArtifactsInService() {
74 Component component = new Resource();
75 component.setVersion("1.0");
76 ComponentInstance componentInstance = new ComponentInstance();
77 componentInstance.setToscaComponentName("org.openecomp.resource.vf.TestResource");
78 componentInstance.setComponentVersion("1.0");
79 final OperationDataDefinition op = new OperationDataDefinition();
80 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
81 implementation.setArtifactName("createBPMN.bpmn");
82 op.setImplementation(implementation);
83 final String actualArtifactPath = OperationArtifactUtil.createOperationArtifactPath(component, componentInstance, op, true);
84 String expectedArtifactPath = CsarUtils.ARTIFACTS + File.separator +
85 "org.openecomp.resource.vf.TestResource_v1.0" + File.separator +
86 WordUtils.capitalizeFully(ArtifactGroupTypeEnum.DEPLOYMENT.name()) + File.separator +
87 ArtifactTypeEnum.WORKFLOW.getType() +
88 File.separator + BPMN_ARTIFACT_PATH + File.separator + "createBPMN.bpmn";
91 assertEquals(expectedArtifactPath,actualArtifactPath);
95 public void testCorrectPathForLiteralInterfaceImplementationValue() {
96 ResourceMetadataDataDefinition componentMetadataDataDefinition = new ResourceMetadataDataDefinition();
97 componentMetadataDataDefinition.setToscaResourceName("org.openecomp.resource.vf.TestResource");
98 final ComponentMetadataDefinition componentMetadataDefinition =
99 new ComponentMetadataDefinition(componentMetadataDataDefinition);
100 Component component = new Resource(componentMetadataDefinition);
101 final OperationDataDefinition op = new OperationDataDefinition();
102 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
103 implementation.setArtifactName("\"createBPMN.bpmn\"");
104 op.setImplementation(implementation);
105 final String actualArtifactPath = OperationArtifactUtil.createOperationArtifactPath(component, null, op, false);
106 String expectedArtifactPath = "createBPMN.bpmn";
108 assertEquals(expectedArtifactPath,actualArtifactPath);
112 public void testGetDistinctInterfaceOperationArtifactsByName() {
113 Component component = new Resource();
114 component.setNormalizedName("normalizedComponentName");
115 final InterfaceDefinition addedInterface = new InterfaceDefinition();
116 OperationDataDefinition op1 = createInterfaceOperation("createBPMN.bpmn");
117 OperationDataDefinition op2 = createInterfaceOperation("createBPMN.bpmn");
118 addedInterface.setOperations(new HashMap<>());
119 addedInterface.getOperations().put("create", op1);
120 addedInterface.getOperations().put("update", op2);
121 final String interfaceType = "normalizedComponentName-interface";
122 component.setInterfaces(new HashMap<>());
123 component.getInterfaces().put(interfaceType, addedInterface);
125 Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
126 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
127 Assert.assertEquals(1, distinctInterfaceOperationArtifactsByName.size());
131 public void testGetDistinctInterfaceOperationArtifactsByNameAllDistinct() {
132 Component component = new Resource();
133 component.setNormalizedName("normalizedComponentName");
134 final InterfaceDefinition addedInterface = new InterfaceDefinition();
135 OperationDataDefinition op1 = createInterfaceOperation("createBPMN.bpmn");
136 OperationDataDefinition op2 = createInterfaceOperation("updateBPMN.bpmn");
137 addedInterface.setOperations(new HashMap<>());
138 addedInterface.getOperations().put("create", op1);
139 addedInterface.getOperations().put("update", op2);
140 final String interfaceType = "normalizedComponentName-interface";
141 component.setInterfaces(new HashMap<>());
142 component.getInterfaces().put(interfaceType, addedInterface);
144 Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
145 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
146 Assert.assertEquals(2, distinctInterfaceOperationArtifactsByName.size());
149 private OperationDataDefinition createInterfaceOperation(String artifactName) {
150 final OperationDataDefinition op = new OperationDataDefinition();
151 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
152 implementation.setUniqueId(UUID.randomUUID().toString());
153 implementation.setArtifactName(artifactName);
154 op.setImplementation(implementation);