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