1 package org.openecomp.sdc.enrichment.impl.external.artifact;
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;
24 import java.io.InputStream;
25 import java.nio.ByteBuffer;
26 import java.util.ArrayList;
27 import java.util.Collection;
29 import static org.mockito.Matchers.anyObject;
30 import static org.mockito.Mockito.atLeastOnce;
31 import static org.mockito.Mockito.when;
33 public class ProcessArtifactEnricherTest {
35 ProcessDao processDaoMock;
37 EnrichedServiceModelDao enrichedServiceModelDaoMock;
39 VendorSoftwareProductDao vendorSoftwareProductDaoMock;
42 ProcessArtifactEnricher processArtifactEnricher;
45 @BeforeMethod(alwaysRun = true)
46 public void injectDoubles() {
47 MockitoAnnotations.initMocks(this);
51 public void testEnrichComponent() throws Exception {
53 String componentId = "1111111111";
54 Version version = new Version();
58 ComponentEntity componentEntity = getComponentEntity(vspId, version, componentId);
59 setMockToEnrichComponent(vspId, componentId, version);
61 ProcessEntity entity = new ProcessEntity(vspId, version, componentId, null);
62 ProcessEntity processEntity = new ProcessEntity();
63 processEntity.setType(ProcessType.Lifecycle_Operations);
64 processEntity.setVspId(vspId);
65 processEntity.setVersion(version);
66 processEntity.setComponentId(componentId);
68 Collection<ComponentEntity> componentList = new ArrayList<ComponentEntity>();
69 componentList.add(componentEntity);
70 when(vendorSoftwareProductDaoMock.listComponents(vspId, version)).thenReturn(componentList);
72 Collection<ProcessEntity> list = new ArrayList<ProcessEntity>();
73 list.add(processEntity);
74 when(processDaoMock.list(entity)).thenReturn(list);
76 EnrichmentInfo info = new EnrichmentInfo();
77 info.setVersion(version);
79 processArtifactEnricher.enrich(info);
81 String componentName = componentEntity.getComponentCompositionData().getName();
83 ArgumentCaptor<ServiceArtifact> expectedServiceArtifact =
84 ArgumentCaptor.forClass(ServiceArtifact.class);
85 Mockito.verify(enrichedServiceModelDaoMock, atLeastOnce())
86 .storeExternalArtifact(expectedServiceArtifact.capture());
88 .assertEquals(expectedServiceArtifact.getValue().getName().startsWith(componentName), true);
89 Assert.assertEquals(expectedServiceArtifact.getValue().getName(),
90 componentName + File.separator + ArtifactCategory.DEPLOYMENT.getDisplayName() +
91 File.separator + "Lifecycle Operations" + File.separator + "artifact_1kb.txt");
95 private void setMockToEnrichComponent(String vspId, String componentId, Version version) {
96 ProcessEntity returnedArtifact = new ProcessEntity();
97 returnedArtifact.setVspId(vspId);
98 returnedArtifact.setVersion(version);
99 returnedArtifact.setComponentId(componentId);
100 returnedArtifact.setArtifactName("artifact_1kb.txt");
101 returnedArtifact.setArtifact(getMibByteBuffer("/mock/enrichProcess/artifact_1kb.txt"));
103 Mockito.when(processDaoMock.get(anyObject()))
104 .thenReturn(returnedArtifact);
105 Mockito.doNothing().when(enrichedServiceModelDaoMock).storeExternalArtifact(anyObject());
108 private ComponentEntity getComponentEntity(String vspId, Version version, String componentId) {
109 ComponentEntity componentEntity = new ComponentEntity();
110 componentEntity.setId(componentId);
111 componentEntity.setVspId(vspId);
112 componentEntity.setVersion(version);
114 String componentName = vspId + "enrichMib_server";
115 String compositionData = "{\n" +
116 " \"name\": \"org.openecomp.resource.vfc.nodes.heat." + componentName + "\",\n" +
117 " \"displayName\": \"" + componentName + "\"\n" +
119 componentEntity.setCompositionData(compositionData);
120 return componentEntity;
123 private ByteBuffer getMibByteBuffer(String fileName) {
124 InputStream mibFile = FileUtils.getFileInputStream(this.getClass().getResource(fileName));
125 byte[] mibBytes = FileUtils.toByteArray(mibFile);
126 return ByteBuffer.wrap(mibBytes);