Added oparent to sdc main
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / path / ComponentInstanceForwardingPathMergeTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.components.merge.path;
22
23 import fj.data.Either;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.mockito.InjectMocks;
27 import org.mockito.Mock;
28 import org.mockito.MockitoAnnotations;
29 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
30 import org.openecomp.sdc.be.components.merge.instance.ComponentInstanceForwardingPathMerge;
31 import org.openecomp.sdc.be.components.path.BaseForwardingPathVersionChangeTest;
32 import org.openecomp.sdc.be.impl.ForwardingPathUtils;
33 import org.openecomp.sdc.be.model.Component;
34 import org.openecomp.sdc.be.model.Service;
35 import org.openecomp.sdc.be.model.User;
36 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
37 import org.openecomp.sdc.common.api.UserRoleEnum;
38 import org.openecomp.sdc.exception.ResponseFormat;
39
40 import java.util.Set;
41
42 import static junit.framework.TestCase.assertTrue;
43 import static org.junit.Assert.assertEquals;
44 import static org.junit.Assert.assertNotNull;
45 import static org.mockito.ArgumentMatchers.any;
46 import static org.mockito.ArgumentMatchers.anyBoolean;
47 import static org.mockito.Mockito.when;
48
49 public class ComponentInstanceForwardingPathMergeTest extends BaseForwardingPathVersionChangeTest {
50
51     @InjectMocks
52     private ComponentInstanceForwardingPathMerge testInstance;
53
54     @Mock
55     private ServiceBusinessLogic serviceBusinessLogic;
56
57     @Mock
58     private ToscaOperationFacade toscaOperationFacade;
59     private User user;
60
61     @Before
62     public void setUpData() {
63         MockitoAnnotations.initMocks(this);
64         user = new User();
65         user.setUserId("44");
66         user.setRole(UserRoleEnum.ADMIN.getName());
67     }
68
69     @Test
70     public void testIgnoreMergeSinceItIsNotService() {
71
72         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
73         assertEquals(nodeACI.getName(), dataHolder.getOrigComponentInstId());
74         Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
75             .mergeDataAfterCreate(user, dataHolder, newNodeAC, "3344");
76         assertNotNull(componentResponseFormatEither);
77         assertTrue(componentResponseFormatEither.isLeft());
78         assertEquals(newNodeAC, componentResponseFormatEither.left().value());
79     }
80
81     @Test
82     public void mergeShouldDelete() {
83         Set<String> forwardingPathNamesToDeleteOnComponentInstanceDeletion = new ForwardingPathUtils()
84             .findForwardingPathNamesToDeleteOnComponentInstanceDeletion(service, nodeACI.getUniqueId());
85         nodeACI.getCapabilities().clear();
86         newNodeAC.getCapabilities().clear();
87         Either<Set<String>, ResponseFormat> returnValue = Either.left(forwardingPathNamesToDeleteOnComponentInstanceDeletion);
88         when(serviceBusinessLogic.deleteForwardingPaths(any(), any(), any(), anyBoolean()))
89             .thenReturn(returnValue);
90         when(toscaOperationFacade.getToscaFullElement(any())).thenReturn(Either.left(newNodeAC));
91
92         // Change internal ci, just like change version do
93         service.getComponentInstances().remove(nodeACI);
94         service.getComponentInstances().add(newNodeACI);
95
96         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
97         assertEquals(nodeACI.getName(), dataHolder.getOrigComponentInstId());
98         Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
99             .mergeDataAfterCreate(user, dataHolder, service, newNodeA);
100         assertNotNull(componentResponseFormatEither);
101         assertTrue(componentResponseFormatEither.isLeft());
102         assertEquals(0, ((Service) componentResponseFormatEither.left().value()).getForwardingPaths().size());
103     }
104
105     @Test
106     public void mergeShouldUpdate() {
107           when(serviceBusinessLogic.updateForwardingPath(any(), any(), any(), anyBoolean()))
108               .then(invocationOnMock -> Either.left(service));
109            when(toscaOperationFacade.getToscaFullElement(any())).thenReturn(Either.left(newNodeAC));
110           testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
111           assertEquals(nodeACI.getName(), dataHolder.getOrigComponentInstId());
112
113           // Change internal ci, just like change version do
114           service.getComponentInstances().remove(nodeACI);
115           service.getComponentInstances().add(newNodeACI);
116
117           Either<Component, ResponseFormat> componentResponseFormatEither = testInstance
118               .mergeDataAfterCreate(user, dataHolder, service, newNodeA);
119           assertNotNull(componentResponseFormatEither);
120           assertTrue(componentResponseFormatEither.isLeft());
121     }
122
123     @Test
124     public void handleNullCapailities() {
125         nodeACI.setCapabilities(null);
126         testInstance.saveDataBeforeMerge(dataHolder, service, nodeACI, newNodeAC);
127     }
128 }