[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / lib / openecomp-sdc-enrichment-lib / openecomp-sdc-enrichment-impl / src / test / java / org / openecomp / sdc / enrichment / impl / external / artifact / ProcessArtifactEnricherTest.java
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.io.InputStream;
25 import java.nio.ByteBuffer;
26 import java.util.ArrayList;
27 import java.util.Collection;
28
29 import static org.mockito.Matchers.anyObject;
30 import static org.mockito.Mockito.atLeastOnce;
31 import static org.mockito.Mockito.when;
32
33 public class ProcessArtifactEnricherTest {
34   @Mock
35   ProcessDao processDaoMock;
36   @Mock
37   EnrichedServiceModelDao enrichedServiceModelDaoMock;
38   @Mock
39   VendorSoftwareProductDao vendorSoftwareProductDaoMock;
40
41   @InjectMocks
42   ProcessArtifactEnricher processArtifactEnricher;
43
44
45   @BeforeMethod(alwaysRun = true)
46   public void injectDoubles() {
47     MockitoAnnotations.initMocks(this);
48   }
49
50   @Test
51   public void testEnrichComponent() throws Exception {
52     String vspId = "123";
53     String componentId = "1111111111";
54     Version version = new Version();
55     version.setMajor(1);
56     version.setMinor(0);
57
58     ComponentEntity componentEntity = getComponentEntity(vspId, version, componentId);
59     setMockToEnrichComponent(vspId, componentId, version);
60
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);
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     EnrichmentInfo info = new EnrichmentInfo();
77     info.setVersion(version);
78     info.setKey(vspId);
79     processArtifactEnricher.enrich(info);
80
81     String componentName = componentEntity.getComponentCompositionData().getName();
82
83     ArgumentCaptor<ServiceArtifact> expectedServiceArtifact =
84         ArgumentCaptor.forClass(ServiceArtifact.class);
85     Mockito.verify(enrichedServiceModelDaoMock, atLeastOnce())
86         .storeExternalArtifact(expectedServiceArtifact.capture());
87     Assert
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");
92
93   }
94
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"));
102
103     Mockito.when(processDaoMock.get(anyObject()))
104         .thenReturn(returnedArtifact);
105     Mockito.doNothing().when(enrichedServiceModelDaoMock).storeExternalArtifact(anyObject());
106   }
107
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);
113
114     String componentName = vspId + "enrichMib_server";
115     String compositionData = "{\n" +
116         "  \"name\": \"org.openecomp.resource.vfc.nodes.heat." + componentName + "\",\n" +
117         "  \"displayName\": \"" + componentName + "\"\n" +
118         "}";
119     componentEntity.setCompositionData(compositionData);
120     return componentEntity;
121   }
122
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);
127   }
128 }