Raise JUnit coverage common-be
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / path / BaseForwardingPathTest.java
1 package org.openecomp.sdc.be.components.path;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5
6 import java.util.ArrayList;
7 import java.util.HashMap;
8 import java.util.Map;
9
10 import org.junit.Before;
11 import org.openecomp.sdc.be.components.BeConfDependentTest;
12 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
13 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
14 import org.openecomp.sdc.be.components.path.beans.TitanGraphTestSetup;
15 import org.openecomp.sdc.be.components.path.utils.GraphTestUtils;
16 import org.openecomp.sdc.be.dao.api.ActionStatus;
17 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
18 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
19 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
20 import org.openecomp.sdc.be.dao.titan.TitanGraphClient;
21 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
22 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
23 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
24 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
25 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
26 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
27 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
28 import org.openecomp.sdc.be.model.DistributionStatusEnum;
29 import org.openecomp.sdc.be.model.LifecycleStateEnum;
30 import org.openecomp.sdc.be.model.Resource;
31 import org.openecomp.sdc.be.model.Service;
32 import org.openecomp.sdc.be.model.User;
33 import org.openecomp.sdc.be.model.category.CategoryDefinition;
34 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
35 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
36 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
37 import org.openecomp.sdc.be.tosca.CapabiltyRequirementConvertor;
38 import org.openecomp.sdc.be.user.Role;
39 import org.openecomp.sdc.common.util.ValidationUtils;
40 import org.openecomp.sdc.exception.ResponseFormat;
41 import org.springframework.beans.factory.annotation.Autowired;
42
43 import com.google.common.collect.Lists;
44
45 import fj.data.Either;
46
47 public class BaseForwardingPathTest extends BeConfDependentTest implements ForwardingPathTestUtils {
48
49     protected User user;
50     protected ForwardingPathDataDefinition forwardingPathDataDefinition;
51
52     @Autowired
53     protected TitanGraphClient titanGraphClient;
54
55     @Autowired
56     protected CapabiltyRequirementConvertor capabiltyRequirementConvertor;
57
58     @Autowired
59     protected ToscaOperationFacade toscaOperationFacade;
60
61     @Autowired
62     protected ServiceBusinessLogic bl;
63
64     @Autowired
65     protected IElementOperation elementDao;
66
67     @Autowired
68     protected ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
69
70     @javax.annotation.Resource
71     protected TitanDao titanDao;
72
73     @Before
74     public void initTitan() {
75         TitanGraphTestSetup.createGraph(titanGraphClient.getGraph().left().value());
76         categoryDefinition = new CategoryDefinition();
77         categoryDefinition.setName(CATEGORY_NAME);
78     }
79
80     @Before
81     public void initUser() {
82         // User data and management
83         user = new User();
84         user.setUserId("jh0003");
85         user.setFirstName("Jimmi");
86         user.setLastName("Hendrix");
87         user.setRole(Role.ADMIN.name());
88     }
89
90
91     protected CategoryDefinition categoryDefinition;
92     protected static final String GENERIC_SERVICE_NAME = "org.openecomp.resource.abstract.nodes.service";
93     protected static final String CATEGORY_NAME = "cat_name";
94     protected static final String FORWARDING_PATH_ID = "forwarding_pathId";
95     protected static final String HTTP_PROTOCOL = "http";
96
97
98     protected Resource setupGenericServiceMock() {
99         Resource genericService = new Resource();
100         genericService.setVersion("1.0");
101         genericService.setToscaResourceName(GENERIC_SERVICE_NAME);
102         return genericService;
103     }
104
105     protected void initGraph() {
106         Map<GraphPropertyEnum, Object> props = new HashMap<>();
107         props.put(GraphPropertyEnum.IS_HIGHEST_VERSION, true);
108         props.put(GraphPropertyEnum.STATE, LifecycleStateEnum.CERTIFIED.name());
109         props.put(GraphPropertyEnum.TOSCA_RESOURCE_NAME, "org.openecomp.resource.abstract.nodes.service");
110
111         GraphTestUtils.createServiceVertex(titanDao, props);
112
113         GraphVertex resourceVertex = GraphTestUtils.createResourceVertex(titanDao, props, ResourceTypeEnum.PNF);
114         resourceVertex.setJsonMetadataField(JsonPresentationFields.VERSION, "0.1");
115         Either<GraphVertex, TitanOperationStatus> vertexTitanOperationStatusEither = titanDao.updateVertex(resourceVertex);
116         assertTrue(vertexTitanOperationStatusEither.isLeft());
117     }
118
119     protected Service createTestService() {
120         createCategory();
121         createServiceCategory(CATEGORY_NAME);
122         initGraph();
123         Service service = new Service();
124         service.setName("ForwardingPathTestingService");
125         service.setDescription("Just a comment.");
126         service.setTags(Lists.newArrayList(service.getName(), service.getComponentType().getValue() + service.getName() + "2"));
127         service.setContactId("as123y");
128         service.setIcon("MyIcon");
129         service.setProjectCode("414155");
130         ArrayList<CategoryDefinition> categories = new ArrayList<>();
131         CategoryDefinition cd = new CategoryDefinition();
132         cd.setName(CATEGORY_NAME);
133         cd.setNormalizedName("abcde");
134         categories.add(cd);
135         service.setCategories(categories);
136         service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
137         service.setDistributionStatus(DistributionStatusEnum.DISTRIBUTION_APPROVED);
138         return service;
139     }
140
141     protected void createCategory() {
142         Either<CategoryDefinition, ActionStatus> category = elementDao.createCategory(categoryDefinition, NodeTypeEnum.ServiceNewCategory);
143         assertTrue("Failed to create category", category.isLeft());
144     }
145
146     protected void createServiceCategory(String categoryName) {
147         GraphVertex cat = new GraphVertex(VertexTypeEnum.SERVICE_CATEGORY);
148         Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
149         String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.SERVICE_CATEGORY);
150         cat.setUniqueId(catId);
151         metadataProperties.put(GraphPropertyEnum.UNIQUE_ID, catId);
152         metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.SERVICE_CATEGORY.getName());
153         metadataProperties.put(GraphPropertyEnum.NAME, categoryName);
154         metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
155         cat.setMetadataProperties(metadataProperties);
156         cat.updateMetadataJsonWithCurrentMetadataProperties();
157
158         Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
159
160         assertTrue(catRes.isLeft());
161     }
162
163     protected Service initForwardPath() {
164         ForwardingPathDataDefinition forwardingPathDataDefinition = createMockPath();
165         Service service = new Service();
166         service.setUniqueId(FORWARDING_PATH_ID);
167         assertEquals(null, service.addForwardingPath(forwardingPathDataDefinition));
168         return service;
169     }
170
171     protected ForwardingPathDataDefinition createMockPath() {
172         if (forwardingPathDataDefinition != null) {
173             return forwardingPathDataDefinition;
174         }
175         forwardingPathDataDefinition = new ForwardingPathDataDefinition("Yoyo");
176         forwardingPathDataDefinition.setUniqueId(java.util.UUID.randomUUID().toString());
177         forwardingPathDataDefinition.setDestinationPortNumber("414155");
178         forwardingPathDataDefinition.setProtocol(HTTP_PROTOCOL);
179         org.openecomp.sdc.be.datatypes.elements.ListDataDefinition<org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition> forwardingPathElementDataDefinitionListDataDefinition = new org.openecomp.sdc.be.datatypes.elements.ListDataDefinition<>();
180         forwardingPathElementDataDefinitionListDataDefinition.add(new ForwardingPathElementDataDefinition("fromNode", "toNode", "333", "444", "2222", "5555"));
181         forwardingPathElementDataDefinitionListDataDefinition.add(new ForwardingPathElementDataDefinition("toNode", "toNode2", "4444", "44444", "4", "44"));
182         forwardingPathDataDefinition.setPathElements(forwardingPathElementDataDefinitionListDataDefinition);
183         return forwardingPathDataDefinition;
184     }
185
186     protected Service createService() {
187         Either<Service, ResponseFormat> serviceCreateResult = bl.createService(createTestService(), user);
188         assertTrue("Failed to create service", serviceCreateResult.isLeft());
189         Service service = serviceCreateResult.left().value();
190 //        ComponentInstance componentInstance = new ComponentInstance();
191 //        componentInstance.setName("Test1");
192 //        componentInstance.setNormalizedName("Test1");
193 //        componentInstance.setUniqueId("Test1");
194 //        componentInstance.setInputValueCounter(1);
195 //        componentInstance.setAttributeValueCounter(1);
196 //        componentInstance.setIcon("network");
197 //        componentInstance.setComponentVersion("1.0");
198 //        componentInstance.setIsProxy(true);
199 //        componentInstance.setComponentUid(service.getUniqueId());
200 //        componentInstance.setPropertyValueCounter(1);
201 //        componentInstance.setPosX("333");
202 //        componentInstance.setPosY("333");
203 //        componentInstance.setOriginType(OriginTypeEnum.VF);
204 //
205 //        Either<ComponentInstance, ResponseFormat> instanceResult = serviceComponentInstanceBusinessLogic.createComponentInstance("services", service.getUniqueId(), user.getUserId(), componentInstance);
206 //        assertTrue("Failed to create instance", instanceResult.isLeft());
207         return service;
208     }
209 }
210