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