push addional code
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / upload / validation / UploadFileValidationTest.java
1 package org.openecomp.sdc.vendorsoftwareproduct.upload.validation;
2
3 import org.openecomp.sdc.common.errors.CoreException;
4 import org.openecomp.sdc.common.utils.AsdcCommon;
5 import org.openecomp.sdc.datatypes.error.ErrorMessage;
6
7 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductManager;
8 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
9 import org.openecomp.sdc.vendorsoftwareproduct.impl.VendorSoftwareProductManagerImpl;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
11 import org.openecomp.core.util.UniqueValueUtil;
12 import org.openecomp.core.utilities.CommonMethods;
13 import org.openecomp.core.validation.errors.Messages;
14 import org.openecomp.core.validation.types.MessageContainerUtil;
15 import org.apache.commons.collections4.MapUtils;
16 import org.testng.Assert;
17 import org.testng.annotations.BeforeTest;
18 import org.testng.annotations.Test;
19
20 import java.io.*;
21 import java.net.URL;
22 import java.util.List;
23 import java.util.Map;
24
25 public class UploadFileValidationTest {
26
27   private static final String USER1 = "UploadFileValidationTest";
28   private static final String EMPTY_ZIP_FILE = "/validation/zips/emptyZip.zip";
29   private static final String MISSING_MANIFEST_IN_ZIP_FILE =
30       "/validation/zips/missingManifestInZip.zip";
31   private static final String ZIP_FILE_WITH_FOLDER = "/validation/zips/zipFileWithFolder.zip";
32   private static VendorSoftwareProductManager vendorSoftwareProductManager =
33       new VendorSoftwareProductManagerImpl();
34   private static String vspId;
35
36   public static org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity createVendorLicenseModel(String name, String desc,
37                                                                                                             String icon) {
38     org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity
39         vendorLicenseModel = new org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity();
40     vendorLicenseModel.setVendorName(name);
41     vendorLicenseModel.setDescription(desc);
42     vendorLicenseModel.setIconRef(icon);
43     return vendorLicenseModel;
44   }
45
46   @BeforeTest
47   private void init() {
48     VspDetails vspDetails = new VspDetails();
49     vspDetails.setVendorName("vspName_" + CommonMethods.nextUuId());
50     vspId = vendorSoftwareProductManager.createNewVsp(vspDetails, USER1).getId();
51
52     UniqueValueUtil
53         .deleteUniqueValue(org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME,
54             "VSP_syb_upload_various");
55     UniqueValueUtil
56         .deleteUniqueValue(org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME,
57             "vsp_syb_upload_no_error");
58     UniqueValueUtil
59         .deleteUniqueValue(org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.VENDOR_SOFTWARE_PRODUCT_NAME,
60             "vsp_syb");
61   }
62
63   @Test
64   public void testUploadZipNull() {
65     UploadFileResponse response = vendorSoftwareProductManager.uploadFile(vspId, null, USER1);
66     Assert.assertEquals(response.getErrors().size(), 1);
67     Assert.assertTrue(response.getErrors().containsKey(AsdcCommon.UPLOAD_FILE));
68     Assert.assertEquals(response.getErrors().get(AsdcCommon.UPLOAD_FILE).get(0).getMessage(),
69         Messages.NO_ZIP_FILE_WAS_UPLOADED_OR_ZIP_NOT_EXIST.getErrorMessage());
70   }
71
72   @Test(dependsOnMethods = "testUploadZipNull")
73   public void testUploadEmptyFile() {
74     UploadFileResponse response = vendorSoftwareProductManager
75         .uploadFile(vspId, new ByteArrayInputStream("".getBytes()), USER1);
76     Assert.assertEquals(response.getErrors().size(), 1);
77     Assert.assertTrue(response.getErrors().containsKey(AsdcCommon.UPLOAD_FILE));
78     Assert.assertEquals(response.getErrors().get(AsdcCommon.UPLOAD_FILE).get(0).getMessage(),
79         Messages.NO_ZIP_FILE_WAS_UPLOADED_OR_ZIP_NOT_EXIST.getErrorMessage());
80   }
81
82   @Test(dependsOnMethods = "testUploadEmptyFile")
83   public void testUploadEmptyZip() {
84     UploadFileResponse response =
85         vendorSoftwareProductManager.uploadFile(vspId, getFileInputStream(EMPTY_ZIP_FILE), USER1);
86     Assert.assertEquals(response.getErrors().size(), 1);
87     Assert.assertTrue(response.getErrors().containsKey(AsdcCommon.UPLOAD_FILE));
88     Assert.assertEquals(response.getErrors().get(AsdcCommon.UPLOAD_FILE).get(0).getMessage(),
89         Messages.INVALID_ZIP_FILE.getErrorMessage());
90   }
91
92   @Test(dependsOnMethods = "testUploadEmptyZip")
93   public void testUploadMissingManifestInZip() {
94     UploadFileResponse response = vendorSoftwareProductManager
95         .uploadFile(vspId, getFileInputStream(MISSING_MANIFEST_IN_ZIP_FILE), USER1);
96     Assert.assertEquals(response.getErrors().size(), 1);
97     Assert.assertTrue(response.getErrors().containsKey(AsdcCommon.MANIFEST_NAME));
98     Assert.assertEquals(response.getErrors().get(AsdcCommon.MANIFEST_NAME).get(0).getMessage(),
99         Messages.MANIFEST_NOT_EXIST.getErrorMessage());
100   }
101
102   @Test(dependsOnMethods = "testUploadMissingManifestInZip")
103   public void testUploadZipWithFolder() {
104     UploadFileResponse response = vendorSoftwareProductManager
105         .uploadFile(vspId, getFileInputStream(ZIP_FILE_WITH_FOLDER), USER1);
106     Assert.assertEquals(response.getErrors().size(), 1);
107     Assert.assertTrue(response.getErrors().containsKey(AsdcCommon.UPLOAD_FILE));
108     Assert.assertEquals(response.getErrors().get(AsdcCommon.UPLOAD_FILE).get(0).getMessage(),
109         Messages.ZIP_SHOULD_NOT_CONTAIN_FOLDERS.getErrorMessage());
110   }
111
112   @Test(dependsOnMethods = "testUploadZipWithFolder")
113   public void testUploadVariousZips() {
114
115     File[] files = getFileList("/validation/zips/various");
116     InputStream is;
117     for (File file : files) {
118       if (file.isFile()) {
119         UploadFileResponse response = null;
120         try {
121
122           is = new FileInputStream(file);
123           response = vendorSoftwareProductManager.uploadFile(vspId, is, USER1);
124
125         } catch (FileNotFoundException e) {
126           throw new RuntimeException(e);
127         } catch (CoreException ce) {
128           throw new RuntimeException("failed upload:" + file.getName(), ce);
129         } catch (RuntimeException re) {
130
131           throw new RuntimeException("failed upload:" + file.getName(), re);
132         }
133         System.out.println("zip:" + file.getName() + " Errors:" + calculateNumberOfMessages(
134             MessageContainerUtil.getMessageByLevel(org.openecomp.sdc.datatypes.error.ErrorLevel.ERROR, response.getErrors())) +
135             " Warnings:" + calculateNumberOfMessages(
136             MessageContainerUtil.getMessageByLevel(org.openecomp.sdc.datatypes.error.ErrorLevel.WARNING, response.getErrors())));
137       }
138     }
139   }
140
141   @Test(dependsOnMethods = "testUploadVariousZips")
142   public void testUploadNoErrorVariousZips() {
143
144
145     File[] files = getFileList("/validation/zips/various/noError");
146     InputStream is;
147     for (File file : files) {
148       if (file.isFile()) {
149         try {
150           is = new FileInputStream(file);
151           UploadFileResponse response = vendorSoftwareProductManager.uploadFile(vspId, is, USER1);
152           Map<String, List<ErrorMessage>> errors = response.getErrors();
153           Assert.assertTrue(
154               MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(
155                   org.openecomp.sdc.datatypes.error.ErrorLevel.ERROR, errors)));
156
157
158         } catch (FileNotFoundException e) {
159           throw new RuntimeException(e);
160         } catch (CoreException ce) {
161           Assert.fail("failed upload:" + file.getName() + " exception:" + ce.getMessage());
162
163         } catch (RuntimeException re) {
164           Assert.fail("failed upload:" + file.getName() + " exception:" + re.getMessage());
165         }
166       }
167     }
168   }
169
170   private InputStream getFileInputStream(String fileName) {
171     URL url = this.getClass().getResource(fileName);
172     try {
173       return url.openStream();
174     } catch (IOException e) {
175       e.printStackTrace();
176       return null;
177     }
178   }
179
180   private File[] getFileList(String dir) {
181     URL url = UploadFileValidationTest.class.getResource(dir);
182
183     String path = url.getPath();
184     File pathFile = new File(path);
185     return pathFile.listFiles();
186
187
188   }
189
190   private int calculateNumberOfMessages(Map<String, List<ErrorMessage>> messages) {
191     int sum = 0;
192     for (List<ErrorMessage> errors : messages.values()) {
193       sum += errors.size();
194     }
195     return sum;
196   }
197
198
199 }