[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / impl / MonitoringUploadsManagerImplTest.java
1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
2
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.openecomp.core.enrichment.types.MonitoringUploadType;
7 import org.openecomp.sdc.common.errors.CoreException;
8 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
9 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.MonitoringUploadStatus;
11 import org.openecomp.sdc.versioning.dao.types.Version;
12 import org.testng.Assert;
13 import org.testng.annotations.BeforeMethod;
14 import org.testng.annotations.Test;
15
16 import java.io.IOException;
17 import java.io.InputStream;
18 import java.net.URL;
19 import java.util.Arrays;
20 import java.util.Optional;
21
22 import static org.mockito.Matchers.any;
23 import static org.mockito.Matchers.anyObject;
24 import static org.mockito.Mockito.doReturn;
25 import static org.mockito.Mockito.never;
26 import static org.mockito.Mockito.verify;
27
28 public class MonitoringUploadsManagerImplTest {
29
30   private static final String USER1 = "ComponentsUploadTestUser";
31   private static final String COMPONENT_ID = "COMPONENT_ID";
32   private static final String VSP_ID = "vspId";
33   private static final Version VERSION = new Version(0, 1);
34   private static final String trapFileName = "MMSC.zip";
35   private static final String pollFileName = "MNS OAM FW.zip";
36   private static final String vesFileName = "vesTest-yml_only.zip";
37   private static final String invalidVesFileName = "invalid_ves_file.zip";
38   private static final String notZipFileName = "notZipFile";
39   private static final String zipWithFoldersFileName = "zipFileWithFolder.zip";
40   private static final String emptyZipFileName = "emptyZip.zip";
41   private static final String ZIP_DIR = "/vspmanager/zips/";
42
43   @Mock
44   private ComponentArtifactDao componentArtifactDaoMock;
45   @InjectMocks
46   private MonitoringUploadsManagerImpl moitoringUploadsManager;
47
48   @BeforeMethod
49   public void setUp() throws Exception {
50     MockitoAnnotations.initMocks(this);
51   }
52
53   @Test(expectedExceptions = CoreException.class)
54   public void testUploadEmptyZip() {
55     InputStream zis = getFileInputStream(ZIP_DIR + emptyZipFileName);
56     moitoringUploadsManager.upload(zis, emptyZipFileName, VSP_ID, VERSION, COMPONENT_ID,
57         MonitoringUploadType.SNMP_TRAP, USER1);
58   }
59
60   @Test
61   public void testUploadInvalidZip() {
62     URL url = this.getClass().getResource("/notZipFile");
63     try {
64       moitoringUploadsManager
65           .upload(url.openStream(), notZipFileName, VSP_ID, VERSION, COMPONENT_ID,
66               MonitoringUploadType.VES_EVENTS, USER1);
67       Assert.fail();
68     } catch (Exception exception) {
69       Assert.assertEquals(exception.getMessage(), "Invalid zip file");
70     }
71   }
72
73   @Test
74   public void testUploadZipWithFolders() {
75     InputStream zis = getFileInputStream(ZIP_DIR + zipWithFoldersFileName);
76
77     try {
78       moitoringUploadsManager
79           .upload(zis, zipWithFoldersFileName, VSP_ID, VERSION, COMPONENT_ID,
80               MonitoringUploadType.SNMP_TRAP, USER1);
81       Assert.fail();
82     } catch (Exception exception) {
83       Assert.assertEquals(exception.getMessage(), "Zip file should not contain folders");
84     }
85   }
86
87   @Test
88   public void testUploadVEsEventZipWithNonYamlFiles() {
89     InputStream zis = getFileInputStream(ZIP_DIR + invalidVesFileName);
90
91     try {
92       moitoringUploadsManager
93           .upload(zis, invalidVesFileName, VSP_ID, VERSION, COMPONENT_ID,
94               MonitoringUploadType.VES_EVENTS, USER1);
95       Assert.fail();
96     } catch (Exception exception) {
97       Assert.assertEquals(exception.getMessage(),
98           "Wrong VES EVENT Artifact was uploaded - all files contained in Artifact must be YAML " +
99               "files (using .yaml/.yml extensions)");
100     }
101   }
102
103
104   @Test
105   public void testListMonitoringFilenames() {
106     ComponentMonitoringUploadEntity artifact1 =
107         new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact1");
108     artifact1.setType(MonitoringUploadType.SNMP_TRAP);
109     artifact1.setArtifactName(trapFileName);
110
111     ComponentMonitoringUploadEntity artifact2 =
112         new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact2");
113     artifact2.setType(MonitoringUploadType.SNMP_POLL);
114     artifact2.setArtifactName(pollFileName);
115
116     ComponentMonitoringUploadEntity artifact3 =
117         new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact3");
118     artifact3.setType(MonitoringUploadType.VES_EVENTS);
119     artifact3.setArtifactName(vesFileName);
120
121     doReturn(Arrays.asList(artifact1, artifact2, artifact3))
122         .when(componentArtifactDaoMock).list(anyObject());
123
124     MonitoringUploadStatus monitoringUploadStatus =
125         moitoringUploadsManager.listFilenames(VSP_ID, VERSION, COMPONENT_ID, USER1);
126
127     Assert.assertEquals(monitoringUploadStatus.getSnmpTrap(), trapFileName);
128     Assert.assertEquals(monitoringUploadStatus.getSnmpPoll(), pollFileName);
129     Assert.assertEquals(monitoringUploadStatus.getVesEvent(), vesFileName);
130   }
131
132   @Test (expectedExceptions = CoreException.class)
133   public void testDeleteComponentMibWhenNone() {
134     doReturn(Optional.empty()).when(componentArtifactDaoMock).getByType(any());
135     moitoringUploadsManager
136         .delete(VSP_ID, VERSION, COMPONENT_ID, MonitoringUploadType.SNMP_POLL, USER1);
137
138     verify(componentArtifactDaoMock, never()).delete(anyObject());
139   }
140
141   @Test
142   public void testDeleteComponentMonitoringUpload() {
143     doReturn(Optional
144         .of(new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifactId")))
145         .when
146             (componentArtifactDaoMock).getByType(anyObject());
147
148     moitoringUploadsManager
149         .delete(VSP_ID, VERSION, COMPONENT_ID, MonitoringUploadType.SNMP_POLL, USER1);
150
151     verify(componentArtifactDaoMock).delete(anyObject());
152   }
153
154
155   private InputStream getFileInputStream(String fileName) {
156     URL url = this.getClass().getResource(fileName);
157     try {
158       return url.openStream();
159     } catch (IOException exception) {
160       exception.printStackTrace();
161       return null;
162     }
163   }
164 }