Added oparent to sdc main
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / instance / ComponentInstanceArtifactsMergeTest.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.instance;
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.Mockito;
29 import org.mockito.MockitoAnnotations;
30 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic;
31 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic.ArtifactOperationInfo;
32 import org.openecomp.sdc.be.model.*;
33 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
34 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
35 import org.openecomp.sdc.exception.ResponseFormat;
36
37 import java.util.HashMap;
38 import java.util.LinkedList;
39 import java.util.List;
40 import java.util.Map;
41
42 import static junit.framework.TestCase.assertEquals;
43 import static org.mockito.Mockito.when;
44
45 public class ComponentInstanceArtifactsMergeTest {
46
47         @InjectMocks
48         ComponentInstanceArtifactsMerge testInstance;
49
50         @Mock
51         ArtifactsBusinessLogic artifactsBusinessLogicMock;
52         
53         @Mock
54         ToscaOperationFacade toscaOperationFacadeMock;
55         
56         @Before
57         public void setUp() throws Exception {
58                 MockitoAnnotations.initMocks(this);
59         }
60
61         @Test
62         public void testDeploymentArtifactSaveData() throws Exception {
63
64                 Component containerComponent = new Resource();
65                 Component originComponent = buildOriginalComponentWithOneArtifact();
66                 ComponentInstance componentInstance = buildComponentInstanceWithTwoArtifacts();
67
68                 DataForMergeHolder dataForMergeHolder = new DataForMergeHolder();
69                 testInstance.saveDataBeforeMerge(dataForMergeHolder, containerComponent, componentInstance, originComponent);
70                 Map<String, ArtifactDefinition> originalComponentDeploymentArtifactsCreatedOnTheInstance = dataForMergeHolder
71                                 .getOrigComponentDeploymentArtifactsCreatedOnTheInstance();
72
73                 assertEquals(originalComponentDeploymentArtifactsCreatedOnTheInstance.size(), 1);
74                 assert (originalComponentDeploymentArtifactsCreatedOnTheInstance.containsKey("artifactTwo"));
75         }
76
77         @Test
78         public void testInformationalArtifactSaveData() throws Exception {
79
80                 Component containerComponent = new Resource();
81                 Component originComponent = buildOriginalComponentWithOneArtifact();
82                 ComponentInstance componentInstance = buildComponentInstanceWithTwoArtifacts();
83
84                 DataForMergeHolder dataForMergeHolder = new DataForMergeHolder();
85                 testInstance.saveDataBeforeMerge(dataForMergeHolder, containerComponent, componentInstance, originComponent);
86                 Map<String, ArtifactDefinition> originalComponentInformationalArtifactsCreatedOnTheInstance = dataForMergeHolder
87                                 .getOrigComponentInformationalArtifactsCreatedOnTheInstance();
88
89                 assertEquals(originalComponentInformationalArtifactsCreatedOnTheInstance.size(), 1);
90                 assert (originalComponentInformationalArtifactsCreatedOnTheInstance.containsKey("artifactTwo"));
91         }
92
93         @Test
94         public void testMergeDataAfterCreate() throws Exception {
95
96                 Component originComponent = buildOriginalComponentWithOneArtifact();
97                 List<ComponentInstance> resourceInstances = new LinkedList<>();
98                 ComponentInstance ci = new ComponentInstance();
99                 ci.setUniqueId("mock");
100                 resourceInstances.add(ci);
101                 originComponent.setComponentInstances(resourceInstances);
102                 DataForMergeHolder dataForMergeHolder = new DataForMergeHolder();
103                 Map<String, ArtifactDefinition> origDeploymentArtifacts = new HashMap<>();
104                 ArtifactDefinition currentArtifactDefinition = new ArtifactDefinition();
105                 origDeploymentArtifacts.put("mock", currentArtifactDefinition);
106                 dataForMergeHolder.setOrigComponentDeploymentArtifactsCreatedOnTheInstance(origDeploymentArtifacts);
107
108                 when(artifactsBusinessLogicMock.buildJsonForUpdateArtifact(Mockito.anyString(), 
109                                 Mockito.anyString(),
110                                 Mockito.anyString(), 
111                                 Mockito.any(ArtifactGroupTypeEnum.class), 
112                                 Mockito.anyString(), 
113                                 Mockito.anyString(),
114                                 Mockito.anyString(), 
115                                 Mockito.any(byte[].class), 
116                                 Mockito.any(), 
117                                 Mockito.any(List.class)))
118                                                 .thenReturn(new HashMap<>());
119                 
120                 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> left = Either.left(Either.left(new ArtifactDefinition()));
121                 
122                 when(artifactsBusinessLogicMock.updateResourceInstanceArtifactNoContent(Mockito.anyString(), Mockito.any(Component.class), Mockito.any(User.class), 
123                                 Mockito.any(Map.class), Mockito.any(ArtifactOperationInfo.class), Mockito.any(ArtifactDefinition.class))).thenReturn(left);
124                 
125                 testInstance.mergeDataAfterCreate(new User(), dataForMergeHolder, originComponent, "mock");
126
127         }
128
129         private ComponentInstance buildComponentInstanceWithTwoArtifacts() {
130                 ArtifactDefinition artifactFromTheOriginalResource = new ArtifactDefinition();
131                 artifactFromTheOriginalResource.setArtifactLabel("artifactOne");
132                 ArtifactDefinition artifactCreatedOnTheInstance = new ArtifactDefinition();
133                 artifactCreatedOnTheInstance.setArtifactLabel("artifactTwo");
134
135                 Map<String, ArtifactDefinition> componentInstanceArtifacts = new HashMap<>();
136                 componentInstanceArtifacts.put(artifactFromTheOriginalResource.getArtifactLabel(),
137                                 artifactFromTheOriginalResource);
138                 componentInstanceArtifacts.put(artifactCreatedOnTheInstance.getArtifactLabel(), artifactCreatedOnTheInstance);
139
140                 ComponentInstance componentInstance = new ComponentInstance();
141                 componentInstance.setDeploymentArtifacts(componentInstanceArtifacts);
142                 componentInstance.setArtifacts(componentInstanceArtifacts);
143                 return componentInstance;
144         }
145
146         private Component buildOriginalComponentWithOneArtifact() {
147                 ArtifactDefinition artifactFromTheOriginalResource = new ArtifactDefinition();
148                 artifactFromTheOriginalResource.setArtifactLabel("artifactOne");
149
150                 Map<String, ArtifactDefinition> originComponentArtifacts = new HashMap<>();
151                 originComponentArtifacts.put(artifactFromTheOriginalResource.getArtifactLabel(),
152                                 artifactFromTheOriginalResource);
153                 Component originComponent = new Resource();
154                 originComponent.setDeploymentArtifacts(originComponentArtifacts);
155                 originComponent.setArtifacts(originComponentArtifacts);
156                 return originComponent;
157         }
158
159 }