Sync Integ to Master
[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.anyBoolean;
26 import static org.mockito.Mockito.any;
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.getUniqueId(), 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         when(serviceBusinessLogic.deleteForwardingPaths(any(), any(), any(), anyBoolean()))
68             .thenReturn(Either.left(forwardingPathNamesToDeleteOnComponentInstanceDeletion));
69         when(toscaOperationFacade.getToscaFullElement(any())).thenReturn(Either.left(newNodeAC));
70
71         // Change internal ci, just like change version do
72         service.getComponentInstances().remove(nodeACI);
73         service.getComponentInstances().add(newNodeACI);
74
75         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
76         assertEquals(nodeACI.getUniqueId(), dataHolder.getOrigComponentInstId());
77         Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
78             .mergeDataAfterCreate(user, dataHolder, service, newNodeA);
79         assertNotNull(componentResponseFormatEither);
80         assertTrue(componentResponseFormatEither.isLeft());
81         assertEquals(0, ((Service) componentResponseFormatEither.left().value()).getForwardingPaths().size());
82     }
83
84     @Test
85     public void mergeShouldUpdate() {
86         when(serviceBusinessLogic.updateForwardingPath(any(), any(), any(), anyBoolean()))
87             .thenReturn(Either.left(service));
88         when(toscaOperationFacade.getToscaFullElement(any())).thenReturn(Either.left(newNodeAC));
89         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
90         assertEquals(nodeACI.getUniqueId(), dataHolder.getOrigComponentInstId());
91
92         // Change internal ci, just like change version do
93         service.getComponentInstances().remove(nodeACI);
94         service.getComponentInstances().add(newNodeACI);
95
96         Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
97             .mergeDataAfterCreate(user, dataHolder, service, newNodeA);
98         assertNotNull(componentResponseFormatEither);
99         assertTrue(componentResponseFormatEither.isLeft());
100     }
101 }