Update vulnerable package dependencies
[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 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;
35
36 import java.io.File;
37 import java.util.HashMap;
38 import java.util.Map;
39 import java.util.UUID;
40
41 import static org.junit.Assert.assertEquals;
42 import static org.openecomp.sdc.be.tosca.utils.OperationArtifactUtil.BPMN_ARTIFACT_PATH;
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.getType() + 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.getType() +
88                 File.separator + BPMN_ARTIFACT_PATH + File.separator + "createBPMN.bpmn";
89
90
91         assertEquals(expectedArtifactPath,actualArtifactPath);
92     }
93     
94     @Test
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";
107
108         assertEquals(expectedArtifactPath,actualArtifactPath);
109     }
110
111     @Test
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);
124
125         Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
126                 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
127         Assert.assertEquals(1, distinctInterfaceOperationArtifactsByName.size());
128     }
129
130     @Test
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);
143
144         Map<String, ArtifactDefinition> distinctInterfaceOperationArtifactsByName =
145                 OperationArtifactUtil.getDistinctInterfaceOperationArtifactsByName(component);
146         Assert.assertEquals(2, distinctInterfaceOperationArtifactsByName.size());
147     }
148
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);
155         return op;
156     }
157 }