1 package org.openecomp.sdc.be.components.impl;
3 import static org.junit.Assert.assertTrue;
4 import static org.mockito.ArgumentMatchers.any;
5 import static org.mockito.ArgumentMatchers.eq;
6 import static org.mockito.Mockito.when;
8 import java.util.HashMap;
11 import java.util.function.BiPredicate;
13 import org.assertj.core.util.Lists;
14 import org.junit.BeforeClass;
15 import org.junit.Test;
16 import org.mockito.Mockito;
17 import org.openecomp.sdc.be.dao.api.ActionStatus;
18 import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
19 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
20 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
21 import org.openecomp.sdc.be.impl.ComponentsUtils;
22 import org.openecomp.sdc.be.impl.ServletUtils;
23 import org.openecomp.sdc.be.model.CapabilityDefinition;
24 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
25 import org.openecomp.sdc.be.model.Component;
26 import org.openecomp.sdc.be.model.ComponentInstance;
27 import org.openecomp.sdc.be.model.ComponentParametersView;
28 import org.openecomp.sdc.be.model.RelationshipImpl;
29 import org.openecomp.sdc.be.model.RelationshipInfo;
30 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
31 import org.openecomp.sdc.be.model.RequirementDefinition;
32 import org.openecomp.sdc.be.model.Resource;
33 import org.openecomp.sdc.be.model.Service;
34 import org.openecomp.sdc.be.model.User;
35 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
36 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
37 import org.openecomp.sdc.be.user.UserBusinessLogic;
38 import org.openecomp.sdc.exception.ResponseFormat;
40 import fj.data.Either;
43 * The test suite designed for test functionality of ComponentInstanceBusinessLogic class
45 public class ComponentInstanceBusinessLogicTest {
47 private final static String USER_ID = "jh0003";
48 private final static String COMPONENT_ID = "componentId";
49 private final static String TO_INSTANCE_ID = "toInstanceId";
50 private final static String FROM_INSTANCE_ID = "fromInstanceId";
51 private final static String RELATION_ID = "relationId";
52 private final static String CAPABILITY_OWNER_ID = "capabilityOwnerId";
53 private final static String CAPABILITY_UID = "capabilityUid";
54 private final static String CAPABILITY_NAME = "capabilityName";
55 private final static String REQUIREMENT_OWNER_ID = "requirementOwnerId";
56 private final static String REQUIREMENT_UID = "requirementUid";
57 private final static String REQUIREMENT_NAME = "requirementName";
58 private final static String RELATIONSHIP_TYPE = "relationshipType";
60 private static ComponentsUtils componentsUtils;
61 private static ServletUtils servletUtils;
62 private static ResponseFormat responseFormat;
63 private static ToscaOperationFacade toscaOperationFacade;
64 private static UserBusinessLogic userAdmin;
66 private static ComponentInstanceBusinessLogic serviceBusinessLogic;
67 private static ComponentInstanceBusinessLogic resourceBusinessLogic;
68 private static User user;
69 private static Component service;
70 private static Component resource;
71 private static ComponentInstance toInstance;
72 private static ComponentInstance fromInstance;
73 private static CapabilityDataDefinition capability;
74 private static RequirementDataDefinition requirement;
75 private static RequirementCapabilityRelDef relation;
78 public static void setup() {
86 public void testGetRelationByIdSuccess(){
87 getServiceRelationByIdSuccess(service);
88 getServiceRelationByIdSuccess(resource);
92 public void testGetRelationByIdUserValidationFailure(){
93 getServiceRelationByIdUserValidationFailure(service);
94 getServiceRelationByIdUserValidationFailure(resource);
98 public void testGetRelationByIdComponentNotFoundFailure(){
99 getRelationByIdComponentNotFoundFailure(service);
100 getRelationByIdComponentNotFoundFailure(resource);
103 @SuppressWarnings("unchecked")
104 private void getServiceRelationByIdSuccess(Component component){
105 Either<User, ActionStatus> eitherCreator = Either.left(user);
106 when(userAdmin.getUser(eq(USER_ID), eq(false))).thenReturn(eitherCreator);
107 Either<Component, StorageOperationStatus> getComponentRes = Either.left(component);
108 when(toscaOperationFacade.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(getComponentRes);
110 Either<RequirementDataDefinition, StorageOperationStatus> getfulfilledRequirementRes = Either.left(requirement);
111 when(toscaOperationFacade.getFulfilledRequirementByRelation(eq(COMPONENT_ID), eq(FROM_INSTANCE_ID), eq(relation), any(BiPredicate.class))).thenReturn(getfulfilledRequirementRes);
113 Either<CapabilityDataDefinition, StorageOperationStatus> getfulfilledCapabilityRes = Either.left(capability);
114 when(toscaOperationFacade.getFulfilledCapabilityByRelation(eq(COMPONENT_ID), eq(FROM_INSTANCE_ID), eq(relation), any(BiPredicate.class))).thenReturn(getfulfilledCapabilityRes);
116 Either<RequirementCapabilityRelDef, ResponseFormat> response = serviceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
117 assertTrue(response.isLeft());
120 private void getServiceRelationByIdUserValidationFailure(Component component){
121 Either<User, ActionStatus> eitherCreator = Either.right(ActionStatus.USER_NOT_FOUND);
122 when(userAdmin.getUser(eq(USER_ID), eq(false))).thenReturn(eitherCreator);
124 Either<RequirementCapabilityRelDef, ResponseFormat> response = serviceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
125 assertTrue(response.isRight());
128 private void getRelationByIdComponentNotFoundFailure(Component component){
129 Either<User, ActionStatus> eitherCreator = Either.left(user);
130 when(userAdmin.getUser(eq(USER_ID), eq(false))).thenReturn(eitherCreator);
131 Either<Component, StorageOperationStatus> getComponentRes = Either.right(StorageOperationStatus.NOT_FOUND);
132 when(toscaOperationFacade.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(getComponentRes);
134 Either<RequirementCapabilityRelDef, ResponseFormat> response = serviceBusinessLogic.getRelationById(COMPONENT_ID, RELATION_ID, USER_ID, component.getComponentType());
135 assertTrue(response.isRight());
138 private static void createMocks() {
139 componentsUtils = Mockito.mock(ComponentsUtils.class);
140 servletUtils = Mockito.mock(ServletUtils.class);
141 responseFormat = Mockito.mock(ResponseFormat.class);
142 toscaOperationFacade = Mockito.mock(ToscaOperationFacade.class);
143 userAdmin = Mockito.mock(UserBusinessLogic.class);
144 user = Mockito.mock(User.class);
147 private static void setMocks() {
148 serviceBusinessLogic = new ServiceComponentInstanceBusinessLogic();
149 serviceBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
150 serviceBusinessLogic.setUserAdmin(userAdmin);
151 serviceBusinessLogic.setComponentsUtils(componentsUtils);
153 resourceBusinessLogic = new VFComponentInstanceBusinessLogic();
154 resourceBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
155 resourceBusinessLogic.setUserAdmin(userAdmin);
156 resourceBusinessLogic.setComponentsUtils(componentsUtils);
159 private static void stubMethods() {
160 when(servletUtils.getComponentsUtils()).thenReturn(componentsUtils);
161 when(componentsUtils.getResponseFormat(eq(ActionStatus.RELATION_NOT_FOUND), eq(RELATION_ID), eq(COMPONENT_ID))).thenReturn(responseFormat);
164 private static void createComponents() {
171 private static void createResource() {
172 resource = new Resource();
173 resource.setUniqueId(COMPONENT_ID);
174 resource.setComponentInstancesRelations(Lists.newArrayList(relation));
175 resource.setComponentInstances(Lists.newArrayList(toInstance,fromInstance));
176 resource.setCapabilities(toInstance.getCapabilities());
177 resource.setRequirements(fromInstance.getRequirements());
178 resource.setComponentType(ComponentTypeEnum.RESOURCE);
182 private static void createService() {
183 service = new Service();
184 service.setUniqueId(COMPONENT_ID);
185 service.setComponentInstancesRelations(Lists.newArrayList(relation));
186 service.setComponentInstances(Lists.newArrayList(toInstance,fromInstance));
187 service.setCapabilities(toInstance.getCapabilities());
188 service.setRequirements(fromInstance.getRequirements());
189 service.setComponentType(ComponentTypeEnum.SERVICE);
193 private static void createInstances() {
194 toInstance = new ComponentInstance();
195 toInstance.setUniqueId(TO_INSTANCE_ID);
197 fromInstance = new ComponentInstance();
198 fromInstance.setUniqueId(FROM_INSTANCE_ID);
200 capability = new CapabilityDataDefinition();
201 capability.setOwnerId(CAPABILITY_OWNER_ID);
202 capability.setUniqueId(CAPABILITY_UID);
203 capability.setName(CAPABILITY_NAME);
205 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
206 capabilities.put(capability.getName(), Lists.newArrayList(new CapabilityDefinition(capability)));
208 requirement = new RequirementDataDefinition();
209 requirement.setOwnerId(REQUIREMENT_OWNER_ID);
210 requirement.setUniqueId(REQUIREMENT_UID);
211 requirement.setName(REQUIREMENT_NAME);
212 requirement.setRelationship(RELATIONSHIP_TYPE);
215 Map<String, List<RequirementDefinition>> requirements = new HashMap<>();
216 requirements.put(requirement.getCapability(), Lists.newArrayList(new RequirementDefinition(requirement)));
218 toInstance.setCapabilities(capabilities);
219 fromInstance.setRequirements(requirements);
223 private static void createRelation() {
225 relation = new RequirementCapabilityRelDef();
226 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
227 RelationshipInfo relationInfo = new RelationshipInfo();
228 relationInfo.setId(RELATION_ID);
229 relationship.setRelation(relationInfo);
231 relation.setRelationships(Lists.newArrayList(relationship));
232 relation.setToNode(TO_INSTANCE_ID);
233 relation.setFromNode(FROM_INSTANCE_ID);
235 relationInfo.setCapabilityOwnerId(CAPABILITY_OWNER_ID);
236 relationInfo.setCapabilityUid(CAPABILITY_UID);
237 relationInfo.setCapability(CAPABILITY_NAME);
238 relationInfo.setRequirementOwnerId(REQUIREMENT_OWNER_ID);
239 relationInfo.setRequirementUid(REQUIREMENT_UID);
240 relationInfo.setRequirement(REQUIREMENT_NAME);
241 RelationshipImpl relationshipImpl = new RelationshipImpl();
242 relationshipImpl.setType(RELATIONSHIP_TYPE);
243 relationInfo.setRelationships(relationshipImpl);