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