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.lang.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.name() + 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.name() +
88 File.separator + BPMN_ARTIFACT_PATH + File.separator + "createBPMN.bpmn";
91 assertEquals(expectedArtifactPath,actualArtifactPath);
95 public void testGetDistinctInterfaceOperationArtifactsByName() {
96 Component component = new Resource();
97 component.setNormalizedName("normalizedComponentName");
98 final InterfaceDefinition addedInterface = new InterfaceDefinition();
99 OperationDataDefinition op1 = createInterfaceOperation("createBPMN.bpmn");
100 OperationDataDefinition op2 = createInterfaceOperation("createBPMN.bpmn");
101 addedInterface.setOperations(new HashMap<>());
102 addedInterface.getOperations().put("create", op1);
103 addedInterface.getOperations().put("update", op2);
104 final String interfaceType = "normalizedComponentName-interface";
105 component.setInterfaces(new HashMap<>());
106 component.getInterfaces().put(interfaceType, addedInterface);
108 Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
109 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
110 Assert.assertEquals(1, distinctInterfaceOperationArtifactsByName.size());
114 public void testGetDistinctInterfaceOperationArtifactsByNameAllDistinct() {
115 Component component = new Resource();
116 component.setNormalizedName("normalizedComponentName");
117 final InterfaceDefinition addedInterface = new InterfaceDefinition();
118 OperationDataDefinition op1 = createInterfaceOperation("createBPMN.bpmn");
119 OperationDataDefinition op2 = createInterfaceOperation("updateBPMN.bpmn");
120 addedInterface.setOperations(new HashMap<>());
121 addedInterface.getOperations().put("create", op1);
122 addedInterface.getOperations().put("update", op2);
123 final String interfaceType = "normalizedComponentName-interface";
124 component.setInterfaces(new HashMap<>());
125 component.getInterfaces().put(interfaceType, addedInterface);
127 Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
128 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
129 Assert.assertEquals(2, distinctInterfaceOperationArtifactsByName.size());
132 private OperationDataDefinition createInterfaceOperation(String artifactName) {
133 final OperationDataDefinition op = new OperationDataDefinition();
134 final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
135 implementation.setUniqueId(UUID.randomUUID().toString());
136 implementation.setArtifactName(artifactName);
137 op.setImplementation(implementation);