re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / path / ComponentInstanceForwardingPathMergeTest.java
1 package org.openecomp.sdc.be.components.merge.path;
2
3 import fj.data.Either;
4 import org.junit.Before;
5 import org.junit.Test;
6 import org.mockito.InjectMocks;
7 import org.mockito.Mock;
8 import org.mockito.MockitoAnnotations;
9 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
10 import org.openecomp.sdc.be.components.merge.instance.ComponentInstanceForwardingPathMerge;
11 import org.openecomp.sdc.be.components.path.BaseForwardingPathVersionChangeTest;
12 import org.openecomp.sdc.be.impl.ForwardingPathUtils;
13 import org.openecomp.sdc.be.model.Component;
14 import org.openecomp.sdc.be.model.Service;
15 import org.openecomp.sdc.be.model.User;
16 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
17 import org.openecomp.sdc.common.api.UserRoleEnum;
18 import org.openecomp.sdc.exception.ResponseFormat;
19
20 import java.util.Set;
21
22 import static groovy.util.GroovyTestCase.assertEquals;
23 import static junit.framework.Assert.assertNotNull;
24 import static junit.framework.TestCase.assertTrue;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.anyBoolean;
27 import static org.mockito.Mockito.when;
28
29 public class ComponentInstanceForwardingPathMergeTest extends BaseForwardingPathVersionChangeTest {
30
31     @InjectMocks
32     private ComponentInstanceForwardingPathMerge testInstance;
33
34     @Mock
35     private ServiceBusinessLogic serviceBusinessLogic;
36
37     @Mock
38     private ToscaOperationFacade toscaOperationFacade;
39     private User user;
40
41     @Before
42     public void setUpData() {
43         MockitoAnnotations.initMocks(this);
44         user = new User();
45         user.setUserId("44");
46         user.setRole(UserRoleEnum.ADMIN.getName());
47     }
48
49     @Test
50     public void testIgnoreMergeSinceItIsNotService() {
51
52         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
53         assertEquals(nodeACI.getName(), dataHolder.getOrigComponentInstId());
54         Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
55             .mergeDataAfterCreate(user, dataHolder, newNodeAC, "3344");
56         assertNotNull(componentResponseFormatEither);
57         assertTrue(componentResponseFormatEither.isLeft());
58         assertEquals(newNodeAC, componentResponseFormatEither.left().value());
59     }
60
61     @Test
62     public void mergeShouldDelete() {
63         Set<String> forwardingPathNamesToDeleteOnComponentInstanceDeletion = new ForwardingPathUtils()
64             .findForwardingPathNamesToDeleteOnComponentInstanceDeletion(service, nodeACI.getUniqueId());
65         nodeACI.getCapabilities().clear();
66         newNodeAC.getCapabilities().clear();
67         Either<Set<String>, ResponseFormat> returnValue = Either.left(forwardingPathNamesToDeleteOnComponentInstanceDeletion);
68         when(serviceBusinessLogic.deleteForwardingPaths(any(), any(), any(), anyBoolean()))
69             .thenReturn(returnValue);
70         when(toscaOperationFacade.getToscaFullElement(any())).thenReturn(Either.left(newNodeAC));
71
72         // Change internal ci, just like change version do
73         service.getComponentInstances().remove(nodeACI);
74         service.getComponentInstances().add(newNodeACI);
75
76         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
77         assertEquals(nodeACI.getName(), dataHolder.getOrigComponentInstId());
78         Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
79             .mergeDataAfterCreate(user, dataHolder, service, newNodeA);
80         assertNotNull(componentResponseFormatEither);
81         assertTrue(componentResponseFormatEither.isLeft());
82         assertEquals(0, ((Service) componentResponseFormatEither.left().value()).getForwardingPaths().size());
83     }
84
85     @Test
86     public void mergeShouldUpdate() {
87           when(serviceBusinessLogic.updateForwardingPath(any(), any(), any(), anyBoolean()))
88               .then(invocationOnMock -> Either.left(service));
89            when(toscaOperationFacade.getToscaFullElement(any())).thenReturn(Either.left(newNodeAC));
90           testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
91           assertEquals(nodeACI.getName(), dataHolder.getOrigComponentInstId());
92
93           // Change internal ci, just like change version do
94           service.getComponentInstances().remove(nodeACI);
95           service.getComponentInstances().add(newNodeACI);
96
97           Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
98               .mergeDataAfterCreate(user, dataHolder, service, newNodeA);
99           assertNotNull(componentResponseFormatEither);
100           assertTrue(componentResponseFormatEither.isLeft());
101     }
102
103     @Test
104     public void handleNullCapailities() {
105         nodeACI.setCapabilities(null);
106         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
107     }
108 }