Upgrade SDC from Titan to Janus Graph
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / AttributeBusinessLogicTest.java
1 package org.openecomp.sdc.be.components.impl;
2
3 import java.lang.reflect.Field;
4 import java.util.ArrayList;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8
9 import junit.framework.Assert;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.mockito.Mockito;
13 import org.openecomp.sdc.be.components.validation.UserValidations;
14 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
15 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
16 import org.openecomp.sdc.be.impl.ComponentsUtils;
17 import org.openecomp.sdc.be.model.*;
18 import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
19 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
20 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
21 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
22 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation;
23 import org.openecomp.sdc.be.model.tosca.ToscaPropertyType;
24 import org.openecomp.sdc.exception.ResponseFormat;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.anyObject;
27 import static org.mockito.Mockito.when;
28
29 import fj.data.Either;
30
31
32 public class AttributeBusinessLogicTest {
33
34         private AttributeBusinessLogic createTestSubject() {
35                 return new AttributeBusinessLogic();
36         }
37
38         UserValidations userValidations  = Mockito.mock(UserValidations.class);
39         ComponentsUtils componentsUtils = Mockito.mock(ComponentsUtils.class);
40         JanusGraphDao janusGraphDao = Mockito.mock(JanusGraphDao.class);
41         ToscaOperationFacade toscaOperationFacade  = Mockito.mock(ToscaOperationFacade.class);
42         ApplicationDataTypeCache applicationDataTypeCache = Mockito.mock(ApplicationDataTypeCache.class);
43         PropertyOperation propertyOperation = Mockito.mock(PropertyOperation.class);
44         Field baseBusinessLogic;
45         Field baseBusinessLogic1;
46         Field baseBusinessLogic2;
47         Field baseBusinessLogic3;
48         AttributeBusinessLogic attributeBusinessLogic=createTestSubject();
49         IGraphLockOperation igraphLockOperation = Mockito.mock(IGraphLockOperation.class);
50
51
52         @Before
53         public void setup() throws Exception{
54
55                 baseBusinessLogic = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("graphLockOperation");
56                 baseBusinessLogic.setAccessible(true);
57                 baseBusinessLogic.set(attributeBusinessLogic, igraphLockOperation);
58
59                 baseBusinessLogic1 = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("userValidations");
60                 baseBusinessLogic1.setAccessible(true);
61                 baseBusinessLogic1.set(attributeBusinessLogic, userValidations);
62
63                 baseBusinessLogic2 = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("componentsUtils");
64                 baseBusinessLogic2.setAccessible(true);
65                 baseBusinessLogic2.set(attributeBusinessLogic, componentsUtils);
66
67                 baseBusinessLogic3 = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("janusGraphDao");
68                 baseBusinessLogic3.setAccessible(true);
69                 baseBusinessLogic3.set(attributeBusinessLogic, janusGraphDao);
70
71                 baseBusinessLogic = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("toscaOperationFacade");
72                 baseBusinessLogic.setAccessible(true);
73                 baseBusinessLogic.set(attributeBusinessLogic, toscaOperationFacade);
74
75                 baseBusinessLogic = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("applicationDataTypeCache");
76                 baseBusinessLogic.setAccessible(true);
77                 baseBusinessLogic.set(attributeBusinessLogic, applicationDataTypeCache);
78
79                 baseBusinessLogic = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("propertyOperation");
80                 baseBusinessLogic.setAccessible(true);
81                 baseBusinessLogic.set(attributeBusinessLogic, propertyOperation);
82         }
83
84
85         @Test
86         public void testCreateAttribute() throws Exception {
87                 AttributeBusinessLogic testSubject;
88                 String resourceId = "";
89                 PropertyDefinition newAttributeDef = null;
90                 String userId = "";
91                 Either<PropertyDefinition, ResponseFormat> result;
92
93                 // default test
94                 testSubject = createTestSubject();
95         }
96
97
98         @Test
99         public void testIsAttributeExist() throws Exception {
100                 AttributeBusinessLogic testSubject;List<PropertyDefinition> attributes = null;
101                 String resourceUid = "";
102                 String propertyName = "";
103                 boolean result;
104
105                 // test 1
106                 testSubject=createTestSubject();attributes = null;
107         }
108
109
110         @Test
111         public void testGetAttribute() throws Exception {
112                 AttributeBusinessLogic testSubject;
113                 String resourceId = "";
114                 String attributeId = "";
115                 String userId = "";
116                 Either<PropertyDefinition, ResponseFormat> result;
117
118                 // default test
119                 testSubject = createTestSubject();
120         }
121
122
123         @Test
124         public void testUpdateAttribute() throws Exception {
125                 AttributeBusinessLogic testSubject;
126                 String resourceId = "";
127                 String attributeId = "";
128                 PropertyDefinition newAttDef = null;
129                 String userId = "";
130                 Either<PropertyDefinition, ResponseFormat> result;
131
132                 // default test
133                 testSubject = createTestSubject();
134         }
135
136
137         @Test
138         public void testDeleteAttribute() throws Exception {
139                 AttributeBusinessLogic testSubject;
140                 String resourceId = "";
141                 String attributeId = "";
142                 String userId = "";
143                 Either<PropertyDefinition, ResponseFormat> result;
144
145                 // default test
146                 testSubject = createTestSubject();
147         }
148
149
150         @Test
151         public void createAttribute_lockfail() throws Exception {
152                 Either<PropertyDefinition, ResponseFormat> response;
153                 PropertyDefinition prop= new PropertyDefinition();
154
155                 response = attributeBusinessLogic.createAttribute("RES01", prop, "USR01");
156
157                 Assert.assertEquals(true,response.isRight());
158
159         }
160
161         @Test
162         public void createAttribute_Success() throws Exception {
163
164                 Component resource= new Resource();
165                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
166                 resource.setIsDeleted(false);
167                 resource.setLastUpdaterUserId("USR01");
168
169                 PropertyDefinition prop= new PropertyDefinition();
170                 prop.setType(ToscaPropertyType.STRING.getType());
171
172                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
173
174                 //Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.INVALID_PROPERTY);
175                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
176                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
177                 PropertyDefinition propertyDefinition = new PropertyDefinition();
178                 Either<PropertyDefinition, StorageOperationStatus> either = Either.left(propertyDefinition);
179                 when(toscaOperationFacade.addAttributeOfResource(anyObject(),anyObject())).thenReturn(either);
180
181                 when(propertyOperation.isPropertyTypeValid(anyObject())).thenReturn(true);
182
183                 Map<String,DataTypeDefinition> data=new HashMap<>();
184                 data.put("ONE",new DataTypeDefinition());
185                 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(data);
186                 when(applicationDataTypeCache.getAll()).thenReturn(allDataTypes);
187
188                 when(propertyOperation.isPropertyDefaultValueValid(anyObject(),anyObject())).thenReturn(true);
189                 Either<PropertyDefinition, ResponseFormat> response;
190
191                 response = attributeBusinessLogic.createAttribute("RES01", prop, "USR01");
192
193                 Assert.assertEquals(true,response.isLeft());
194
195         }
196
197         @Test
198         public void createAttribute_failtogettoscaelement() throws Exception {
199
200                 Component resource= new Resource();
201                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
202                 resource.setIsDeleted(false);
203                 resource.setLastUpdaterUserId("USR01");
204
205                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
206
207                 Either<PropertyDefinition, ResponseFormat> response;
208                 PropertyDefinition prop= new PropertyDefinition();
209
210                 baseBusinessLogic = attributeBusinessLogic.getClass().getSuperclass().getDeclaredField("toscaOperationFacade");
211                 baseBusinessLogic.setAccessible(true);
212                 baseBusinessLogic.set(attributeBusinessLogic, toscaOperationFacade);
213                 //Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.INVALID_PROPERTY);
214                 Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.GENERAL_ERROR);
215                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
216
217                 response = attributeBusinessLogic.createAttribute("RES01", prop, "USR01");
218
219                 Assert.assertEquals(true,response.isRight());
220
221         }
222
223         @Test
224         public void createAttribute_componentvalidationfails() throws Exception {
225
226                 Component resource= new Resource();
227                 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
228                 resource.setIsDeleted(false);
229                 resource.setLastUpdaterUserId("USR02");
230
231                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
232
233                 Either<PropertyDefinition, ResponseFormat> response;
234                 PropertyDefinition prop= new PropertyDefinition();
235
236                 //Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.INVALID_PROPERTY);
237                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
238                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
239
240                 response = attributeBusinessLogic.createAttribute("RES01", prop, "USR01");
241
242                 Assert.assertEquals(true,response.isRight());
243
244         }
245
246         @Test
247         public void createAttribute_componentalreadyexist_fails() throws Exception {
248
249                 Either<PropertyDefinition, ResponseFormat> response;
250                 PropertyDefinition prop= new PropertyDefinition();
251                 prop.setName("RES01");
252                 prop.setParentUniqueId("RES01");
253
254                 List<PropertyDefinition> attributes = new ArrayList<>();
255                 attributes.add(prop);
256
257                 Component resource= new Resource();
258                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
259                 resource.setIsDeleted(false);
260                 resource.setLastUpdaterUserId("USR01");
261                 ((Resource) resource).setAttributes(attributes);
262
263                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
264
265                 //Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.INVALID_PROPERTY);
266                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
267                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
268
269                 response = attributeBusinessLogic.createAttribute("RES01", prop, "USR01");
270
271                 Assert.assertEquals(true,response.isRight());
272
273         }
274
275
276         @Test
277         public void createAttribute_addresourcetostoragefails() throws Exception {
278
279                 Component resource= new Resource();
280                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
281                 resource.setIsDeleted(false);
282                 resource.setLastUpdaterUserId("USR01");
283
284                 PropertyDefinition prop= new PropertyDefinition();
285                 prop.setType(ToscaPropertyType.STRING.getType());
286
287                 IGraphLockOperation igraphLockOperation = Mockito.mock(IGraphLockOperation.class);
288                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
289
290                 //Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.INVALID_PROPERTY);
291                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
292                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
293                 PropertyDefinition propertyDefinition = new PropertyDefinition();
294                 Either<PropertyDefinition, StorageOperationStatus> either = Either.right(StorageOperationStatus.CONNECTION_FAILURE);
295                 when(toscaOperationFacade.addAttributeOfResource(anyObject(),anyObject())).thenReturn(either);
296
297                 when(propertyOperation.isPropertyTypeValid(anyObject())).thenReturn(true);
298
299                 Map<String,DataTypeDefinition> data=new HashMap<>();
300                 data.put("ONE",new DataTypeDefinition());
301                 Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> allDataTypes = Either.left(data);
302                 when(applicationDataTypeCache.getAll()).thenReturn(allDataTypes);
303
304                 when(propertyOperation.isPropertyDefaultValueValid(anyObject(),anyObject())).thenReturn(true);
305                 Either<PropertyDefinition, ResponseFormat> response;
306
307                 response = attributeBusinessLogic.createAttribute("RES01", prop, "USR01");
308
309                 Assert.assertEquals(true,response.isRight());
310
311         }
312
313         @Test
314         public void testgetAttribute_ATTRIBUTE_NOT_FOUND() throws Exception {
315                 Either<PropertyDefinition, ResponseFormat> result;
316
317                 Component resource= new Resource();
318                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
319                 resource.setIsDeleted(false);
320                 resource.setLastUpdaterUserId("USR01");
321                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
322                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
323
324                 result=attributeBusinessLogic.getAttribute("RES01","ATTR01", "USR01");
325                 Assert.assertEquals(true,result.isRight());
326         }
327
328         @Test
329         public void testgetAttribute_success() throws Exception {
330                 Either<PropertyDefinition, ResponseFormat> result;
331
332                 Component resource= new Resource();
333                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
334                 resource.setIsDeleted(false);
335                 resource.setLastUpdaterUserId("USR01");
336
337                 PropertyDefinition prop= new PropertyDefinition();
338                 prop.setUniqueId("ATTR01");
339                 prop.setParentUniqueId("RES01");
340
341                 List<PropertyDefinition> attr = new ArrayList<>();
342                 attr.add(prop);
343
344                 ((Resource) resource).setAttributes(attr);
345                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
346                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
347
348                 result=attributeBusinessLogic.getAttribute("RES01","ATTR01", "USR01");
349                 Assert.assertEquals(true,result.isLeft());
350         }
351
352         @Test
353         public void testgetAttribute_RESOURCE_NOT_FOUND() throws Exception {
354                 Either<PropertyDefinition, ResponseFormat> result;
355
356                 Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.PARENT_RESOURCE_NOT_FOUND);
357                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
358
359                 result=attributeBusinessLogic.getAttribute("RES01","ATTR01", "USR01");
360                 Assert.assertEquals(true,result.isRight());
361         }
362
363         @Test
364         public void testdeleteAttribute_FAILED_TO_LOCK_COMPONENT() throws Exception {
365                 Either<PropertyDefinition, ResponseFormat> result;
366
367                 result=attributeBusinessLogic.deleteAttribute("RES01","ATTR01", "USR01");
368                 Assert.assertEquals(true,result.isRight());
369         }
370
371         @Test
372         public void testdeleteAttribute_get_RESOURCE_from_DB_failed() throws Exception {
373                 Either<PropertyDefinition, ResponseFormat> result;
374
375                 Either<Component, StorageOperationStatus> toscastatus=Either.right(StorageOperationStatus.CONNECTION_FAILURE);
376                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
377
378                 result=attributeBusinessLogic.deleteAttribute("RES01","ATTR01", "USR01");
379                 Assert.assertEquals(true,result.isRight());
380         }
381
382         @Test
383         public void testdeleteAttribute_get_RESOURCE_verification_failed() throws Exception {
384                 Either<PropertyDefinition, ResponseFormat> result;
385
386
387                 Component resource= new Resource();
388                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
389                 resource.setIsDeleted(true);
390                 resource.setLastUpdaterUserId("USR01");
391
392
393                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
394
395
396
397
398                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
399                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
400
401                 result=attributeBusinessLogic.deleteAttribute("RES01","ATTR01", "USR01");
402                 Assert.assertEquals(true,result.isRight());
403         }
404
405         @Test
406         public void testdeleteAttribute_nonexistingresource() throws Exception {
407                 Either<PropertyDefinition, ResponseFormat> result;
408
409
410                 Component resource= new Resource();
411                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
412                 resource.setIsDeleted(false);
413                 resource.setLastUpdaterUserId("USR01");
414
415                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
416
417                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
418                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
419
420                 result=attributeBusinessLogic.deleteAttribute("RES01","ATTR01", "USR01");
421                 Assert.assertEquals(true,result.isRight());
422         }
423
424         @Test
425         public void testdeleteAttribute_success() throws Exception {
426                 Either<PropertyDefinition, ResponseFormat> result;
427
428
429                 Component resource= new Resource();
430                 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
431                 resource.setIsDeleted(false);
432                 resource.setLastUpdaterUserId("USR01");
433
434
435                 when(igraphLockOperation.lockComponent(any(),any())).thenReturn(StorageOperationStatus.OK);
436
437                 Either<Component, StorageOperationStatus> toscastatus=Either.left(resource);
438                 when(toscaOperationFacade.getToscaElement("RES01")).thenReturn(toscastatus);
439                 when(toscaOperationFacade.deleteAttributeOfResource(any(),any())).thenReturn(StorageOperationStatus.OK);
440
441                 PropertyDefinition prop= new PropertyDefinition();
442                 prop.setUniqueId("ATTR01");
443                 prop.setParentUniqueId("RES01");
444                 List<PropertyDefinition> attributes = new ArrayList<>();
445                 attributes.add(prop);
446                 ((Resource) resource).setAttributes(attributes);
447
448                 result=attributeBusinessLogic.deleteAttribute("RES01","ATTR01", "USR01");
449                 Assert.assertEquals(true,result.isLeft());
450         }
451
452
453 }