2f839a7946de1d11cfdea79619fa7d17155adab1
[sdc.git] /
1 package org.openecomp.sdc.enrichment.impl.external.artifact;
2
3 import org.mockito.ArgumentCaptor;
4 import org.mockito.InjectMocks;
5 import org.mockito.Mock;
6 import org.mockito.Mockito;
7 import org.mockito.MockitoAnnotations;
8 import org.openecomp.core.enrichment.types.ArtifactCategory;
9 import org.openecomp.core.model.dao.EnrichedServiceModelDao;
10 import org.openecomp.core.model.types.ServiceArtifact;
11 import org.openecomp.core.utilities.file.FileUtils;
12 import org.openecomp.sdc.enrichment.EnrichmentInfo;
13 import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessType;
18 import org.openecomp.sdc.versioning.dao.types.Version;
19 import org.testng.Assert;
20 import org.testng.annotations.BeforeMethod;
21 import org.testng.annotations.Test;
22
23 import java.io.File;
24 import java.nio.ByteBuffer;
25 import java.util.ArrayList;
26 import java.util.Collection;
27
28 import static org.mockito.Matchers.anyObject;
29 import static org.mockito.Mockito.atLeastOnce;
30 import static org.mockito.Mockito.when;
31
32 public class ProcessArtifactEnricherTest {
33   @Mock
34   ProcessDao processDaoMock;
35   @Mock
36   EnrichedServiceModelDao enrichedServiceModelDaoMock;
37   @Mock
38   VendorSoftwareProductDao vendorSoftwareProductDaoMock;
39
40   @InjectMocks
41   ProcessArtifactEnricher processArtifactEnricher;
42
43
44   @BeforeMethod(alwaysRun = true)
45   public void injectDoubles() {
46     MockitoAnnotations.initMocks(this);
47   }
48
49   @Test
50   public void testEnrichComponent() throws Exception {
51     String vspId = "123";
52     String componentId = "1111111111";
53     Version version = new Version();
54     version.setMajor(1);
55     version.setMinor(0);
56
57     ComponentEntity componentEntity = getComponentEntity(vspId, version, componentId);
58
59     ProcessEntity entity = new ProcessEntity(vspId, version, componentId, null);
60     ProcessEntity processEntity = new ProcessEntity();
61     processEntity.setType(ProcessType.Lifecycle_Operations);
62     processEntity.setVspId(vspId);
63     processEntity.setVersion(version);
64     processEntity.setComponentId(componentId);
65     processEntity.setArtifactName("artifact_1kb.txt");
66     processEntity.setArtifact(getMibByteBuffer("/mock/enrichProcess/artifact_1kb.txt"));
67
68     Collection<ComponentEntity> componentList = new ArrayList<ComponentEntity>();
69     componentList.add(componentEntity);
70     when(vendorSoftwareProductDaoMock.listComponents(vspId, version)).thenReturn(componentList);
71
72     Collection<ProcessEntity> list = new ArrayList<ProcessEntity>();
73     list.add(processEntity);
74     when(processDaoMock.list(entity)).thenReturn(list);
75
76     when(processDaoMock.get(anyObject())).thenReturn(processEntity);
77
78     EnrichmentInfo info = new EnrichmentInfo();
79     info.setVersion(version);
80     info.setKey(vspId);
81     processArtifactEnricher.enrich(info);
82
83     String componentName = componentEntity.getComponentCompositionData().getName();
84
85     ArgumentCaptor<ServiceArtifact> expectedServiceArtifact =
86         ArgumentCaptor.forClass(ServiceArtifact.class);
87     Mockito.verify(enrichedServiceModelDaoMock, atLeastOnce())
88         .storeExternalArtifact(expectedServiceArtifact.capture());
89     Assert
90         .assertEquals(expectedServiceArtifact.getValue().getName().startsWith(componentName), true);
91     Assert.assertEquals(expectedServiceArtifact.getValue().getName(),
92         componentName + File.separator + ArtifactCategory.DEPLOYMENT.getDisplayName() +
93             File.separator + "Lifecycle Operations" + File.separator + "artifact_1kb.txt");
94
95   }
96
97   private ComponentEntity getComponentEntity(String vspId, Version version, String componentId) {
98     ComponentEntity componentEntity = new ComponentEntity();
99     componentEntity.setId(componentId);
100     componentEntity.setVspId(vspId);
101     componentEntity.setVersion(version);
102
103     String componentName = vspId + "enrichMib_server";
104     String compositionData = "{\n" +
105         "  \"name\": \"org.openecomp.resource.vfc.nodes.heat." + componentName + "\",\n" +
106         "  \"displayName\": \"" + componentName + "\"\n" +
107         "}";
108     componentEntity.setCompositionData(compositionData);
109     return componentEntity;
110   }
111
112   private ByteBuffer getMibByteBuffer(String fileName) {
113     byte[] mibBytes = FileUtils.readViaInputStream(this.getClass().getResource(fileName),
114             stream -> FileUtils.toByteArray(stream));
115     return ByteBuffer.wrap(mibBytes);
116   }
117 }