1 package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation;
3 import org.junit.Before;
5 import org.openecomp.core.utilities.file.FileContentHandler;
6 import org.openecomp.sdc.common.utils.SdcCommon;
7 import org.openecomp.sdc.datatypes.error.ErrorLevel;
8 import org.openecomp.sdc.datatypes.error.ErrorMessage;
9 import java.io.IOException;
10 import java.nio.charset.StandardCharsets;
11 import java.util.ArrayList;
12 import java.util.Collections;
13 import java.util.List;
16 import static org.junit.Assert.assertTrue;
17 import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
18 import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS;
19 import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_CERTIFICATE;
20 import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_CHANGE_LOG;
21 import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_LICENSES;
22 import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_MANIFEST;
23 import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_TESTS;
24 import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_PATH_FILE_NAME;
25 import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.*;
27 public class SOL004MetaDirectoryValidatorTest {
29 private SOL004MetaDirectoryValidator sol004MetaDirectoryValidator;
30 private FileContentHandler handler;
31 private String metaFile;
35 sol004MetaDirectoryValidator = new SOL004MetaDirectoryValidator();
36 handler = new FileContentHandler();
38 "TOSCA-Meta-File-Version: 1.0\n"+
39 "CSAR-Version: 1.1\n"+
40 "Created-by: Vendor\n"+
41 TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n"+
42 TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.mf\n"+
43 TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text\n";
47 public void testGivenTOSCAMetaFile_whenEntryHasNoValue_thenErrorIsReturned() throws IOException{
49 String metaFileWithInvalidEntry = "TOSCA-Meta-File-Version: \n" +
50 "Entry-Definitions: Definitions/MainServiceTemplate.yaml";
52 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFileWithInvalidEntry.getBytes(StandardCharsets.UTF_8));
53 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(TestConstants.SAMPLE_DEFINITION_FILE_PATH));
55 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
56 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
57 assertTrue(errors.size() == 1 && errorMessages.size() == 1);
61 public void testGivenTOSCAMeta_withAllSupportedEntries_thenNoErrorsReturned() throws IOException{
63 String entryTestFilePath = "Files/Tests";
64 String entryLicenseFilePath = "Files/Licenses";
66 List<String> folderList = new ArrayList<>();
67 folderList.add("Files/Tests/");
68 folderList.add("Files/Licenses/");
71 TOSCA_META_ETSI_ENTRY_TESTS + SEPERATOR_MF_ATTRIBUTE + entryTestFilePath + "\n" +
72 TOSCA_META_ETSI_ENTRY_LICENSES + SEPERATOR_MF_ATTRIBUTE + entryLicenseFilePath +"\n";
74 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
75 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
76 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
77 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
78 handler.addFile(SAMPLE_SOURCE, "".getBytes());
79 handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
80 handler.addFile(entryTestFilePath, "".getBytes());
81 handler.addFile(entryLicenseFilePath, "".getBytes());
83 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, folderList);
84 assertTrue(errors.size() == 0);
88 public void testGivenTOSCAMeta_withUnsupportedEntry_thenWarningIsReturned(){
90 metaFile = "Entry-Events: Definitions/events.log";
92 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
93 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
94 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
95 assertTrue(errors.size() == 1 && errorMessages.size() == 1);
96 assertTrue(errorMessages.get(0).getLevel() == ErrorLevel.ERROR);
101 public void testGivenTOSCAMetaFile_withInvalidTOSCAMetaFileVersionAndCSARVersion_thenErrorIsReturned() throws IOException{
104 "TOSCA-Meta-File-Version: " + Integer.MAX_VALUE +
105 "\nCSAR-Version: " + Integer.MAX_VALUE +
106 "\nCreated-by: Bilal Iqbal\n" +
107 TOSCA_META_ENTRY_DEFINITIONS+ SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n" +
108 TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.mf\n"+
109 TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text";
111 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
112 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(TestConstants.SAMPLE_DEFINITION_FILE_PATH));
113 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
114 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
116 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
117 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
118 assertTrue(errors.size() == 1 && errorMessages.size() == 2);
122 public void testGivenTOSCAMetaFile_withNonExistentFileReferenced_thenErrorsReturned(){
124 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
126 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
127 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
128 assertTrue(errors.size() == 1 && errorMessages.size() == 3);
133 public void testGivenDefinitionFile_whenValidImportStatementExist_thenNoErrorsReturned() throws IOException{
135 String definitionFileWithValidImports = "/validation.files/definition/definitionFileWithValidImports.yaml";
138 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
139 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
140 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
141 handler.addFile(SAMPLE_SOURCE, "".getBytes());
142 handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml", ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
143 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(definitionFileWithValidImports));
145 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
146 assertTrue(errors.size() == 0);
150 public void testGivenDefinitionFile_whenMultipleDefinitionsImportStatementExist_thenNoErrorsReturned() throws IOException{
152 byte [] sampleDefinitionFile1 = ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile1.yaml");
153 byte [] sampleDefinitionFile2 = ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile2.yaml");
154 byte [] sampleDefinitionFile3 = ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile3.yaml");
156 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
157 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
158 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
159 handler.addFile(SAMPLE_SOURCE, "".getBytes());
160 handler.addFile(TOSCA_DEFINITION_FILEPATH, sampleDefinitionFile1);
161 handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml", sampleDefinitionFile2);
162 handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_2_types.yaml", sampleDefinitionFile3);
164 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
165 assertTrue(errors.size() == 0);
169 public void testGivenDefinitionFile_whenInvalidImportStatementExist_thenErrorIsReturned() throws IOException{
171 String definitionFileWithInvalidImports = "/validation.files/definition/definitionFileWithInvalidImport.yaml";
173 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
174 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
175 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
176 handler.addFile(SAMPLE_SOURCE, "".getBytes());
177 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(definitionFileWithInvalidImports));
179 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
180 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
181 assertTrue(errors.size() == 1 && errorMessages.size() == 1);
185 public void testGivenDefinitionFile_whenReferencedImportDoesNotExist_thenErrorIsReturned() throws IOException{
187 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
188 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
189 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
190 handler.addFile(SAMPLE_SOURCE, "".getBytes());
191 handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml", "".getBytes());
192 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile2.yaml"));
194 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
195 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
196 assertTrue(errors.size() == 1 && errorMessages.size() == 1);
201 public void testGivenDefinitionFile_withInvalidYAML_thenErrorIsReturned() throws IOException{
203 String definitionFileWithInvalidYAML = "/validation.files/definition/invalidDefinitionFile.yaml";
205 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
206 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
207 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
208 handler.addFile(SAMPLE_SOURCE, "".getBytes());
210 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(definitionFileWithInvalidYAML));
212 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
213 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
214 assertTrue(errors.size() == 1 && errorMessages.size() == 1);
218 public void testGivenManifestFile_withValidSourceAndNonManoSources_thenNoErrorIsReturned() throws IOException{
220 String nonManoSource = "Artifacts/Deployment/Measurements/PM_Dictionary.yaml";
222 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
223 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/validManifest.mf"));
224 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
225 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
226 handler.addFile(SAMPLE_SOURCE, "".getBytes());
227 handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
228 handler.addFile(nonManoSource, "".getBytes());
230 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
231 assertTrue(errors.size() == 0);
235 public void testGivenManifestFile_withNonExistentSourceFile_thenErrorIsReturned() throws IOException{
236 String nonManoSource = "Artifacts/Deployment/Measurements/PM_Dictionary.yaml";
238 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
239 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/validManifest.mf"));
240 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
241 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
242 handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
243 handler.addFile(nonManoSource, "".getBytes());
245 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
246 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
247 assertTrue(errors.size() == 1 && errorMessages.size() == 1);
251 public void testGivenManifestFile_withInvalidData_thenErrorIsReturned() throws IOException{
253 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
254 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/invalidManifest.mf"));
255 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
256 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
257 handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
259 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
260 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
261 assertTrue(errors.size() == 1 && errorMessages.size() == 1);
265 public void testGivenManifestAndDefinitionFile_withSameNames_thenNoErrorReturned() throws IOException {
267 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
268 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
269 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
270 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
271 handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
273 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
274 assertTrue(errors.size() == 0);
278 public void testGivenManifestAndMainDefinitionFile_withDifferentNames_thenErrorIsReturned() throws IOException {
280 "TOSCA-Meta-File-Version: 1.0\n"+
281 "CSAR-Version: 1.1\n"+
282 "Created-by: Vendor\n"+
283 TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n"+
284 TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE +"Definitions/MainServiceTemplate2.mf\n"+
285 TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE +"Artifacts/changeLog.text\n";
287 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
288 handler.addFile("Definitions/MainServiceTemplate2.mf", ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
289 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
290 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
291 handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
293 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
294 assertExpectedErrors("Main TOSCA definitions file and Manifest file with different name should return error",
299 public void testGivenManifestFile_withDifferentExtension_thenErrorIsReturned() throws IOException {
301 "TOSCA-Meta-File-Version: 1.0\n"+
302 "CSAR-Version: 1.1\n"+
303 "Created-by: Vendor\n"+
304 "Entry-Definitions: Definitions/MainServiceTemplate.yaml\n"+
305 TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.txt\n"+
306 TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text\n";
308 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
309 handler.addFile("Definitions/MainServiceTemplate.txt", ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
310 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
311 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
312 handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
314 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
315 assertExpectedErrors("Manifest file with different extension than .mf should return error",
320 public void testGivenManifestFile_withValidVnfMetadata_thenNoErrorsReturned() throws IOException{
321 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
322 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
323 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
324 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
326 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
327 assertExpectedErrors("Manifest with valid vnf mandatory values should not return any errors", errors, 0);
331 public void testGivenManifestFile_withValidPnfMetadata_thenNoErrorsReturned() throws IOException {
332 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
333 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest2.mf"));
334 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
335 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
337 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
338 assertExpectedErrors("Manifest with valid pnf mandatory values should not return any errors", errors, 0);
342 public void testGivenManifestFile_withMetadataContainingMixedPnfVnfMetadata_thenErrorIsReturned() throws IOException {
344 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
345 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata.mf"));
346 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
347 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
349 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
350 assertExpectedErrors("Manifest with mixed metadata should return error", errors, 1);
355 public void testGivenManifestFile_withMetadataMissingPnfOrVnfMandatoryEntries_thenErrorIsReturned() throws IOException{
357 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
358 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata2.mf"));
359 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
360 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
362 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
363 assertExpectedErrors("Manifest with missing vnf or pnf mandatory entries should return error", errors, 1);
367 public void testGivenManifestFile_withMetadataMissingMandatoryPnfEntries_thenErrorIsReturned() throws IOException{
368 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
369 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata4.mf"));
370 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
371 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
373 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
374 assertExpectedErrors("Manifest with metadata missing pnf mandatory entries should return error", errors, 3);
379 public void testGivenManifestFile_withMetadataMissingMandatoryVnfEntries_thenErrorIsReturned() throws IOException{
380 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
381 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata5.mf"));
382 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
383 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
385 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
386 assertExpectedErrors("Manifest with metadata missing vnf mandatory entries should return error", errors, 4);
391 public void testGivenManifestFile_withMetadataEntriesExceedingTheLimit_thenErrorIsReturned() throws IOException{
392 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
393 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata3.mf"));
394 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
395 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
397 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
398 assertExpectedErrors("Manifest with more than 4 metadata entries should return error", errors, 2);
402 public void testGivenManifestFile_withPnfMetadataAndVfEntries_thenErrorIsReturned() throws IOException {
404 List<String> folderList = new ArrayList<>();
405 folderList.add("Files/Certificates/");
407 metaFile = metaFile +
408 TOSCA_META_ETSI_ENTRY_TESTS + SEPERATOR_MF_ATTRIBUTE + "Files/Tests\n" +
409 TOSCA_META_ETSI_ENTRY_LICENSES + SEPERATOR_MF_ATTRIBUTE + "Files/Licenses\n" +
410 TOSCA_META_ETSI_ENTRY_CERTIFICATE + SEPERATOR_MF_ATTRIBUTE + "Files/Certificates";
412 handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
413 handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest2.mf"));
414 handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
415 handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
417 Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, folderList);
418 assertExpectedErrors("Tosca.meta should not have entries applicable only to VF", errors, 2);
422 private void assertExpectedErrors( String testCase, Map<String, List<ErrorMessage>> errors, int expectedErrors){
423 if(expectedErrors > 0){
424 List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
425 assertTrue(testCase, errorMessages.size() == expectedErrors);
427 assertTrue(testCase,errors.size() == expectedErrors);