From 78f88751aa64fb72fd6321346929bd1d94f716a9 Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Fri, 30 Aug 2019 18:20:32 +0100 Subject: Fix and refactor manifest parsing Fix a CMS signature reading expected token. Fix the necessity of a empty line in the end of the manifest. Implement CMS signature, Source checksum algorithm and digest reading. Indicate the line number and content when a manifest error occurs. Remove unnecessary recursive reading. Centralize manifest tokens. Improve tests by checking the expected error. Document the code. Change-Id: I7d12020d8922fc5d4c8d9f238557dfbcc0b65757 Issue-ID: SDC-2563 Signed-off-by: andre.schmid --- .../csar/validation/ManifestBuilder.java | 27 ++-- .../csar/validation/ManifestBuilderTest.java | 18 ++- .../csar/validation/ONAPCsarValidatorTest.java | 8 +- .../SOL004MetaDirectoryValidatorTest.java | 152 +++++++++++---------- .../csar/validation/ValidatorFactoryTest.java | 10 +- .../upload/csar/UploadCSARFileTest.java | 5 +- 6 files changed, 119 insertions(+), 101 deletions(-) (limited to 'openecomp-be/backend') diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilder.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilder.java index c7fd225c76..eff1fb31cd 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilder.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilder.java @@ -19,12 +19,17 @@ package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.ALGORITHM; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.HASH; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.METADATA; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.NON_MANO_ARTIFACT_SETS; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.SOURCE; + import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; -import org.openecomp.sdc.tosca.csar.CSARConstants; /** * Builds SOL0004 manifest file as a String. @@ -73,8 +78,8 @@ public class ManifestBuilder { */ public ManifestBuilder withSignedSource(final String sourcePath, final String hashAlgorithm, final String hash) { TreeMap sourcePropertiesMap = new TreeMap<>(); - sourcePropertiesMap.put(CSARConstants.ALGORITHM_MF_ATTRIBUTE, hashAlgorithm); - sourcePropertiesMap.put(CSARConstants.HASH_MF_ATTRIBUTE, hash); + sourcePropertiesMap.put(ALGORITHM.getToken(), hashAlgorithm); + sourcePropertiesMap.put(HASH.getToken(), hash); sourceWithPropertiesMap.put(sourcePath, sourcePropertiesMap); return this; } @@ -119,7 +124,7 @@ public class ManifestBuilder { private String buildMetadata() { final StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(String.format(SECTION_FORMAT, CSARConstants.METADATA_MF_ATTRIBUTE)); + stringBuilder.append(String.format(SECTION_FORMAT, METADATA.getToken())); for (Entry metadataAndValue : metadataMap.entrySet()) { stringBuilder.append("\t"); stringBuilder.append(String.format(PROPERTY_FORMAT, metadataAndValue.getKey(), metadataAndValue.getValue())); @@ -131,17 +136,17 @@ public class ManifestBuilder { private String buildSource() { final StringBuilder stringBuilder = new StringBuilder(); for (final Entry> signedSourceMap : sourceWithPropertiesMap.entrySet()) { - stringBuilder.append(String.format(PROPERTY_FORMAT, CSARConstants.SOURCE_MF_ATTRIBUTE, signedSourceMap.getKey())); + stringBuilder.append(String.format(PROPERTY_FORMAT, SOURCE.getToken(), signedSourceMap.getKey())); final Map propertiesMap = signedSourceMap.getValue(); if (propertiesMap != null && !propertiesMap.isEmpty()) { - final String algorithm = propertiesMap.get(CSARConstants.ALGORITHM_MF_ATTRIBUTE); + final String algorithm = propertiesMap.get(ALGORITHM.getToken()); if (algorithm != null) { - stringBuilder.append(String.format(PROPERTY_FORMAT, CSARConstants.ALGORITHM_MF_ATTRIBUTE, algorithm)); + stringBuilder.append(String.format(PROPERTY_FORMAT, ALGORITHM.getToken(), algorithm)); } - final String hash = propertiesMap.get(CSARConstants.HASH_MF_ATTRIBUTE); + final String hash = propertiesMap.get(HASH.getToken()); if (hash != null) { - stringBuilder.append(String.format(PROPERTY_FORMAT, CSARConstants.HASH_MF_ATTRIBUTE, hash)); + stringBuilder.append(String.format(PROPERTY_FORMAT, HASH.getToken(), hash)); } } } @@ -151,13 +156,13 @@ public class ManifestBuilder { private String buildNonManoArtifact() { final StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(String.format(SECTION_FORMAT, CSARConstants.NON_MANO_MF_ATTRIBUTE)); + stringBuilder.append(String.format(SECTION_FORMAT, NON_MANO_ARTIFACT_SETS.getToken())); for (Entry> artifactTypeAndSourcesEntry : nonManoArtifactMap.entrySet()) { stringBuilder.append("\t"); stringBuilder.append(String.format(SECTION_FORMAT, artifactTypeAndSourcesEntry.getKey())); for (String source : artifactTypeAndSourcesEntry.getValue()) { stringBuilder.append("\t\t"); - stringBuilder.append(String.format(PROPERTY_FORMAT, CSARConstants.SOURCE_MF_ATTRIBUTE, source)); + stringBuilder.append(String.format(PROPERTY_FORMAT, SOURCE.getToken(), source)); } } return stringBuilder.toString(); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilderTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilderTest.java index e022e2fedb..5079ecc0ac 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilderTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilderTest.java @@ -24,6 +24,10 @@ import static org.hamcrest.Matchers.hasItems; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.isEmptyString; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.PNFD_ARCHIVE_VERSION; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.PNFD_NAME; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.PNFD_PROVIDER; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.PNFD_RELEASE_DATE_TIME; import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.NonManoArtifactType.ONAP_PM_DICTIONARY; import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.NonManoArtifactType.ONAP_VES_EVENTS; @@ -34,7 +38,6 @@ import java.util.Map; import java.util.TreeMap; import org.junit.Before; import org.junit.Test; -import org.openecomp.sdc.tosca.csar.CSARConstants; import org.openecomp.sdc.tosca.csar.Manifest; import org.openecomp.sdc.tosca.csar.SOL004ManifestOnboarding; @@ -92,10 +95,10 @@ public class ManifestBuilderTest { @Test public void givenMetadata_whenBuildingManifestWithMetadata_thenParsedManifestMetadataShouldBeTheSame() { final Map expectedMetadataMap = new TreeMap<>(); - expectedMetadataMap.put(CSARConstants.PNFD_NAME, "myPnf"); - expectedMetadataMap.put(CSARConstants.PNFD_PROVIDER, "Acme"); - expectedMetadataMap.put(CSARConstants.PNFD_ARCHIVE_VERSION, "1.0"); - expectedMetadataMap.put(CSARConstants.PNFD_RELEASE_DATE_TIME, "2019-03-11T11:25:00+00:00"); + expectedMetadataMap.put(PNFD_NAME.getToken(), "myPnf"); + expectedMetadataMap.put(PNFD_PROVIDER.getToken(), "Acme"); + expectedMetadataMap.put(PNFD_ARCHIVE_VERSION.getToken(), "1.0"); + expectedMetadataMap.put(PNFD_RELEASE_DATE_TIME.getToken(), "2019-03-11T11:25:00+00:00"); expectedMetadataMap.forEach((key, value) -> manifestBuilder.withMetaData(key, value)); @@ -150,7 +153,10 @@ public class ManifestBuilderTest { } private void mockManifestMetadata() { - manifestBuilder.withMetaData(CSARConstants.PNFD_PROVIDER, "test"); + manifestBuilder.withMetaData(PNFD_PROVIDER.getToken(), "provider"); + manifestBuilder.withMetaData(PNFD_NAME.getToken(), "name"); + manifestBuilder.withMetaData(PNFD_RELEASE_DATE_TIME.getToken(), "datetime"); + manifestBuilder.withMetaData(PNFD_ARCHIVE_VERSION.getToken(), "1.0"); } private void mockManifestSource() { diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidatorTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidatorTest.java index 76a31b2cd5..6dc8e1a5c6 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidatorTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidatorTest.java @@ -30,12 +30,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertEquals; public class ONAPCsarValidatorTest { - ONAPCsarValidator onapCsarValidator; + private ONAPCsarValidator onapCsarValidator; private FileContentHandler contentHandler; private List folderList; @@ -85,9 +85,9 @@ public class ONAPCsarValidatorTest { private void assertExpectedErrors( String testCase, Map> errors, int expectedErrors){ if(expectedErrors > 0){ List errorMessages = errors.get(SdcCommon.UPLOAD_FILE); - assertTrue(testCase, errorMessages.size() == expectedErrors); + assertEquals(testCase, expectedErrors, errorMessages.size()); }else{ - assertTrue(testCase,errors.size() == expectedErrors); + assertEquals(testCase, expectedErrors, errors.size()); } } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidatorTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidatorTest.java index 328f00ca90..2e0fd8643a 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidatorTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidatorTest.java @@ -20,35 +20,13 @@ package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation; -import org.apache.commons.collections.CollectionUtils; -import org.junit.Before; -import org.junit.Test; -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.sdc.common.errors.Messages; -import org.openecomp.sdc.common.utils.SdcCommon; -import org.openecomp.sdc.datatypes.error.ErrorLevel; -import org.openecomp.sdc.datatypes.error.ErrorMessage; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import org.openecomp.sdc.logging.api.Logger; -import org.openecomp.sdc.logging.api.LoggerFactory; - +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.openecomp.sdc.tosca.csar.CSARConstants.PNFD_NAME; -import static org.openecomp.sdc.tosca.csar.CSARConstants.PNFD_PROVIDER; -import static org.openecomp.sdc.tosca.csar.CSARConstants.PNFD_ARCHIVE_VERSION; -import static org.openecomp.sdc.tosca.csar.CSARConstants.PNFD_RELEASE_DATE_TIME; -import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPARATOR_MF_ATTRIBUTE; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_CERTIFICATE; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_CHANGE_LOG; @@ -56,14 +34,42 @@ import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_L import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_MANIFEST; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_TESTS; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_PATH_FILE_NAME; -import static org.openecomp.sdc.tosca.csar.CSARConstants.VNF_PRODUCT_NAME; -import static org.openecomp.sdc.tosca.csar.CSARConstants.VNF_PROVIDER_ID; -import static org.openecomp.sdc.tosca.csar.CSARConstants.VNF_PACKAGE_VERSION; -import static org.openecomp.sdc.tosca.csar.CSARConstants.VNF_RELEASE_DATE_TIME; - +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.ATTRIBUTE_VALUE_SEPARATOR; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.PNFD_ARCHIVE_VERSION; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.PNFD_NAME; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.PNFD_RELEASE_DATE_TIME; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.VNF_PACKAGE_VERSION; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.VNF_PRODUCT_NAME; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.VNF_PROVIDER_ID; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.VNF_RELEASE_DATE_TIME; import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.NonManoArtifactType.ONAP_PM_DICTIONARY; import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.NonManoArtifactType.ONAP_VES_EVENTS; -import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.*; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.EMPTY_YAML_FILE_PATH; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.INVALID_YAML_FILE_PATH; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.SAMPLE_DEFINITION_FILE_PATH; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.SAMPLE_DEFINITION_IMPORT_FILE_PATH; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.SAMPLE_SOURCE; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.TOSCA_CHANGELOG_FILEPATH; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.TOSCA_DEFINITION_FILEPATH; +import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.TOSCA_MANIFEST_FILEPATH; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import org.apache.commons.collections.CollectionUtils; +import org.junit.Before; +import org.junit.Test; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.tosca.csar.ManifestTokenType; public class SOL004MetaDirectoryValidatorTest { @@ -81,9 +87,9 @@ public class SOL004MetaDirectoryValidatorTest { "TOSCA-Meta-File-Version: 1.0\n"+ "CSAR-Version: 1.1\n"+ "Created-By: Vendor\n"+ - TOSCA_META_ENTRY_DEFINITIONS + SEPARATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n"+ - TOSCA_META_ETSI_ENTRY_MANIFEST + SEPARATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.mf\n"+ - TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPARATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text\n"; + TOSCA_META_ENTRY_DEFINITIONS + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Definitions/MainServiceTemplate.yaml\n"+ + TOSCA_META_ETSI_ENTRY_MANIFEST + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Definitions/MainServiceTemplate.mf\n"+ + TOSCA_META_ETSI_ENTRY_CHANGE_LOG + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Artifacts/changeLog.text\n"; } @Test @@ -92,7 +98,7 @@ public class SOL004MetaDirectoryValidatorTest { "Entry-Definitions: Definitions/MainServiceTemplate.yaml"; handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFileWithInvalidEntry.getBytes(StandardCharsets.UTF_8)); - handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(TestConstants.SAMPLE_DEFINITION_FILE_PATH)); + handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH)); final Map> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList()); assertExpectedErrors("TOSCA Meta file with no entries", errors, 1); @@ -109,8 +115,8 @@ public class SOL004MetaDirectoryValidatorTest { folderList.add("Files/Licenses/"); metaFile = metaFile + - TOSCA_META_ETSI_ENTRY_TESTS + SEPARATOR_MF_ATTRIBUTE + entryTestFilePath + "\n" + - TOSCA_META_ETSI_ENTRY_LICENSES + SEPARATOR_MF_ATTRIBUTE + entryLicenseFilePath +"\n"; + TOSCA_META_ETSI_ENTRY_TESTS + ATTRIBUTE_VALUE_SEPARATOR.getToken() + entryTestFilePath + "\n" + + TOSCA_META_ETSI_ENTRY_LICENSES + ATTRIBUTE_VALUE_SEPARATOR.getToken() + entryLicenseFilePath +"\n"; handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH)); @@ -156,16 +162,16 @@ public class SOL004MetaDirectoryValidatorTest { "TOSCA-Meta-File-Version: " + Integer.MAX_VALUE + "\nCSAR-Version: " + Integer.MAX_VALUE + "\nCreated-By: Bilal Iqbal\n" + - TOSCA_META_ENTRY_DEFINITIONS+ SEPARATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n" + - TOSCA_META_ETSI_ENTRY_MANIFEST + SEPARATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.mf\n"+ - TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPARATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text"; + TOSCA_META_ENTRY_DEFINITIONS + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Definitions/MainServiceTemplate.yaml\n" + + TOSCA_META_ETSI_ENTRY_MANIFEST + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Definitions/MainServiceTemplate.mf\n"+ + TOSCA_META_ETSI_ENTRY_CHANGE_LOG + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Artifacts/changeLog.text"; final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder(); handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME); - handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(TestConstants.SAMPLE_DEFINITION_FILE_PATH)); + handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH)); manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH); handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8)); @@ -437,9 +443,9 @@ public class SOL004MetaDirectoryValidatorTest { "TOSCA-Meta-File-Version: 1.0\n"+ "CSAR-Version: 1.1\n"+ "Created-By: Vendor\n"+ - TOSCA_META_ENTRY_DEFINITIONS + SEPARATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n"+ - TOSCA_META_ETSI_ENTRY_MANIFEST + SEPARATOR_MF_ATTRIBUTE +"Definitions/MainServiceTemplate2.mf\n"+ - TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPARATOR_MF_ATTRIBUTE +"Artifacts/changeLog.text\n"; + TOSCA_META_ENTRY_DEFINITIONS + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Definitions/MainServiceTemplate.yaml\n"+ + TOSCA_META_ETSI_ENTRY_MANIFEST + ATTRIBUTE_VALUE_SEPARATOR.getToken() +"Definitions/MainServiceTemplate2.mf\n"+ + TOSCA_META_ETSI_ENTRY_CHANGE_LOG + ATTRIBUTE_VALUE_SEPARATOR.getToken() +"Artifacts/changeLog.text\n"; final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder(); @@ -470,8 +476,8 @@ public class SOL004MetaDirectoryValidatorTest { "CSAR-Version: 1.1\n"+ "Created-By: Vendor\n"+ "Entry-Definitions: Definitions/MainServiceTemplate.yaml\n"+ - TOSCA_META_ETSI_ENTRY_MANIFEST + SEPARATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.txt\n"+ - TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPARATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text\n"; + TOSCA_META_ETSI_ENTRY_MANIFEST + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Definitions/MainServiceTemplate.txt\n"+ + TOSCA_META_ETSI_ENTRY_CHANGE_LOG + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Artifacts/changeLog.text\n"; final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder(); @@ -540,10 +546,10 @@ public class SOL004MetaDirectoryValidatorTest { @Test public void testGivenManifestFile_withMetadataContainingMixedPnfVnfMetadata_thenErrorIsReturned() { final ManifestBuilder manifestBuilder = new ManifestBuilder() - .withMetaData(PNFD_NAME, "RadioNode") - .withMetaData(VNF_PROVIDER_ID, "Bilal Iqbal") - .withMetaData(PNFD_ARCHIVE_VERSION, "1.0") - .withMetaData(VNF_RELEASE_DATE_TIME, "2019-12-14T11:25:00+00:00"); + .withMetaData(PNFD_NAME.getToken(), "RadioNode") + .withMetaData(VNF_PROVIDER_ID.getToken(), "Bilal Iqbal") + .withMetaData(PNFD_ARCHIVE_VERSION.getToken(), "1.0") + .withMetaData(VNF_RELEASE_DATE_TIME.getToken(), "2019-12-14T11:25:00+00:00"); handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME); @@ -588,8 +594,8 @@ public class SOL004MetaDirectoryValidatorTest { public void testGivenManifestFile_withMetadataMissingMandatoryPnfEntries_thenErrorIsReturned() { final ManifestBuilder manifestBuilder = new ManifestBuilder(); - manifestBuilder.withMetaData(PNFD_NAME, "RadioNode"); - manifestBuilder.withMetaData(PNFD_RELEASE_DATE_TIME, "2019-12-14T11:25:00+00:00"); + manifestBuilder.withMetaData(PNFD_NAME.getToken(), "RadioNode"); + manifestBuilder.withMetaData(PNFD_RELEASE_DATE_TIME.getToken(), "2019-12-14T11:25:00+00:00"); handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME); @@ -604,7 +610,7 @@ public class SOL004MetaDirectoryValidatorTest { handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8)); final Map> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList()); - assertExpectedErrors("Manifest with metadata missing pnf mandatory entries should return error", errors, 3); + assertExpectedErrors("Manifest with metadata missing pnf mandatory entries should return error", errors, 1); } @@ -612,7 +618,7 @@ public class SOL004MetaDirectoryValidatorTest { public void testGivenManifestFile_withMetadataMissingMandatoryVnfEntries_thenErrorIsReturned() { final ManifestBuilder manifestBuilder = new ManifestBuilder(); - manifestBuilder.withMetaData(VNF_PRODUCT_NAME, "RadioNode"); + manifestBuilder.withMetaData(VNF_PRODUCT_NAME.getToken(), "RadioNode"); handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME); @@ -627,7 +633,7 @@ public class SOL004MetaDirectoryValidatorTest { handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8)); final Map> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList()); - assertExpectedErrors("Manifest with metadata missing vnf mandatory entries should return error", errors, 4); + assertExpectedErrors("Manifest with metadata missing vnf mandatory entries should return error", errors, 1); } @@ -637,10 +643,10 @@ public class SOL004MetaDirectoryValidatorTest { @Test public void testGivenManifestFile_withMetadataEntriesExceedingTheLimit_thenErrorIsReturned() { final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder() - .withMetaData(PNFD_NAME, "RadioNode") - .withMetaData(PNFD_PROVIDER, "Bilal Iqbal") - .withMetaData(PNFD_ARCHIVE_VERSION, "1.0") - .withMetaData(PNFD_RELEASE_DATE_TIME, "2019-03-11T11:25:00+00:00"); + .withMetaData(PNFD_NAME.getToken(), "RadioNode") + .withMetaData(ManifestTokenType.PNFD_PROVIDER.getToken(), "Bilal Iqbal") + .withMetaData(PNFD_ARCHIVE_VERSION.getToken(), "1.0") + .withMetaData(PNFD_RELEASE_DATE_TIME.getToken(), "2019-03-11T11:25:00+00:00"); handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME); @@ -655,7 +661,7 @@ public class SOL004MetaDirectoryValidatorTest { handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8)); final Map> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList()); - assertExpectedErrors("Manifest with more than 4 metadata entries should return error", errors, 2); + assertExpectedErrors("Manifest with more than 4 metadata entries should return error", errors, 1); } @Test @@ -663,9 +669,9 @@ public class SOL004MetaDirectoryValidatorTest { final ManifestBuilder manifestBuilder = getPnfManifestSampleBuilder(); metaFile = metaFile + - TOSCA_META_ETSI_ENTRY_TESTS + SEPARATOR_MF_ATTRIBUTE + "Files/Tests\n" + - TOSCA_META_ETSI_ENTRY_LICENSES + SEPARATOR_MF_ATTRIBUTE + "Files/Licenses\n" + - TOSCA_META_ETSI_ENTRY_CERTIFICATE + SEPARATOR_MF_ATTRIBUTE + "Files/Certificates"; + TOSCA_META_ETSI_ENTRY_TESTS + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Files/Tests\n" + + TOSCA_META_ETSI_ENTRY_LICENSES + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Files/Licenses\n" + + TOSCA_META_ETSI_ENTRY_CERTIFICATE + ATTRIBUTE_VALUE_SEPARATOR.getToken() + "Files/Certificates"; handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME); @@ -908,9 +914,9 @@ public class SOL004MetaDirectoryValidatorTest { final List errorMessages = errors.get(SdcCommon.UPLOAD_FILE); printErrorMessages(errorMessages); if (expectedErrors > 0) { - assertEquals(testCase, errorMessages.size(), expectedErrors); + assertEquals(testCase, expectedErrors, errorMessages.size()); } else { - assertEquals(testCase, errors.size(), expectedErrors); + assertEquals(testCase, expectedErrors, errors.size()); } } @@ -936,18 +942,18 @@ public class SOL004MetaDirectoryValidatorTest { private ManifestBuilder getPnfManifestSampleBuilder() { return new ManifestBuilder() - .withMetaData(PNFD_NAME, "myPnf") - .withMetaData(PNFD_PROVIDER, "ACME") - .withMetaData(PNFD_ARCHIVE_VERSION, "1.0") - .withMetaData(PNFD_RELEASE_DATE_TIME, "2019-03-11T11:25:00+00:00"); + .withMetaData(PNFD_NAME.getToken(), "myPnf") + .withMetaData(ManifestTokenType.PNFD_PROVIDER.getToken(), "ACME") + .withMetaData(PNFD_ARCHIVE_VERSION.getToken(), "1.0") + .withMetaData(PNFD_RELEASE_DATE_TIME.getToken(), "2019-03-11T11:25:00+00:00"); } private ManifestBuilder getVnfManifestSampleBuilder() { return new ManifestBuilder() - .withMetaData(VNF_PRODUCT_NAME, "RadioNode") - .withMetaData(VNF_PROVIDER_ID, "ACME") - .withMetaData(VNF_PACKAGE_VERSION, "1.0") - .withMetaData(VNF_RELEASE_DATE_TIME, "2019-03-11T11:25:00+00:00"); + .withMetaData(VNF_PRODUCT_NAME.getToken(), "RadioNode") + .withMetaData(VNF_PROVIDER_ID.getToken(), "ACME") + .withMetaData(VNF_PACKAGE_VERSION.getToken(), "1.0") + .withMetaData(VNF_RELEASE_DATE_TIME.getToken(), "2019-03-11T11:25:00+00:00"); } private void assertExpectedErrors(List actualErrorList, final List expectedErrorList) { diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorFactoryTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorFactoryTest.java index d9fca4d0e4..344fe8b6f5 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorFactoryTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorFactoryTest.java @@ -27,11 +27,11 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import static org.junit.Assert.assertEquals; -import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPARATOR_MF_ATTRIBUTE; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_CHANGE_LOG; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ETSI_ENTRY_MANIFEST; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_PATH_FILE_NAME; +import static org.openecomp.sdc.tosca.csar.ManifestTokenType.ATTRIBUTE_VALUE_SEPARATOR; import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.TOSCA_CHANGELOG_FILEPATH; import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.TOSCA_DEFINITION_FILEPATH; import static org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.TOSCA_MANIFEST_FILEPATH; @@ -74,7 +74,7 @@ public class ValidatorFactoryTest { @Test public void testGivenNonSOL004MetaDirectoryCompliantMetaFile_thenONAPCSARValidatorIsReturned() throws IOException{ metaFile = metaFile + - TOSCA_META_ENTRY_DEFINITIONS + SEPARATOR_MF_ATTRIBUTE + TOSCA_DEFINITION_FILEPATH; + TOSCA_META_ENTRY_DEFINITIONS + ATTRIBUTE_VALUE_SEPARATOR.getToken() + TOSCA_DEFINITION_FILEPATH; handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); assertEquals(ONAPCsarValidator.class, ValidatorFactory.getValidator(handler).getClass()); @@ -84,9 +84,9 @@ public class ValidatorFactoryTest { public void testGivenSOL004MetaDirectoryCompliantMetafile_thenONAPCsarValidatorIsReturned() throws IOException{ metaFile = metaFile + - TOSCA_META_ENTRY_DEFINITIONS + SEPARATOR_MF_ATTRIBUTE + TOSCA_DEFINITION_FILEPATH + "\n" - + TOSCA_META_ETSI_ENTRY_MANIFEST + SEPARATOR_MF_ATTRIBUTE + TOSCA_MANIFEST_FILEPATH + "\n" - + TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPARATOR_MF_ATTRIBUTE + TOSCA_CHANGELOG_FILEPATH + "\n"; + TOSCA_META_ENTRY_DEFINITIONS + ATTRIBUTE_VALUE_SEPARATOR.getToken() + TOSCA_DEFINITION_FILEPATH + "\n" + + TOSCA_META_ETSI_ENTRY_MANIFEST + ATTRIBUTE_VALUE_SEPARATOR.getToken() + TOSCA_MANIFEST_FILEPATH + "\n" + + TOSCA_META_ETSI_ENTRY_CHANGE_LOG + ATTRIBUTE_VALUE_SEPARATOR.getToken() + TOSCA_CHANGELOG_FILEPATH + "\n"; handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8)); assertEquals(SOL004MetaDirectoryValidator.class, ValidatorFactory.getValidator(handler).getClass()); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java index 77e519c502..122809896e 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/UploadCSARFileTest.java @@ -138,8 +138,9 @@ public class UploadCSARFileTest { candidateManager.upload(vspDetails, onboardPackageInfo); assertEquals(1, response.getErrors().size()); assertEquals(response.getErrors().values().iterator().next().get(0).getMessage(), - "Manifest " + - "contains invalid line : aaa: vCSCF"); + Messages.MANIFEST_ERROR_WITH_LINE + .formatMessage(Messages.MANIFEST_START_METADATA.getErrorMessage(), 1, "aaa: vCSCF") + ); } } -- cgit 1.2.3-korg