54e979cdaf3d4c25a18a55ecdb1aa30447fcfce6
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / impl / MibManagerImplTest.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.ArtifactType;
7 import org.openecomp.sdc.common.errors.CoreException;
8 import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDao;
9 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
10 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.MibEntity;
11 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.MibUploadStatus;
12 import org.openecomp.sdc.versioning.dao.types.Version;
13 import org.testng.Assert;
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
23 import static org.mockito.Matchers.any;
24 import static org.mockito.Matchers.anyObject;
25 import static org.mockito.Mockito.doReturn;
26 import static org.mockito.Mockito.never;
27 import static org.mockito.Mockito.verify;
28
29 public class MibManagerImplTest {
30
31   private static final String USER1 = "ComponentsUploadTestUser";
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(0, 1);
35   private static final String trapFileName = "MMSC.zip";
36   private static final String pollFileName = "MNS OAM FW.zip";
37   private static final String notZipFileName = "notZipFile";
38   private static final String zipWithFoldersFileName = "zipFileWithFolder.zip";
39   private static final String emptyZipFileName = "emptyZip.zip";
40   private static final String ZIP_DIR = "/vspmanager/zips/";
41
42   @Mock
43   private VendorSoftwareProductDao vendorSoftwareProductDaoMock;
44   @Mock
45   private MibDao mibDaoMock;
46   @InjectMocks
47   private MibManagerImpl mibManager;
48
49   @BeforeMethod
50   public void setUp() throws Exception {
51     MockitoAnnotations.initMocks(this);
52   }
53
54   @Test(expectedExceptions = CoreException.class)
55   public void testUploadEmptyZip() {
56     InputStream zis = getFileInputStream(ZIP_DIR + emptyZipFileName);
57     mibManager.upload(zis, emptyZipFileName, VSP_ID, VERSION, COMPONENT_ID,
58         ArtifactType.SNMP_TRAP, USER1);
59   }
60
61   @Test
62   public void testUploadInvalidZip() {
63     URL url = this.getClass().getResource("/notZipFile");
64     try {
65       mibManager
66           .upload(url.openStream(), notZipFileName, VSP_ID, VERSION, COMPONENT_ID,
67               ArtifactType.SNMP_TRAP, USER1);
68       Assert.fail();
69     } catch (Exception exception) {
70       Assert.assertEquals(exception.getMessage(), "Invalid zip file");
71     }
72   }
73
74   @Test
75   public void testUploadZipWithFolders() {
76     InputStream zis = getFileInputStream(ZIP_DIR + zipWithFoldersFileName);
77
78     try {
79       mibManager
80           .upload(zis, zipWithFoldersFileName, VSP_ID, VERSION, COMPONENT_ID,
81               ArtifactType.SNMP_TRAP, USER1);
82       Assert.fail();
83     } catch (Exception exception) {
84       Assert.assertEquals(exception.getMessage(), "Zip file should not contain folders");
85     }
86   }
87
88
89   @Test
90   public void testListMibFilenames() {
91     MibEntity artifact1 =
92         new MibEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact1");
93     artifact1.setType(ArtifactType.SNMP_TRAP);
94     artifact1.setArtifactName(trapFileName);
95
96     MibEntity artifact2 =
97         new MibEntity(VSP_ID, VERSION, COMPONENT_ID, "artifact2");
98     artifact2.setType(ArtifactType.SNMP_POLL);
99     artifact2.setArtifactName(pollFileName);
100
101     doReturn(Arrays.asList(artifact1, artifact2))
102         .when(mibDaoMock).list(anyObject());
103
104     MibUploadStatus mibUploadStatus =
105         mibManager.listFilenames(VSP_ID, VERSION, COMPONENT_ID, USER1);
106
107     Assert.assertEquals(mibUploadStatus.getSnmpTrap(), trapFileName);
108     Assert.assertEquals(mibUploadStatus.getSnmpPoll(), pollFileName);
109   }
110
111   @Test (expectedExceptions = CoreException.class)
112   public void testDeleteComponentMibWhenNone() {
113     doReturn(Optional.empty()).when(mibDaoMock).getByType(any());
114     mibManager.delete(VSP_ID, VERSION, COMPONENT_ID, ArtifactType.SNMP_POLL, USER1);
115
116     verify(mibDaoMock, never()).delete(anyObject());
117   }
118
119   @Test
120   public void testDeleteComponentMib() {
121     doReturn(Optional.of(new MibEntity(VSP_ID, VERSION, COMPONENT_ID, "artifactId"))).when
122         (mibDaoMock).getByType(anyObject());
123
124     mibManager.delete(VSP_ID, VERSION, COMPONENT_ID, ArtifactType.SNMP_POLL, USER1);
125
126     verify(mibDaoMock).delete(anyObject());
127   }
128
129
130   private InputStream getFileInputStream(String fileName) {
131     URL url = this.getClass().getResource(fileName);
132     try {
133       return url.openStream();
134     } catch (IOException exception) {
135       exception.printStackTrace();
136       return null;
137     }
138   }
139 }