Added oparent to sdc main
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / tosca / utils / OperationArtifactUtilTest.java
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.openecomp.sdc.be.tosca.utils;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.openecomp.sdc.be.tosca.utils.OperationArtifactUtil.BPMN_ARTIFACT_PATH;
20
21 import java.io.File;
22 import java.util.HashMap;
23 import java.util.Map;
24 import java.util.UUID;
25
26 import org.apache.commons.lang.WordUtils;
27 import org.junit.Assert;
28 import org.junit.BeforeClass;
29 import org.junit.Test;
30 import org.openecomp.sdc.be.DummyConfigurationManager;
31 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
32 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
33 import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
34 import org.openecomp.sdc.be.model.ArtifactDefinition;
35 import org.openecomp.sdc.be.model.Component;
36 import org.openecomp.sdc.be.model.ComponentInstance;
37 import org.openecomp.sdc.be.model.ComponentMetadataDefinition;
38 import org.openecomp.sdc.be.model.InterfaceDefinition;
39 import org.openecomp.sdc.be.model.Resource;
40 import org.openecomp.sdc.be.tosca.CsarUtils;
41 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
42 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
43
44 public class OperationArtifactUtilTest {
45
46     @BeforeClass
47     public static void setUp() throws Exception {
48         new DummyConfigurationManager();
49     }
50
51     @Test
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 +
66                 "createBPMN.bpmn";
67
68
69         assertEquals(expectedArtifactPath,actualArtifactPath);
70     }
71
72     @Test
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";
89
90
91         assertEquals(expectedArtifactPath,actualArtifactPath);
92     }
93
94     @Test
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);
107
108         Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
109                 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
110         Assert.assertEquals(1, distinctInterfaceOperationArtifactsByName.size());
111     }
112
113     @Test
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);
126
127         Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
128                 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
129         Assert.assertEquals(2, distinctInterfaceOperationArtifactsByName.size());
130     }
131
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);
138         return op;
139     }
140 }