2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
19 * Modifications copyright (c) 2019 Nokia
20 * ================================================================================
23 package org.openecomp.sdc.be.components;
25 import fj.data.Either;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.junit.MockitoJUnitRunner;
29 import org.openecomp.sdc.be.DummyConfigurationManager;
30 import org.openecomp.sdc.be.components.impl.ComponentBusinessLogic;
31 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
32 import org.openecomp.sdc.be.components.utils.ComponentBusinessLogicMock;
33 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.model.ArtifactDefinition;
36 import org.openecomp.sdc.be.model.Component;
37 import org.openecomp.sdc.be.model.ComponentInstance;
38 import org.openecomp.sdc.be.model.Resource;
39 import org.openecomp.sdc.be.model.Service;
40 import org.openecomp.sdc.be.model.User;
41 import org.openecomp.sdc.be.model.category.CategoryDefinition;
42 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
43 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
44 import org.openecomp.sdc.be.ui.model.UiLeftPaletteComponent;
45 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
46 import org.openecomp.sdc.exception.ResponseFormat;
48 import java.util.ArrayList;
49 import java.util.HashMap;
50 import java.util.List;
53 import static org.assertj.core.api.Assertions.assertThat;
54 import static org.mockito.Mockito.when;
55 import static org.openecomp.sdc.be.components.impl.utils.TestGenerationUtils.getComponentsUtils;
56 import static org.openecomp.sdc.common.util.GeneralUtility.getCategorizedComponents;
58 @RunWith(MockitoJUnitRunner.class)
59 public class ComponentBusinessLogicTest extends ComponentBusinessLogicMock {
61 private static final User USER = new User();
62 private static final String ARTIFACT_LABEL = "toscaArtifact1";
63 private static final String ARTIFACT_LABEL2 = "toscaArtifact2";
65 private ComponentBusinessLogic testInstance = new ComponentBusinessLogic(elementDao, groupOperation, groupInstanceOperation,
66 groupTypeOperation, groupBusinessLogic, interfaceOperation, interfaceLifecycleTypeOperation, artifactsBusinessLogic,
67 artifactToscaOperation,componentContactIdValidator, componentNameValidator, componentTagsValidator, componentValidator,
68 componentIconValidator, componentProjectCodeValidator, componentDescriptionValidator) {
70 public Either<List<String>, ResponseFormat> deleteMarkedComponents() {
75 public ComponentInstanceBusinessLogic getComponentInstanceBL() {
80 public Either<List<ComponentInstance>, ResponseFormat> getComponentInstancesFilteredByPropertiesAndInputs(String componentId, String userId) {
85 public Either<UiComponentDataTransfer, ResponseFormat> getUiComponentDataTransferByComponentId(String componentId, List<String> dataParamsToReturn) {
91 DummyConfigurationManager dummyConfigurationManager = new DummyConfigurationManager();;
93 @SuppressWarnings("unchecked")
95 public void setToscaArtifactsPlaceHolders_normalizeArtifactName() throws Exception {
96 Resource resource = new ResourceBuilder().setUniqueId("uid")
97 .setComponentType(ComponentTypeEnum.RESOURCE)
98 .setSystemName("myResource")
100 Map<String, Object> artifactsFromConfig = new HashMap<>();
101 artifactsFromConfig.put(ARTIFACT_LABEL, buildArtifactMap("artifact:not normalized.yml"));
102 artifactsFromConfig.put(ARTIFACT_LABEL2, buildArtifactMap("alreadyNormalized.csar"));
103 when(dummyConfigurationManager.getConfigurationMock().getToscaArtifacts()).thenReturn(artifactsFromConfig);
104 when(artifactsBusinessLogic.createArtifactPlaceHolderInfo(resource.getUniqueId(), ARTIFACT_LABEL, (Map<String, Object>) artifactsFromConfig.get(ARTIFACT_LABEL), USER, ArtifactGroupTypeEnum.TOSCA))
105 .thenReturn(buildArtifactDef(ARTIFACT_LABEL));
106 when(artifactsBusinessLogic.createArtifactPlaceHolderInfo(resource.getUniqueId(), ARTIFACT_LABEL2, (Map<String, Object>) artifactsFromConfig.get(ARTIFACT_LABEL2), USER, ArtifactGroupTypeEnum.TOSCA))
107 .thenReturn(buildArtifactDef(ARTIFACT_LABEL2));
108 testInstance.setToscaArtifactsPlaceHolders(resource, USER);
110 Map<String, ArtifactDefinition> toscaArtifacts = resource.getToscaArtifacts();
111 assertThat(toscaArtifacts).hasSize(2);
112 ArtifactDefinition artifactDefinition = toscaArtifacts.get(ARTIFACT_LABEL);
113 assertThat(artifactDefinition.getArtifactName()).isEqualTo("resource-myResourceartifactnot-normalized.yml");
114 ArtifactDefinition artifactDefinition2 = toscaArtifacts.get(ARTIFACT_LABEL2);
115 assertThat(artifactDefinition2.getArtifactName()).isEqualTo("resource-myResourcealreadyNormalized.csar");
118 private Map<String, Object> buildArtifactMap(String artifactName) {
119 Map<String, Object> artifact = new HashMap<>();
120 artifact.put("artifactName", artifactName);
124 private ArtifactDefinition buildArtifactDef(String artifactLabel) {
125 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
126 artifactDefinition.setArtifactLabel(artifactLabel);
127 return artifactDefinition;
131 public void categorizeOneResource(){
132 List<Component> componentList = new ArrayList<>();
133 String subCategoryName = "Load Balancer";
134 String categoryName = "Application L4+";
135 Component component = initComponent(ComponentTypeEnum.RESOURCE, subCategoryName, categoryName);
136 componentList.add(component);
137 Map<String,Map<String,List<UiLeftPaletteComponent>>> response = getCategorizedComponents(getComponentsUtils().convertComponentToUiLeftPaletteComponentObject(componentList));
138 assertThat(response.get(categoryName).get(subCategoryName).size()).isEqualTo(1);
142 public void categorizeResourcesSameCategoryDifferentSubcategory(){
143 List<Component> componentList = new ArrayList<>();
144 String categoryName = "Application L4+";
145 String subCategoryName = "Load Balancer";
146 Component component = initComponent(ComponentTypeEnum.RESOURCE, subCategoryName, categoryName);
147 componentList.add(component);
148 String subCategoryName2 = "Database";
149 Component component2 = initComponent(ComponentTypeEnum.RESOURCE, subCategoryName2, categoryName);
150 componentList.add(component2);
151 Map<String,Map<String,List<UiLeftPaletteComponent>>> response = getCategorizedComponents(getComponentsUtils().convertComponentToUiLeftPaletteComponentObject(componentList));
152 assertThat(response.get(categoryName).get(subCategoryName).size()).isEqualTo(1);
153 assertThat(response.get(categoryName).get(subCategoryName2).size()).isEqualTo(1);
157 public void categorizeResourceAndServiceSameCategoryDifferentSubcategory(){
158 List<Component> componentList = new ArrayList<>();
159 String categoryName = "Generic";
160 String subCategoryName = "Load Balancer";
161 Component component = initComponent(ComponentTypeEnum.RESOURCE, subCategoryName, categoryName);
162 componentList.add(component);
163 Component component2 = initComponent(ComponentTypeEnum.SERVICE, null, categoryName);
164 componentList.add(component2);
165 Map<String,Map<String,List<UiLeftPaletteComponent>>> response = getCategorizedComponents(getComponentsUtils().convertComponentToUiLeftPaletteComponentObject(componentList));
166 assertThat(response.get(categoryName).get(subCategoryName).size()).isEqualTo(1);
167 assertThat(response.get("Generic").get("Generic").size()).isEqualTo(1);
171 public void categorizeResourcesSameCategorySameSubcategory(){
172 List<Component> componentList = new ArrayList<>();
173 String categoryName = "Application L4+";
174 String subCategoryName = "Load Balancer";
175 Component component = initComponent(ComponentTypeEnum.RESOURCE, subCategoryName, categoryName);
176 componentList.add(component);
177 componentList.add(component);
178 Map<String,Map<String,List<UiLeftPaletteComponent>>> response = getCategorizedComponents(getComponentsUtils().convertComponentToUiLeftPaletteComponentObject(componentList));
179 assertThat(response.get(categoryName).get(subCategoryName).size()).isEqualTo(2);
183 public void categorizeTwoServices(){
184 List<Component> componentList = new ArrayList<>();
185 String categoryName = "Application L4+";
186 String categoryName2 = "IP Mux Demux";
187 Component component = initComponent(ComponentTypeEnum.SERVICE, null, categoryName);
188 componentList.add(component);
189 Component component2 = initComponent(ComponentTypeEnum.SERVICE, null, categoryName2);
190 componentList.add(component2);
191 Map<String,Map<String,List<UiLeftPaletteComponent>>> response = getCategorizedComponents(getComponentsUtils().convertComponentToUiLeftPaletteComponentObject(componentList));
192 assertThat(response.get("Generic").get("Generic").size()).isEqualTo(2);
196 public void categorizeTwoResourcesDiffCategory(){
197 List<Component> componentList = new ArrayList<>();
198 String categoryName = "Application L4+";
199 String categoryName2 = "IP Mux Demux";
200 String subCategoryName = "Load Balancer";
201 Component component = initComponent(ComponentTypeEnum.RESOURCE, subCategoryName, categoryName);
202 componentList.add(component);
203 Component component2 = initComponent(ComponentTypeEnum.RESOURCE, subCategoryName, categoryName2);
204 componentList.add(component2);
205 Map<String,Map<String,List<UiLeftPaletteComponent>>> response = getCategorizedComponents(getComponentsUtils().convertComponentToUiLeftPaletteComponentObject(componentList));
206 assertThat(response.get(categoryName).get(subCategoryName).size()).isEqualTo(1);
207 assertThat(response.get(categoryName2).get(subCategoryName).size()).isEqualTo(1);
210 private Component initComponent(ComponentTypeEnum componentTypeEnum, String subCategoryName, String categoryName) {
211 Component component = null;
212 if(componentTypeEnum == ComponentTypeEnum.RESOURCE){
213 component = new Resource();
215 if(componentTypeEnum == ComponentTypeEnum.SERVICE){
216 component = new Service();
218 component.setComponentType(componentTypeEnum);
219 CategoryDefinition categoryDefinition = new CategoryDefinition();
220 SubCategoryDefinition subCategoryDefinition = new SubCategoryDefinition();
221 subCategoryDefinition.setName(subCategoryName);
222 List<SubCategoryDefinition> subCategoryDefinitionList = new ArrayList<>();
223 subCategoryDefinitionList.add(subCategoryDefinition);
224 categoryDefinition.setSubcategories(subCategoryDefinitionList);
225 categoryDefinition.setName(categoryName);
226 List<CategoryDefinition> categoryDefinitionList = new ArrayList<>();
227 categoryDefinitionList.add(categoryDefinition);
228 component.setCategories(categoryDefinitionList);
229 List<String> tags = new ArrayList<>();
232 component.setTags(tags);