470dca40ffb9f8475daad41ce45a06bedac4453a
[sdc.git] /
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.AfterMethod;
14 import org.testng.annotations.BeforeMethod;
15 import org.testng.annotations.Test;
16
17 import java.io.IOException;
18 import java.io.InputStream;
19 import java.net.URL;
20 import java.util.Arrays;
21 import java.util.Optional;
22 import java.util.function.Consumer;
23
24 import static org.mockito.Matchers.any;
25 import static org.mockito.Matchers.anyObject;
26 import static org.mockito.Mockito.doReturn;
27 import static org.mockito.Mockito.never;
28 import static org.mockito.Mockito.verify;
29
30 public class MonitoringUploadsManagerImplTest {
31
32   private static final String COMPONENT_ID = "COMPONENT_ID";
33   private static final String VSP_ID = "vspId";
34   private static final Version VERSION = new Version("version_id");
35   private static final String TRAP_FILE_NAME = "MMSC.zip";
36   private static final String POLL_FILE_NAME = "MNS OAM FW.zip";
37   private static final String VES_FILE_NAME = "vesTest-yml_only.zip";
38   private static final String INVALID_VES_FILE_NAME = "invalid_ves_file.zip";
39   private static final String NOT_ZIP_FILE_NAME = "notZipFile";
40   private static final String ZIP_WITH_FOLDERS_FILE_NAME = "zipFileWithFolder.zip";
41   private static final String EMPTY_ZIP_FILE_NAME = "emptyZip.zip";
42   private static final String ZIP_DIR = "/vspmanager/zips/";
43
44   @Mock
45   private ComponentArtifactDao componentArtifactDaoMock;
46   @InjectMocks
47   private MonitoringUploadsManagerImpl monitoringUploadsManager;
48
49   @BeforeMethod
50   public void setUp() throws Exception {
51     MockitoAnnotations.initMocks(this);
52   }
53
54   @AfterMethod
55   public void tearDown(){
56     monitoringUploadsManager = null;
57   }
58
59   @Test(expectedExceptions = CoreException.class)
60   public void testUploadEmptyZip() {
61     processFile(ZIP_DIR + EMPTY_ZIP_FILE_NAME, inputStream ->
62         monitoringUploadsManager
63             .upload(inputStream, EMPTY_ZIP_FILE_NAME, VSP_ID, VERSION, COMPONENT_ID,
64                 MonitoringUploadType.SNMP_TRAP));
65   }
66
67   @Test(expectedExceptions = CoreException.class, expectedExceptionsMessageRegExp =
68       "Invalid zip file")
69   public void testUploadInvalidZip() {
70     processFile("/notZipFile", inputStream ->
71         monitoringUploadsManager
72             .upload(inputStream, NOT_ZIP_FILE_NAME, VSP_ID, VERSION, COMPONENT_ID,
73                 MonitoringUploadType.VES_EVENTS));
74   }
75
76   @Test
77   public void testUploadZipWithFolders() {
78
79     try {
80       processFile(ZIP_DIR + ZIP_WITH_FOLDERS_FILE_NAME, inputStream -> monitoringUploadsManager
81           .upload(inputStream, ZIP_WITH_FOLDERS_FILE_NAME, VSP_ID, VERSION, COMPONENT_ID,
82               MonitoringUploadType.SNMP_TRAP));
83       Assert.fail();
84     } catch (Exception exception) {
85       Assert.assertEquals(exception.getMessage(), "Zip file should not contain folders");
86     }
87   }
88
89   @Test
90   public void testUploadVEsEventZipWithNonYamlFiles() {
91
92     try {
93       processFile(ZIP_DIR + INVALID_VES_FILE_NAME, inputStream -> monitoringUploadsManager
94           .upload(inputStream, INVALID_VES_FILE_NAME, VSP_ID, VERSION, COMPONENT_ID,
95               MonitoringUploadType.VES_EVENTS));
96       Assert.fail();
97     } catch (Exception exception) {
98       Assert.assertEquals(exception.getMessage(),
99           "Wrong VES EVENT Artifact was uploaded - all files contained in Artifact must be YAML " +
100               "files (using .yaml/.yml extensions)");
101     }
102   }
103
104
105   @Test
106   public void testListMonitoringFilenames() {
107     ComponentMonitoringUploadEntity artifact1 =
108         new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact1");
109     artifact1.setType(MonitoringUploadType.SNMP_TRAP);
110     artifact1.setArtifactName(TRAP_FILE_NAME);
111
112     ComponentMonitoringUploadEntity artifact2 =
113         new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact2");
114     artifact2.setType(MonitoringUploadType.SNMP_POLL);
115     artifact2.setArtifactName(POLL_FILE_NAME);
116
117     ComponentMonitoringUploadEntity artifact3 =
118         new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact3");
119     artifact3.setType(MonitoringUploadType.VES_EVENTS);
120     artifact3.setArtifactName(VES_FILE_NAME);
121
122     doReturn(Arrays.asList(artifact1, artifact2, artifact3))
123         .when(componentArtifactDaoMock).list(anyObject());
124
125     MonitoringUploadStatus monitoringUploadStatus =
126         monitoringUploadsManager.listFilenames(VSP_ID, VERSION, COMPONENT_ID);
127
128     Assert.assertEquals(monitoringUploadStatus.getSnmpTrap(), TRAP_FILE_NAME);
129     Assert.assertEquals(monitoringUploadStatus.getSnmpPoll(), POLL_FILE_NAME);
130     Assert.assertEquals(monitoringUploadStatus.getVesEvent(), VES_FILE_NAME);
131   }
132
133   @Test(expectedExceptions = CoreException.class)
134   public void testDeleteComponentMibWhenNone() {
135     doReturn(Optional.empty()).when(componentArtifactDaoMock).getByType(any());
136     monitoringUploadsManager
137         .delete(VSP_ID, VERSION, COMPONENT_ID, MonitoringUploadType.SNMP_POLL);
138
139     verify(componentArtifactDaoMock, never()).delete(anyObject());
140   }
141
142   @Test
143   public void testDeleteComponentMonitoringUpload() {
144     doReturn(Optional
145         .of(new ComponentMonitoringUploadEntity(VSP_ID, VERSION, COMPONENT_ID, "artifactId")))
146         .when
147             (componentArtifactDaoMock).getByType(anyObject());
148
149     monitoringUploadsManager
150         .delete(VSP_ID, VERSION, COMPONENT_ID, MonitoringUploadType.SNMP_POLL);
151
152     verify(componentArtifactDaoMock).delete(anyObject());
153   }
154
155
156   private void processFile(String fileName, Consumer<InputStream> processor) {
157
158     URL url = this.getClass().getResource(fileName);
159     try (InputStream inputStream = url.openStream()) {
160       processor.accept(inputStream);
161     } catch (IOException e) {
162       throw new RuntimeException("Failed to process file: " + fileName, e);
163     }
164   }
165 }