re base code
[sdc.git] / catalog-model / src / test / java / org / openecomp / sdc / be / model / jsontitan / operations / UpgradeOperationTest.java
1 package org.openecomp.sdc.be.model.jsontitan.operations;
2
3 import fj.data.Either;
4 import org.apache.commons.lang3.tuple.ImmutablePair;
5 import org.junit.Before;
6 import org.junit.BeforeClass;
7 import org.junit.Test;
8 import org.junit.runner.RunWith;
9 import org.openecomp.sdc.be.dao.api.ActionStatus;
10 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
11 import org.openecomp.sdc.be.dao.jsongraph.utils.IdBuilderUtils;
12 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
13 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
14 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
15 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
16 import org.openecomp.sdc.be.model.*;
17 import org.openecomp.sdc.be.model.category.CategoryDefinition;
18 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
19 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
20 import org.openecomp.sdc.be.model.jsontitan.utils.GraphTestUtils;
21 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
22 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
23 import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
24 import org.springframework.test.context.ContextConfiguration;
25 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
26
27 import javax.annotation.Resource;
28 import java.util.ArrayList;
29 import java.util.List;
30
31 import static org.assertj.core.api.Assertions.assertThat;
32
33 @RunWith(SpringJUnit4ClassRunner.class)
34 @ContextConfiguration("classpath:application-context-test.xml")
35 public class UpgradeOperationTest extends ModelTestBase {
36
37     private boolean isInitialized;
38     @Resource
39     private TitanDao titanDao;
40     @Resource
41     private UpgradeOperation upgradeOperation;
42     @Resource
43     private TopologyTemplateOperation topologyTemplateOperation;
44     @Resource
45     private NodeTemplateOperation nodeTemplateOperation;
46     @Resource
47     private UserAdminOperation userAdminOperation; 
48     @javax.annotation.Resource
49     private IElementOperation elementOperation;
50
51     private User user;
52
53     private CategoryDefinition resourceCategory;
54     private CategoryDefinition serviceCategory;
55     
56
57     @BeforeClass
58     public static void initTest() {
59         ModelTestBase.init();
60     }
61
62     @Before
63     public void beforeTest() {
64         if (!isInitialized) {
65             GraphTestUtils.clearGraph(titanDao);
66             initGraphForTest();
67             isInitialized = true;
68         }
69     }
70
71     @Test
72     public void testGetSimpleDependency() {
73         
74         TopologyTemplate vf = createVf("vf1");
75         
76         TopologyTemplate service = createServiceWitnInstance("service1", vf);
77
78         
79         Either<List<ComponentDependency>, StorageOperationStatus> result = upgradeOperation.getComponentDependencies(vf.getUniqueId());
80         assertThat(result.isLeft()).isTrue();
81         List<ComponentDependency> dependencies = result.left().value();
82         assertThat(dependencies).hasSize(1);
83         
84         ComponentDependency dependency = dependencies.get(0);
85         assertThat(dependency.getName()).isEqualTo(vf.getName());
86         assertThat(dependency.getVersion()).isEqualTo(vf.getVersion());
87         assertThat(dependency.getDependencies()).hasSize(1);
88         
89         ComponentDependency container = dependency.getDependencies().get(0);
90         assertThat(container.getName()).isEqualTo(service.getName());
91         assertThat(container.getVersion()).isEqualTo(service.getVersion());
92         assertThat(container.getDependencies()).isNull();
93
94     }
95
96     /*******************************
97      * Preperation Methods
98      *******************************/
99     private void initGraphForTest() {
100
101         user = new User("Jim", "Tom", "jt123a", "1@mail.com", "DESIGNER", System.currentTimeMillis());
102         Either<User, StorageOperationStatus> saveUserData = userAdminOperation.saveUserData(user);
103         assertThat(saveUserData.isLeft()).isTrue();
104         
105         GraphTestUtils.createRootCatalogVertex(titanDao);
106         resourceCategory = createResourceCategories();
107         serviceCategory = createServiceCategory(); 
108         
109     }
110
111     private TopologyTemplate createServiceWitnInstance(String name, TopologyTemplate createdVf) {
112         
113         TopologyTemplate serviceNew = createTopologyTemplate(ComponentTypeEnum.SERVICE, name);
114         List<CategoryDefinition> categoriesService = new ArrayList<>();
115         categoriesService.add(serviceCategory);
116         serviceNew.setCategories(categoriesService);
117
118         Either<TopologyTemplate, StorageOperationStatus> createService = topologyTemplateOperation.createTopologyTemplate(serviceNew);
119         assertThat(createService.isLeft()).isTrue();
120         
121         ComponentInstance vfInstance = new ComponentInstance();
122         vfInstance.setUniqueId(createdVf.getUniqueId() + createdVf.getName());
123         vfInstance.setComponentUid(createdVf.getUniqueId());
124         vfInstance.setName(createdVf.getName());
125         Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addInstance = nodeTemplateOperation.addComponentInstanceToTopologyTemplate(serviceNew, createdVf, "0", vfInstance, false, user);
126         assertThat(addInstance.isLeft()).isTrue();
127         return serviceNew;
128     }
129
130     private CategoryDefinition createServiceCategory() {
131         CategoryDefinition categoryService = new CategoryDefinition();
132         categoryService.setName("servicecategory");
133         categoryService.setNormalizedName("servicecategory");
134         categoryService.setUniqueId("servicecategory");
135         Either<CategoryDefinition, ActionStatus> createCategory = elementOperation.createCategory(categoryService , NodeTypeEnum.ServiceNewCategory);
136         
137         assertThat(createCategory.isLeft()).isTrue();
138         return categoryService;
139     }
140
141     private TopologyTemplate createVf(String name) {
142         
143         TopologyTemplate resource = createTopologyTemplate(ComponentTypeEnum.RESOURCE, name);
144
145         resource.setResourceType(ResourceTypeEnum.VF);
146         List<CategoryDefinition> categories = new ArrayList<>();
147         categories.add(resourceCategory);
148         resource.setCategories(categories);
149         Either<TopologyTemplate, StorageOperationStatus> createVf = topologyTemplateOperation.createTopologyTemplate(resource);
150         assertThat( createVf.isLeft()).isTrue();
151         return resource;
152     }
153
154     private CategoryDefinition createResourceCategories() {
155         CategoryDefinition category = new CategoryDefinition();
156         category.setName("category1");
157         category.setNormalizedName("category1");
158         category.setUniqueId("category1");
159         Either<CategoryDefinition, ActionStatus> createCategory = elementOperation.createCategory(category , NodeTypeEnum.ResourceNewCategory);
160         assertThat(createCategory.isLeft()).isTrue();
161         
162         SubCategoryDefinition subCategory = new SubCategoryDefinition();
163         
164         subCategory.setName("subcategory1");
165         subCategory.setNormalizedName("subcategory1");
166         subCategory.setUniqueId("subcategory1");
167         elementOperation.createSubCategory(createCategory.left().value().getUniqueId(), subCategory, NodeTypeEnum.ResourceSubcategory);
168         category.addSubCategory(subCategory);
169         return category;
170     }
171
172     private TopologyTemplate createTopologyTemplate(ComponentTypeEnum type, String name) {
173         TopologyTemplate template = new TopologyTemplate();
174         template.setUniqueId(IdBuilderUtils.generateUniqueId());
175         template.setComponentType(type);
176         template.setHighestVersion(true);
177         template.setLifecycleState(LifecycleStateEnum.CERTIFIED);
178         template.setMetadataValue(JsonPresentationFields.NAME, name);
179         template.setMetadataValue(JsonPresentationFields.VERSION, "1.0");
180         template.setCreatorUserId(user.getUserId());
181         return template;
182     }
183 }