Fix PropertyConvertor initialization (use spring)
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / tosca / CapabilityRequirementConverterTest.java
1 /*
2  * Copyright © 2016-2019 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
17 package org.openecomp.sdc.be.tosca;
18
19
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.mockito.InjectMocks;
23 import org.mockito.Mock;
24 import org.mockito.Mockito;
25 import org.mockito.MockitoAnnotations;
26 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
27 import org.openecomp.sdc.be.model.CapabilityDefinition;
28 import org.openecomp.sdc.be.model.Component;
29 import org.openecomp.sdc.be.model.ComponentInstance;
30 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
31 import org.openecomp.sdc.be.model.Resource;
32
33 import java.util.ArrayList;
34 import java.util.Arrays;
35 import java.util.Collections;
36 import java.util.HashMap;
37 import java.util.List;
38 import java.util.Map;
39 import java.util.stream.Collectors;
40 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
41
42 import static java.util.Arrays.asList;
43 import static org.assertj.core.api.Assertions.assertThat;
44 import static org.mockito.Mockito.doReturn;
45
46 public class CapabilityRequirementConverterTest {
47
48         @InjectMocks
49         CapabilityRequirementConverter testSubject;
50
51         @Mock
52         ToscaOperationFacade toscaOperationFacade;
53         @Mock
54         private PropertyConvertor propertyConvertorMock;
55
56     CapabilityRequirementConverter capabiltyRequirementConvertor =  Mockito.spy(new CapabilityRequirementConverter());
57     ComponentInstance instanceProxy  =  Mockito.spy( new ComponentInstance() );
58     ComponentInstance vfInstance  =  Mockito.spy( new ComponentInstance() );
59     Component vfComponent =  Mockito.spy( new Resource() );
60     ComponentInstance vfcInstance  =  Mockito.spy( new ComponentInstance() );
61     Component vfcComponent  =  Mockito.spy( new Resource() );
62
63         @Before
64         public void setUpMock() throws Exception {
65                 MockitoAnnotations.initMocks(this);
66         }
67
68         @Test
69         public void testGetInstance() {
70                 CapabilityRequirementConverter.getInstance();
71         }
72
73         @Test
74         public void testGetReducedPathByOwner() throws Exception {
75                 List<String> pathList = new ArrayList<>();
76                 String uniqueId = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_2";
77
78                 String exerpt = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1";
79                 String duplicate = "a77df84e-83eb-4edc-9823-d1f9f6549693.c79e9a4a-b172-4323-a2e2-1c48d6603241.lb_swu_direct_4_rvmi";
80                 pathList.add(exerpt);
81                 pathList.add(duplicate);
82                 pathList.add(duplicate);
83                 pathList.add(uniqueId);
84
85                 pathList.add("5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
86                 pathList.add("86ae128e-3d0a-41f7-a957-db1df9fe598c.9cc8f8ac-6869-4dd6-a6e1-74ecb9570dc4.vepdgtp4837svc_proxy0");
87
88                 List<String> reducedMap = new CapabilityRequirementConverter().getReducedPathByOwner( pathList , uniqueId );
89
90                 assertThat(reducedMap).isNotNull().doesNotContain(exerpt).containsOnlyOnce(duplicate).hasSize(4);
91
92                 List<String> path = new ArrayList<String>();
93
94                 capabiltyRequirementConvertor.getReducedPathByOwner(path, uniqueId);
95
96                 path.add("");
97                 capabiltyRequirementConvertor.getReducedPathByOwner(path, uniqueId);
98                 capabiltyRequirementConvertor.getReducedPathByOwner(path, "");
99         }
100
101         // generate stub capability
102         private Map<String, List<CapabilityDefinition>> newCapabilities(String capabilityName) {
103                 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
104                 List<CapabilityDefinition> list = new ArrayList<>();
105                 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
106                 capabilityDefinition.setName(capabilityName);
107                 capabilityDefinition.setType("att.Node");
108                 List<ComponentInstanceProperty> properties = new ArrayList<>();
109                 ComponentInstanceProperty prop = new ComponentInstanceProperty();
110                 prop.setValue("value");
111                 properties.add(prop);
112                 capabilityDefinition.setProperties(properties);
113                 List<String> pathList = new ArrayList<>();
114
115                 capabilityDefinition.setOwnerId("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693");
116                 pathList.add("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1");
117                 // pathList.add("a77df84e-83eb-4edc-9823-d1f9f6549693.c79e9a4a-b172-4323-a2e2-1c48d6603241.lb_swu_direct_4_rvmi");
118                 pathList.add("5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
119                 pathList.add("86ae128e-3d0a-41f7-a957-db1df9fe598c.9cc8f8ac-6869-4dd6-a6e1-74ecb9570dc4.vepdgtp4837svc_proxy0");
120
121                 capabilityDefinition.setPath(pathList);
122                 list.add(capabilityDefinition);
123                 capabilities.put(capabilityDefinition.getType(), list);
124
125                 return capabilities;
126         }
127
128         @Test
129         public void testBuildName() {
130                 doReturn("1").when(instanceProxy).getActualComponentUid();
131                 doReturn("2").when(vfInstance).getActualComponentUid();
132                 doReturn("3").when(vfcInstance).getActualComponentUid();
133                 // region proxy
134                 Component proxyOrigin = new Resource();
135
136                 proxyOrigin.setName("vepdgtp4837svc_proxy0");
137                 proxyOrigin.setComponentType(ComponentTypeEnum.RESOURCE);
138                 proxyOrigin.setComponentInstances(asList(vfInstance));
139
140                 // endregion
141                 // region vf+vfc
142                 vfInstance.setName("vepdgtp4837vf0");
143                 vfInstance.setNormalizedName("vepdgtp4837vf0");
144                 vfInstance.setUniqueId(
145                                 "5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
146                 vfComponent.setName("vepdgtp4837vf0"); // origin
147                 vfComponent.setComponentInstances(Arrays.asList(vfcInstance));
148                 vfcInstance.setUniqueId("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1");
149                 vfcInstance.setName("lb_1");
150                 vfcInstance.setNormalizedName("lb_1");
151                 vfcInstance.setName("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1");
152                 vfcComponent.setName("lb_1");
153                 // endregion
154                 Map<String, List<CapabilityDefinition>> capabilities = newCapabilities("port");
155                 vfcComponent.setCapabilities(capabilities);
156                 Map<Component, ComponentInstance> map = Collections
157                                 .unmodifiableMap(new HashMap<Component, ComponentInstance>() {
158                                         {
159                                                 put(proxyOrigin, null);
160                                                 put(vfComponent, vfInstance);
161                                                 put(vfcComponent, vfcInstance);
162                                         }
163                                 });
164                 Map<String, Component> cache = Collections.unmodifiableMap(new HashMap<String, Component>() {
165                         {
166                                 put("1", proxyOrigin);
167                                 put("2", vfComponent);
168                                 put("3", vfcComponent);
169                         }
170                 });
171                 instanceProxy.setCapabilities(capabilities);
172                 proxyOrigin.setCapabilities(capabilities);
173                 List<CapabilityDefinition> flatList = capabilities.values().stream().flatMap(List::stream)
174                                 .collect(Collectors.toList());
175                 flatList.stream().forEach((CapabilityDefinition capabilityDefinition) -> {
176                         String name = capabiltyRequirementConvertor.buildCapabilityNameForComponentInstance(cache, instanceProxy,
177                                         capabilityDefinition);
178                         System.out.println("built name -> " + name);
179                         assertThat(name).isEqualTo("vepdgtp4837vf0.lb_1." + capabilityDefinition.getName());
180                 });
181         }
182         @Test
183         public void getReducedPathByOwner() throws Exception {
184                 List<String> pathList = new ArrayList<>();
185                 String uniqueId = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_2";
186
187                 String exerpt = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1";
188                 String duplicate = "a77df84e-83eb-4edc-9823-d1f9f6549693.c79e9a4a-b172-4323-a2e2-1c48d6603241.lb_swu_direct_4_rvmi";
189                 pathList.add(exerpt);
190                 pathList.add(duplicate);
191                 pathList.add(duplicate);
192                 pathList.add(uniqueId);
193
194                 pathList.add("5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
195                 pathList.add("86ae128e-3d0a-41f7-a957-db1df9fe598c.9cc8f8ac-6869-4dd6-a6e1-74ecb9570dc4.vepdgtp4837svc_proxy0");
196
197                 List<String> reducedMap = new CapabilityRequirementConverter().getReducedPathByOwner( pathList , uniqueId );
198
199                 assertThat( reducedMap ).isNotNull().doesNotContain(exerpt).containsOnlyOnce(duplicate).hasSize(4);
200         }
201
202 }