aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml6
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilder.java166
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java50
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilderTest.java157
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidatorTest.java588
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorFactoryTest.java10
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorUtil.java23
-rw-r--r--openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java1
-rw-r--r--openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/AbstractOnboardingManifest.java4
-rw-r--r--openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/CSARConstants.java20
-rw-r--r--openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ONAPManifestOnboarding.java8
-rw-r--r--openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java4
-rw-r--r--openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/SOL004ManifestOnboarding.java26
14 files changed, 862 insertions, 202 deletions
diff --git a/.gitignore b/.gitignore
index 0d31763c52..1775301fb5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -271,3 +271,4 @@ asdctool/test-output/*
asdctool/report_delete_1538046694389.json
asdctool/report_test_1538046722484.json
+/ajcore*.txt \ No newline at end of file
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml
index a259124d25..fd1b32c1d5 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml
@@ -213,6 +213,12 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ <version>${hamcrest-all.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<properties>
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
new file mode 100644
index 0000000000..c7fd225c76
--- /dev/null
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilder.java
@@ -0,0 +1,166 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation;
+
+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.
+ */
+public class ManifestBuilder {
+
+ private final Map<String, Map<String, String>> sourceWithPropertiesMap = new TreeMap<>();
+ private final Map<String, List<String>> nonManoArtifactMap = new TreeMap<>();
+ private final Map<String, String> metadataMap = new TreeMap<>();
+ private static final String PROPERTY_FORMAT = "%s: %s%n";
+ private static final String SECTION_FORMAT = "%s:%n";
+
+ /**
+ * Adds a metadata property.
+ *
+ * @param metadataProperty the property name
+ * @param value the property value
+ * @return
+ * a reference to this object.
+ */
+ public ManifestBuilder withMetaData(final String metadataProperty, final String value) {
+ metadataMap.put(metadataProperty, value);
+ return this;
+ }
+
+ /**
+ * Adds a manifest source path.
+ *
+ * @param sourcePath The source path
+ * @return
+ * a reference to this object.
+ */
+ public ManifestBuilder withSource(final String sourcePath) {
+ sourceWithPropertiesMap.put(sourcePath, null);
+ return this;
+ }
+
+ /**
+ * Adds a manifest source path with the source sign.
+ *
+ * @param sourcePath The source path
+ * @param hashAlgorithm The hash algorithm
+ * @param hash The hash representing the sign
+ * @return
+ * a reference to this object.
+ */
+ public ManifestBuilder withSignedSource(final String sourcePath, final String hashAlgorithm, final String hash) {
+ TreeMap<String, String> sourcePropertiesMap = new TreeMap<>();
+ sourcePropertiesMap.put(CSARConstants.ALGORITHM_MF_ATTRIBUTE, hashAlgorithm);
+ sourcePropertiesMap.put(CSARConstants.HASH_MF_ATTRIBUTE, hash);
+ sourceWithPropertiesMap.put(sourcePath, sourcePropertiesMap);
+ return this;
+ }
+
+ /**
+ * Adds a non mano artifact.
+ *
+ * @param artifactType the artifact type
+ * @param sourcePath the artifact source path
+ * @return
+ * a reference to this object.
+ */
+ public ManifestBuilder withNonManoArtifact(final String artifactType, final String sourcePath) {
+ nonManoArtifactMap.putIfAbsent(artifactType, new ArrayList<>());
+ nonManoArtifactMap.get(artifactType).add(sourcePath);
+ return this;
+ }
+
+
+ /**
+ * Builds the String representing the manifest file.
+ * @return
+ * The manifest file as String
+ */
+ public String build() {
+ final StringBuilder stringBuilder = new StringBuilder();
+
+ if (!metadataMap.isEmpty()) {
+ stringBuilder.append(buildMetadata());
+ }
+
+ if (!sourceWithPropertiesMap.isEmpty()) {
+ stringBuilder.append(buildSource());
+ }
+
+ if (!nonManoArtifactMap.isEmpty()) {
+ stringBuilder.append(buildNonManoArtifact());
+ }
+
+ return stringBuilder.toString();
+ }
+
+ private String buildMetadata() {
+ final StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append(String.format(SECTION_FORMAT, CSARConstants.METADATA_MF_ATTRIBUTE));
+ for (Entry<String, String> metadataAndValue : metadataMap.entrySet()) {
+ stringBuilder.append("\t");
+ stringBuilder.append(String.format(PROPERTY_FORMAT, metadataAndValue.getKey(), metadataAndValue.getValue()));
+ }
+ stringBuilder.append("\n");
+ return stringBuilder.toString();
+ }
+
+ private String buildSource() {
+ final StringBuilder stringBuilder = new StringBuilder();
+ for (final Entry<String, Map<String, String>> signedSourceMap : sourceWithPropertiesMap.entrySet()) {
+ stringBuilder.append(String.format(PROPERTY_FORMAT, CSARConstants.SOURCE_MF_ATTRIBUTE, signedSourceMap.getKey()));
+ final Map<String, String> propertiesMap = signedSourceMap.getValue();
+ if (propertiesMap != null && !propertiesMap.isEmpty()) {
+ final String algorithm = propertiesMap.get(CSARConstants.ALGORITHM_MF_ATTRIBUTE);
+ if (algorithm != null) {
+ stringBuilder.append(String.format(PROPERTY_FORMAT, CSARConstants.ALGORITHM_MF_ATTRIBUTE, algorithm));
+ }
+
+ final String hash = propertiesMap.get(CSARConstants.HASH_MF_ATTRIBUTE);
+ if (hash != null) {
+ stringBuilder.append(String.format(PROPERTY_FORMAT, CSARConstants.HASH_MF_ATTRIBUTE, hash));
+ }
+ }
+ }
+ stringBuilder.append("\n");
+ return stringBuilder.toString();
+ }
+
+ private String buildNonManoArtifact() {
+ final StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append(String.format(SECTION_FORMAT, CSARConstants.NON_MANO_MF_ATTRIBUTE));
+ for (Entry<String, List<String>> 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));
+ }
+ }
+ return stringBuilder.toString();
+ }
+
+}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java
index 893fb7032d..d41d39cf66 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java
@@ -20,6 +20,7 @@
package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation;
+import java.util.Collection;
import org.openecomp.core.converter.ServiceTemplateReaderService;
import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl;
import org.openecomp.core.utilities.file.FileContentHandler;
@@ -282,8 +283,8 @@ class SOL004MetaDirectoryValidator implements Validator{
}
private void validateManifestFile(FileContentHandler contentHandler, String filePath){
- final Set<String> exitingFiles = contentHandler.getFileList();
- if(verifyFileExists(exitingFiles, filePath)) {
+ final Set<String> existingFiles = contentHandler.getFileList();
+ if(verifyFileExists(existingFiles, filePath)) {
Manifest onboardingManifest = new SOL004ManifestOnboarding();
onboardingManifest.parse(contentHandler.getFileContent(filePath));
if(onboardingManifest.isValid()){
@@ -293,7 +294,7 @@ class SOL004MetaDirectoryValidator implements Validator{
reportError(ErrorLevel.ERROR, e.getMessage());
LOGGER.error(e.getMessage(), e);
}
- verifySourcesExists(exitingFiles, onboardingManifest);
+ verifyManifestSources(existingFiles, onboardingManifest);
}else{
List<String> manifestErrors = onboardingManifest.getErrors();
for(String error: manifestErrors){
@@ -345,13 +346,42 @@ class SOL004MetaDirectoryValidator implements Validator{
}
}
- private void verifySourcesExists(Set<String> exitingFiles, Manifest onboardingManifest) {
- List<String> sources = filterSources(onboardingManifest.getSources());
- Map<String, List<String>> nonManoArtifacts = onboardingManifest.getNonManoSources();
- verifyFilesExist(exitingFiles, sources, MANIFEST_SOURCE);
- for (Map.Entry entry : nonManoArtifacts.entrySet()) {
- verifyFilesExist(exitingFiles, filterSources((List)entry.getValue()), MANIFEST_NON_MANO_SOURCE);
- }
+ /**
+ * Checks if all manifest sources exists within the package and if all package files are being referred.
+ *
+ * @param packageFiles The package file path list
+ * @param onboardingManifest The manifest
+ */
+ private void verifyManifestSources(final Set<String> packageFiles, final Manifest onboardingManifest) {
+ final List<String> sources = filterSources(onboardingManifest.getSources());
+ verifyFilesExist(packageFiles, sources, MANIFEST_SOURCE);
+
+ final Map<String, List<String>> nonManoArtifacts = onboardingManifest.getNonManoSources();
+ final List<String> nonManoFiles = nonManoArtifacts.values().stream()
+ .map(this::filterSources)
+ .flatMap(Collection::stream)
+ .collect(Collectors.toList());
+ verifyFilesExist(packageFiles, nonManoFiles, MANIFEST_NON_MANO_SOURCE);
+
+ final Set<String> allReferredFiles = new HashSet<>();
+ allReferredFiles.addAll(sources);
+ allReferredFiles.addAll(nonManoFiles);
+ verifyFilesBeingReferred(allReferredFiles, packageFiles);
+ }
+
+ /**
+ * Checks if all package files are referred in manifest.
+ * Reports missing references.
+ *
+ * @param referredFileSet the list of referred files path
+ * @param packageFileSet the list of package file path
+ */
+ private void verifyFilesBeingReferred(final Set<String> referredFileSet, final Set<String> packageFileSet) {
+ packageFileSet.forEach(filePath -> {
+ if (!referredFileSet.contains(filePath)) {
+ reportError(ErrorLevel.ERROR, String.format(Messages.MISSING_MANIFEST_REFERENCE.getErrorMessage(), filePath));
+ }
+ });
}
private List<String> filterSources(List<String> source){
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
new file mode 100644
index 0000000000..72f235e287
--- /dev/null
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ManifestBuilderTest.java
@@ -0,0 +1,157 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+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 java.io.ByteArrayInputStream;
+import java.util.Arrays;
+import java.util.List;
+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;
+
+public class ManifestBuilderTest {
+
+ private ManifestBuilder manifestBuilder;
+
+ @Before
+ public void setUp() {
+ manifestBuilder = new ManifestBuilder();
+ }
+
+ @Test
+ public void givenNoManifestInformation_whenBuildingManifest_thenEmptyStringShouldBeReturned() {
+ final String manifest = manifestBuilder.build();
+ assertThat("Manifest should be empty", manifest, isEmptyString());
+ }
+
+ @Test
+ public void givenSourceFiles_whenBuildingManifestWithSources_thenManifestSourceListShouldBeTheSame() {
+ final List<String> expectedSourceList = mockSourceList();
+ mockManifestMetadata();
+ expectedSourceList.forEach(source -> manifestBuilder.withSource(source));
+
+ final Manifest onboardingManifest = parseManifest();
+ final List<String> actualSourceList = onboardingManifest.getSources();
+
+ assertThat("Source list should have the same size as expected source items", actualSourceList,
+ hasSize(expectedSourceList.size()));
+ assertThat("Source list should contain all expected source items", actualSourceList,
+ hasItems(expectedSourceList.toArray(new String[0])));
+ assertThat("Source list should contain only expected sources items", expectedSourceList,
+ hasItems(actualSourceList.toArray(new String[expectedSourceList.size()])));
+ }
+
+ @Test
+ public void givenSourceFiles_whenBuildingManifestWithSignedSources_thenManifestSourceListShouldBeTheSame() {
+ final List<String> expectedSourceList = mockSourceList();
+ mockManifestMetadata();
+ expectedSourceList.forEach(sourceArtifact ->
+ manifestBuilder.withSignedSource(sourceArtifact, "anyAlgorithm", "anyHash")
+ );
+
+ final Manifest onboardingManifest = parseManifest();
+ final List<String> sources = onboardingManifest.getSources();
+
+ assertThat("Source list should have the same size as expected source items", sources,
+ hasSize(expectedSourceList.size()));
+ assertThat("Source list should contain all expected source items", sources,
+ hasItems(expectedSourceList.toArray(new String[0])));
+ assertThat("Source list should contain only expected sources items", expectedSourceList,
+ hasItems(sources.toArray(new String[expectedSourceList.size()])));
+ }
+
+ @Test
+ public void givenMetadata_whenBuildingManifestWithMetadata_thenParsedManifestMetadataShouldBeTheSame() {
+ final Map<String, String> 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.forEach((key, value) -> manifestBuilder.withMetaData(key, value));
+
+ final Manifest onboardingManifest = parseManifest();
+ final Map<String, String> actualMetadataMap = onboardingManifest.getMetadata();
+
+ assertThat("Metadata should be as expected", actualMetadataMap, is(expectedMetadataMap));
+ }
+
+ @Test
+ public void givenNonManoArtifacts_whenBuildingManifestWithArtifacts_thenParsedManifestNonManoArtifactsShouldBeTheSame() {
+ mockManifestMetadata();
+ mockManifestSource();
+
+ final Map<String, List<String>> expectedNonManoArtifactMap = new TreeMap<>();
+ expectedNonManoArtifactMap.put("onap_ves_events", Arrays.asList("Files/Events/MyPnf_Pnf_v1.yaml"));
+ expectedNonManoArtifactMap.put("onap_pm_dictionary", Arrays.asList("Files/Measurements/PM_Dictionary.yaml"));
+ expectedNonManoArtifactMap.put("onap_yang_modules",
+ Arrays.asList("Files/Yang_module/mynetconf.yang", "Files/Yang_module/mynetconf2.yang"));
+ expectedNonManoArtifactMap
+ .put("onap_others", Arrays.asList("Files/Guides/user_guide.txt", "Files/Test/test.txt"));
+
+ expectedNonManoArtifactMap.forEach((key, artifacts) ->
+ artifacts.forEach(s -> manifestBuilder.withNonManoArtifact(key, s))
+ );
+
+ final Manifest onboardingManifest = parseManifest();
+ final Map<String, List<String>> actualNonManoArtifactMap = onboardingManifest.getNonManoSources();
+
+ assertThat("Non Mano Sources should be as expected", actualNonManoArtifactMap, is(expectedNonManoArtifactMap));
+ }
+
+ private Manifest parseManifest() {
+ final Manifest onboardingManifest = new SOL004ManifestOnboarding();
+ onboardingManifest.parse(new ByteArrayInputStream(manifestBuilder.build().getBytes()));
+ return onboardingManifest;
+ }
+
+ private List<String> mockSourceList() {
+ return Arrays.asList("pnf_main_descriptor.mf"
+ , "Definitions/pnf_main_descriptor.yaml"
+ , "Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml"
+ , "Definitions/etsi_nfv_sol001_vnfd_2_5_1_types.yaml"
+ , "Files/ChangeLog.txt"
+ , "Files/Events/MyPnf_Pnf_v1.yaml"
+ , "Files/Guides/user_guide.txt"
+ , "Files/Measurements/PM_Dictionary.yaml"
+ , "Files/Scripts/my_script.sh"
+ , "Files/Yang_module/mynetconf.yang"
+ , "TOSCA-Metadata/TOSCA.meta"
+ );
+ }
+
+ private void mockManifestMetadata() {
+ manifestBuilder.withMetaData(CSARConstants.PNFD_PROVIDER, "test");
+ }
+
+ private void mockManifestSource() {
+ manifestBuilder.withSource("/test.yaml");
+ }
+} \ No newline at end of file
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 93c8b23268..17017f5b95 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
@@ -1,5 +1,6 @@
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;
@@ -13,8 +14,10 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
+import static org.junit.Assert.fail;
+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;
@@ -22,6 +25,15 @@ 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.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.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.vendorsoftwareproduct.impl.orchestration.csar.validation.TestConstants.*;
public class SOL004MetaDirectoryValidatorTest {
@@ -31,400 +43,660 @@ public class SOL004MetaDirectoryValidatorTest {
private String metaFile;
@Before
- public void setUp(){
+ public void setUp() {
sol004MetaDirectoryValidator = new SOL004MetaDirectoryValidator();
handler = new FileContentHandler();
metaFile =
"TOSCA-Meta-File-Version: 1.0\n"+
"CSAR-Version: 1.1\n"+
"Created-by: Vendor\n"+
- TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n"+
- TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.mf\n"+
- TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text\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";
}
@Test
- public void testGivenTOSCAMetaFile_whenEntryHasNoValue_thenErrorIsReturned() throws IOException{
-
- String metaFileWithInvalidEntry = "TOSCA-Meta-File-Version: \n" +
+ public void testGivenTOSCAMetaFile_whenEntryHasNoValue_thenErrorIsReturned() {
+ final String metaFileWithInvalidEntry = "TOSCA-Meta-File-Version: \n" +
"Entry-Definitions: Definitions/MainServiceTemplate.yaml";
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFileWithInvalidEntry.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(TestConstants.SAMPLE_DEFINITION_FILE_PATH));
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(TestConstants.SAMPLE_DEFINITION_FILE_PATH));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(errors.size() == 1 && errorMessages.size() == 1);
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ assertExpectedErrors("TOSCA Meta file with no entries", errors, 1);
}
@Test
- public void testGivenTOSCAMeta_withAllSupportedEntries_thenNoErrorsReturned() throws IOException{
+ public void testGivenTOSCAMeta_withAllSupportedEntries_thenNoErrorsReturned() {
- String entryTestFilePath = "Files/Tests";
- String entryLicenseFilePath = "Files/Licenses";
+ final String entryTestFilePath = "Files/Tests";
+ final String entryLicenseFilePath = "Files/Licenses";
- List<String> folderList = new ArrayList<>();
+ final List<String> folderList = new ArrayList<>();
folderList.add("Files/Tests/");
folderList.add("Files/Licenses/");
metaFile = metaFile +
- TOSCA_META_ETSI_ENTRY_TESTS + SEPERATOR_MF_ATTRIBUTE + entryTestFilePath + "\n" +
- TOSCA_META_ETSI_ENTRY_LICENSES + SEPERATOR_MF_ATTRIBUTE + entryLicenseFilePath +"\n";
+ TOSCA_META_ETSI_ENTRY_TESTS + SEPARATOR_MF_ATTRIBUTE + entryTestFilePath + "\n" +
+ TOSCA_META_ETSI_ENTRY_LICENSES + SEPARATOR_MF_ATTRIBUTE + entryLicenseFilePath +"\n";
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
+
handler.addFile(SAMPLE_SOURCE, "".getBytes());
handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
handler.addFile(entryTestFilePath, "".getBytes());
handler.addFile(entryLicenseFilePath, "".getBytes());
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, folderList);
+ final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder()
+ .withSource(TOSCA_META_PATH_FILE_NAME)
+ .withSource(TOSCA_DEFINITION_FILEPATH)
+ .withSource(TOSCA_CHANGELOG_FILEPATH)
+ .withSource(TOSCA_MANIFEST_FILEPATH).withSource(SAMPLE_SOURCE)
+ .withSource(SAMPLE_DEFINITION_IMPORT_FILE_PATH)
+ .withSource(entryTestFilePath)
+ .withSource(entryLicenseFilePath);
+
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, folderList);
assertTrue(errors.size() == 0);
}
@Test
- public void testGivenTOSCAMeta_withUnsupportedEntry_thenWarningIsReturned(){
-
+ public void testGivenTOSCAMeta_withUnsupportedEntry_thenWarningIsReturned() {
metaFile = "Entry-Events: Definitions/events.log";
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
assertTrue(errors.size() == 1 && errorMessages.size() == 1);
assertTrue(errorMessages.get(0).getLevel() == ErrorLevel.ERROR);
-
}
+ /**
+ * Tests if the meta file contains invalid versions in TOSCA-Meta-File-Version and CSAR-Version attributes.
+ */
@Test
- public void testGivenTOSCAMetaFile_withInvalidTOSCAMetaFileVersionAndCSARVersion_thenErrorIsReturned() throws IOException{
-
- String metaFile =
+ public void testGivenTOSCAMetaFile_withInvalidTOSCAMetaFileVersionAndCSARVersion_thenErrorIsReturned() {
+ final String metaFile =
"TOSCA-Meta-File-Version: " + Integer.MAX_VALUE +
"\nCSAR-Version: " + Integer.MAX_VALUE +
"\nCreated-by: Bilal Iqbal\n" +
- TOSCA_META_ENTRY_DEFINITIONS+ SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n" +
- TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.mf\n"+
- TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text";
+ 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";
+
+ final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder();
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(TestConstants.SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(TestConstants.SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(errors.size() == 1 && errorMessages.size() == 2);
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ assertExpectedErrors("Invalid TOSCA-Meta-File-Version and CSAR-Version attributes", errors, 2);
}
@Test
- public void testGivenTOSCAMetaFile_withNonExistentFileReferenced_thenErrorsReturned(){
-
+ public void testGivenTOSCAMetaFile_withNonExistentFileReferenced_thenErrorsReturned() {
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
assertTrue(errors.size() == 1 && errorMessages.size() == 3);
}
@Test
- public void testGivenDefinitionFile_whenValidImportStatementExist_thenNoErrorsReturned() throws IOException{
-
- String definitionFileWithValidImports = "/validation.files/definition/definitionFileWithValidImports.yaml";
-
+ public void testGivenDefinitionFile_whenValidImportStatementExist_thenNoErrorsReturned() {
+ final ManifestBuilder manifestBuilder = getPnfManifestSampleBuilder();
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
handler.addFile(SAMPLE_SOURCE, "".getBytes());
- handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml", ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(definitionFileWithValidImports));
+ manifestBuilder.withSource(SAMPLE_SOURCE);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml", getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml");
+
+ final String definitionFileWithValidImports = "/validation.files/definition/definitionFileWithValidImports.yaml";
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(definitionFileWithValidImports));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertTrue(errors.size() == 0);
}
@Test
- public void testGivenDefinitionFile_whenMultipleDefinitionsImportStatementExist_thenNoErrorsReturned() throws IOException{
-
- byte [] sampleDefinitionFile1 = ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile1.yaml");
- byte [] sampleDefinitionFile2 = ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile2.yaml");
- byte [] sampleDefinitionFile3 = ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile3.yaml");
+ public void testGivenDefinitionFile_whenMultipleDefinitionsImportStatementExist_thenNoErrorsReturned() {
+ 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_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
handler.addFile(SAMPLE_SOURCE, "".getBytes());
+ manifestBuilder.withSource(SAMPLE_SOURCE);
+
+ final byte [] sampleDefinitionFile1 = getResourceBytes("/validation.files/definition/sampleDefinitionFile1.yaml");
handler.addFile(TOSCA_DEFINITION_FILEPATH, sampleDefinitionFile1);
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
+ final byte [] sampleDefinitionFile2 = getResourceBytes("/validation.files/definition/sampleDefinitionFile2.yaml");
handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml", sampleDefinitionFile2);
+ manifestBuilder.withSource("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml");
+
+ final byte [] sampleDefinitionFile3 = getResourceBytes("/validation.files/definition/sampleDefinitionFile3.yaml");
handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_2_types.yaml", sampleDefinitionFile3);
+ manifestBuilder.withSource("Definitions/etsi_nfv_sol001_pnfd_2_5_2_types.yaml");
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertTrue(errors.size() == 0);
}
@Test
- public void testGivenDefinitionFile_whenInvalidImportStatementExist_thenErrorIsReturned() throws IOException{
-
- String definitionFileWithInvalidImports = "/validation.files/definition/definitionFileWithInvalidImport.yaml";
+ public void testGivenDefinitionFile_whenInvalidImportStatementExist_thenErrorIsReturned() {
+ 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_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
handler.addFile(SAMPLE_SOURCE, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(definitionFileWithInvalidImports));
+ manifestBuilder.withSource(SAMPLE_SOURCE);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(errors.size() == 1 && errorMessages.size() == 1);
+ final String definitionFileWithInvalidImports = "/validation.files/definition/definitionFileWithInvalidImport.yaml";
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(definitionFileWithInvalidImports));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ String manifest = manifestBuilder.build();
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifest.getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ assertExpectedErrors("", errors, 1);
}
+ /**
+ * Manifest referenced import file missing
+ */
@Test
- public void testGivenDefinitionFile_whenReferencedImportDoesNotExist_thenErrorIsReturned() throws IOException{
+ public void testGivenDefinitionFile_whenReferencedImportDoesNotExist_thenErrorIsReturned() {
+ 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_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
handler.addFile(SAMPLE_SOURCE, "".getBytes());
+ manifestBuilder.withSource(SAMPLE_SOURCE);
+
handler.addFile("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml", "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource("/validation.files/definition/sampleDefinitionFile2.yaml"));
+ manifestBuilder.withSource("Definitions/etsi_nfv_sol001_pnfd_2_5_1_types.yaml");
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(errors.size() == 1 && errorMessages.size() == 1);
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes("/validation.files/definition/sampleDefinitionFile2.yaml"));
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ assertExpectedErrors("Manifest referenced import file missing", errors, 1);
}
+ /**
+ * Reference with invalid YAML format.
+ */
@Test
- public void testGivenDefinitionFile_withInvalidYAML_thenErrorIsReturned() throws IOException{
-
- String definitionFileWithInvalidYAML = "/validation.files/definition/invalidDefinitionFile.yaml";
+ public void testGivenDefinitionFile_withInvalidYAML_thenErrorIsReturned() {
+ 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_CHANGELOG_FILEPATH, "".getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_MANIFEST_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
handler.addFile(SAMPLE_SOURCE, "".getBytes());
+ manifestBuilder.withSource(SAMPLE_SOURCE);
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(definitionFileWithInvalidYAML));
+ final String definitionFileWithInvalidYAML = "/validation.files/definition/invalidDefinitionFile.yaml";
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(definitionFileWithInvalidYAML));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(errors.size() == 1 && errorMessages.size() == 1);
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ assertExpectedErrors("Reference with invalid YAML format", errors, 1);
}
@Test
- public void testGivenManifestFile_withValidSourceAndNonManoSources_thenNoErrorIsReturned() throws IOException{
-
- String nonManoSource = "Artifacts/Deployment/Measurements/PM_Dictionary.yaml";
+ public void testGivenManifestFile_withValidSourceAndNonManoSources_thenNoErrorIsReturned() {
+ final ManifestBuilder manifestBuilder = getPnfManifestSampleBuilder();
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/validManifest.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
handler.addFile(SAMPLE_SOURCE, "".getBytes());
- handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(SAMPLE_SOURCE);
+
+ handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(SAMPLE_DEFINITION_IMPORT_FILE_PATH);
+
+ final String nonManoSource = "Artifacts/Deployment/Measurements/PM_Dictionary.yaml";
handler.addFile(nonManoSource, "".getBytes());
+ manifestBuilder.withNonManoArtifact("onap_pm_events", nonManoSource);
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertTrue(errors.size() == 0);
}
+ /**
+ * Manifest with non existent source files should return error.
+ */
@Test
- public void testGivenManifestFile_withNonExistentSourceFile_thenErrorIsReturned() throws IOException{
- String nonManoSource = "Artifacts/Deployment/Measurements/PM_Dictionary.yaml";
+ public void testGivenManifestFile_withNonExistentSourceFile_thenErrorIsReturned() {
+ final ManifestBuilder manifestBuilder = getPnfManifestSampleBuilder();
+ //non existent reference
+ manifestBuilder.withSource("Artifacts/Deployment/Events/RadioNode_pnf_v1.yaml");
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/validManifest.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
+ manifestBuilder.withSource(SAMPLE_DEFINITION_IMPORT_FILE_PATH);
+
+ String nonManoSource = "Artifacts/Deployment/Measurements/PM_Dictionary.yaml";
handler.addFile(nonManoSource, "".getBytes());
+ manifestBuilder.withNonManoArtifact("onap_pm_events", nonManoSource);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(errors.size() == 1 && errorMessages.size() == 1);
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ assertExpectedErrors("Manifest with non existent source files", errors, 1);
}
+ /**
+ * Tests the validation for a TOSCA Manifest with invalid data.
+ */
@Test
- public void testGivenManifestFile_withInvalidData_thenErrorIsReturned() throws IOException{
-
+ public void testGivenManifestFile_withInvalidData_thenErrorIsReturned() {
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/invalidManifest.mf"));
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, getResourceBytes("/validation.files/manifest/invalidManifest.mf"));
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(errors.size() == 1 && errorMessages.size() == 1);
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ assertExpectedErrors("TOSCA manifest with invalid data", errors, 1);
}
@Test
- public void testGivenManifestAndDefinitionFile_withSameNames_thenNoErrorReturned() throws IOException {
+ public void testGivenManifestAndDefinitionFile_withSameNames_thenNoErrorReturned() {
+ final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder();
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
+ manifestBuilder.withSource(SAMPLE_DEFINITION_IMPORT_FILE_PATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertTrue(errors.size() == 0);
}
+ /**
+ * Main TOSCA definitions file and Manifest file with different name should return error.
+ */
@Test
- public void testGivenManifestAndMainDefinitionFile_withDifferentNames_thenErrorIsReturned() throws IOException {
+ public void testGivenManifestAndMainDefinitionFile_withDifferentNames_thenErrorIsReturned() {
metaFile =
"TOSCA-Meta-File-Version: 1.0\n"+
"CSAR-Version: 1.1\n"+
"Created-by: Vendor\n"+
- TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.yaml\n"+
- TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE +"Definitions/MainServiceTemplate2.mf\n"+
- TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE +"Artifacts/changeLog.text\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";
+
+ final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder();
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile("Definitions/MainServiceTemplate2.mf", ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
+ manifestBuilder.withSource(SAMPLE_DEFINITION_IMPORT_FILE_PATH);
+
+ manifestBuilder.withSource("Definitions/MainServiceTemplate2.mf");
+ handler.addFile("Definitions/MainServiceTemplate2.mf", manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Main TOSCA definitions file and Manifest file with different name should return error",
errors, 1);
}
@Test
- public void testGivenManifestFile_withDifferentExtension_thenErrorIsReturned() throws IOException {
+ public void testGivenManifestFile_withDifferentExtension_thenErrorIsReturned() {
metaFile =
"TOSCA-Meta-File-Version: 1.0\n"+
"CSAR-Version: 1.1\n"+
"Created-by: Vendor\n"+
"Entry-Definitions: Definitions/MainServiceTemplate.yaml\n"+
- TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE + "Definitions/MainServiceTemplate.txt\n"+
- TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE + "Artifacts/changeLog.text\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";
+
+ final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder();
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile("Definitions/MainServiceTemplate.txt", ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
handler.addFile(SAMPLE_DEFINITION_IMPORT_FILE_PATH, "".getBytes());
+ manifestBuilder.withSource(SAMPLE_DEFINITION_IMPORT_FILE_PATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ manifestBuilder.withSource("Definitions/MainServiceTemplate.txt");
+ handler.addFile("Definitions/MainServiceTemplate.txt", manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest file with different extension than .mf should return error",
errors, 1);
}
@Test
- public void testGivenManifestFile_withValidVnfMetadata_thenNoErrorsReturned() throws IOException{
+ public void testGivenManifestFile_withValidVnfMetadata_thenNoErrorsReturned() {
+ final ManifestBuilder manifestBuilder = getVnfManifestSampleBuilder();
+
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest with valid vnf mandatory values should not return any errors", errors, 0);
}
@Test
- public void testGivenManifestFile_withValidPnfMetadata_thenNoErrorsReturned() throws IOException {
+ public void testGivenManifestFile_withValidPnfMetadata_thenNoErrorsReturned() {
+ final ManifestBuilder manifestBuilder = getPnfManifestSampleBuilder();
+
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest2.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ manifestBuilder.withSignedSource(TOSCA_DEFINITION_FILEPATH
+ , "SHA-abc", "09e5a788acb180162c51679ae4c998039fa6644505db2415e35107d1ee213943");
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest with valid pnf mandatory values should not return any errors", errors, 0);
}
+ /**
+ * Manifest with mixed metadata should return error.
+ */
@Test
- public void testGivenManifestFile_withMetadataContainingMixedPnfVnfMetadata_thenErrorIsReturned() throws IOException {
+ 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");
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest with mixed metadata should return error", errors, 1);
}
@Test
- public void testGivenManifestFile_withMetadataMissingPnfOrVnfMandatoryEntries_thenErrorIsReturned() throws IOException{
+ public void testGivenManifestFile_withMetadataMissingPnfOrVnfMandatoryEntries_thenErrorIsReturned() {
+ final ManifestBuilder manifestBuilder = new ManifestBuilder()
+ .withMetaData("invalid_product_name", "RadioNode")
+ .withMetaData("invalid_provider_id", "Bilal Iqbal")
+ .withMetaData("invalid_package_version", "1.0")
+ .withMetaData("invalid_release_date_time", "2019-12-14T11:25:00+00:00");
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata2.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest with missing vnf or pnf mandatory entries should return error", errors, 1);
}
@Test
- public void testGivenManifestFile_withMetadataMissingMandatoryPnfEntries_thenErrorIsReturned() throws IOException{
+ 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");
+
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata4.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
+
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest with metadata missing pnf mandatory entries should return error", errors, 3);
}
@Test
- public void testGivenManifestFile_withMetadataMissingMandatoryVnfEntries_thenErrorIsReturned() throws IOException{
+ public void testGivenManifestFile_withMetadataMissingMandatoryVnfEntries_thenErrorIsReturned() {
+ final ManifestBuilder manifestBuilder = new ManifestBuilder();
+
+ manifestBuilder.withMetaData(VNF_PRODUCT_NAME, "RadioNode");
+
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata5.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest with metadata missing vnf mandatory entries should return error", errors, 4);
}
+ /**
+ * Manifest with more than 4 metadata entries should return error.
+ */
@Test
- public void testGivenManifestFile_withMetadataEntriesExceedingTheLimit_thenErrorIsReturned() throws IOException{
+ 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");
+
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/manifestInvalidMetadata3.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, Collections.emptyList());
assertExpectedErrors("Manifest with more than 4 metadata entries should return error", errors, 2);
}
@Test
- public void testGivenManifestFile_withPnfMetadataAndVfEntries_thenErrorIsReturned() throws IOException {
-
- List<String> folderList = new ArrayList<>();
- folderList.add("Files/Certificates/");
+ public void testGivenManifestFile_withPnfMetadataAndVfEntries_thenErrorIsReturned() {
+ final ManifestBuilder manifestBuilder = getPnfManifestSampleBuilder();
metaFile = metaFile +
- TOSCA_META_ETSI_ENTRY_TESTS + SEPERATOR_MF_ATTRIBUTE + "Files/Tests\n" +
- TOSCA_META_ETSI_ENTRY_LICENSES + SEPERATOR_MF_ATTRIBUTE + "Files/Licenses\n" +
- TOSCA_META_ETSI_ENTRY_CERTIFICATE + SEPERATOR_MF_ATTRIBUTE + "Files/Certificates";
+ 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";
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
- handler.addFile(TOSCA_MANIFEST_FILEPATH, ValidatorUtil.getFileResource("/validation.files/manifest/sampleManifest2.mf"));
+ manifestBuilder.withSource(TOSCA_META_PATH_FILE_NAME);
+
handler.addFile(TOSCA_CHANGELOG_FILEPATH, "".getBytes());
- handler.addFile(TOSCA_DEFINITION_FILEPATH, ValidatorUtil.getFileResource(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_CHANGELOG_FILEPATH);
+
+ handler.addFile(TOSCA_DEFINITION_FILEPATH, getResourceBytes(SAMPLE_DEFINITION_FILE_PATH));
+ manifestBuilder.withSource(TOSCA_DEFINITION_FILEPATH);
- Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, folderList);
+ manifestBuilder.withSource(TOSCA_MANIFEST_FILEPATH);
+ handler.addFile(TOSCA_MANIFEST_FILEPATH, manifestBuilder.build().getBytes(StandardCharsets.UTF_8));
+
+ final List<String> folderList = new ArrayList<>();
+ folderList.add("Files/Certificates/");
+ final Map<String, List<ErrorMessage>> errors = sol004MetaDirectoryValidator.validateContent(handler, folderList);
assertExpectedErrors("Tosca.meta should not have entries applicable only to VF", errors, 2);
}
- private void assertExpectedErrors( String testCase, Map<String, List<ErrorMessage>> errors, int expectedErrors){
- if(expectedErrors > 0){
- List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
- assertTrue(testCase, errorMessages.size() == expectedErrors);
- }else{
- assertTrue(testCase,errors.size() == expectedErrors);
+ private void assertExpectedErrors(final String testCase, final Map<String, List<ErrorMessage>> errors, final int expectedErrors){
+ final List<ErrorMessage> errorMessages = errors.get(SdcCommon.UPLOAD_FILE);
+ printErrorMessages(errorMessages);
+ if (expectedErrors > 0) {
+ assertEquals(testCase, errorMessages.size(), expectedErrors);
+ } else {
+ assertEquals(testCase, errors.size(), expectedErrors);
}
}
+
+ private void printErrorMessages(final List<ErrorMessage> errorMessages) {
+ if (CollectionUtils.isNotEmpty(errorMessages)) {
+ errorMessages.forEach(errorMessage -> {
+ System.out.println(String.format("%s: %s", errorMessage.getLevel(), errorMessage.getMessage()));
+ });
+ }
+ }
+
+ private byte[] getResourceBytes(final String resourcePath) {
+ try {
+ return ValidatorUtil.getFileResource(resourcePath);
+ } catch (final IOException e) {
+ fail(String.format("Could not load resource '%s'", resourcePath));
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ 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");
+ }
+
+ 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");
+ }
} \ No newline at end of file
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 3f42c5715c..5a43ab5e71 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
@@ -7,7 +7,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import static org.junit.Assert.assertEquals;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
+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;
@@ -54,7 +54,7 @@ public class ValidatorFactoryTest {
@Test
public void testGivenNonSOL004MetaDirectoryCompliantMetaFile_thenONAPCSARValidatorIsReturned() throws IOException{
metaFile = metaFile +
- TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE + TOSCA_DEFINITION_FILEPATH;
+ TOSCA_META_ENTRY_DEFINITIONS + SEPARATOR_MF_ATTRIBUTE + TOSCA_DEFINITION_FILEPATH;
handler.addFile(TOSCA_META_PATH_FILE_NAME, metaFile.getBytes(StandardCharsets.UTF_8));
assertEquals(ONAPCsarValidator.class, ValidatorFactory.getValidator(handler).getClass());
@@ -64,9 +64,9 @@ public class ValidatorFactoryTest {
public void testGivenSOL004MetaDirectoryCompliantMetafile_thenONAPCsarValidatorIsReturned() throws IOException{
metaFile = metaFile +
- TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE + TOSCA_DEFINITION_FILEPATH + "\n"
- + TOSCA_META_ETSI_ENTRY_MANIFEST + SEPERATOR_MF_ATTRIBUTE + TOSCA_MANIFEST_FILEPATH + "\n"
- + TOSCA_META_ETSI_ENTRY_CHANGE_LOG + SEPERATOR_MF_ATTRIBUTE + TOSCA_CHANGELOG_FILEPATH + "\n";
+ 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";
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/impl/orchestration/csar/validation/ValidatorUtil.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorUtil.java
index 91e3807a79..fdde36c935 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorUtil.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ValidatorUtil.java
@@ -11,12 +11,27 @@ import java.io.InputStream;
class ValidatorUtil {
- private ValidatorUtil(){
+ private ValidatorUtil() {
}
- public static byte[] getFileResource(String filePath) throws IOException{
- InputStream inputStream = ClassLoader.class.getClass().getResourceAsStream(filePath);
- return IOUtils.toByteArray(inputStream);
+ /**
+ * Reads a file and coverts it to a byte array.
+ *
+ * @param filePath The file path
+ * @return
+ * The file byte array
+ * @throws IOException
+ * When the file was not found or the input stream could not be opened
+ */
+ public static byte[] getFileResource(final String filePath) throws IOException {
+ try(final InputStream inputStream = ClassLoader.class.getResourceAsStream(filePath)) {
+ if (inputStream == null) {
+ throw new IOException(String.format("Could not find the resource on path \"%s\"", filePath));
+ }
+ return IOUtils.toByteArray(inputStream);
+ } catch (final IOException ex) {
+ throw new IOException(String.format("Could not open the input stream for resource on path \"%s\"", filePath), ex);
+ }
}
}
diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java
index 7b8fda8c49..578016657b 100644
--- a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java
+++ b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java
@@ -98,6 +98,7 @@ public enum Messages {
MISSING_NESTED_FILE("Missing nested file - %s"),
MISSING_ARTIFACT("Missing artifact - %s"),
MISSING_MANIFEST_SOURCE("%s artifact %s referenced in manifest file does not exist"),
+ MISSING_MANIFEST_REFERENCE("'%s' artifact is not being referenced in manifest file"),
MISSING_METADATA_FILES("%s file referenced in TOSCA.meta does not exist"),
WRONG_HEAT_FILE_EXTENSION("Wrong HEAT file extension - %s"),
WRONG_ENV_FILE_EXTENSION("Wrong ENV file extension - %s"),
diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/AbstractOnboardingManifest.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/AbstractOnboardingManifest.java
index 00eb46183a..a0c346c677 100644
--- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/AbstractOnboardingManifest.java
+++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/AbstractOnboardingManifest.java
@@ -39,7 +39,7 @@ import java.util.Optional;
import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
import static org.openecomp.sdc.tosca.csar.CSARConstants.MANIFEST_PNF_METADATA;
import static org.openecomp.sdc.tosca.csar.CSARConstants.METADATA_MF_ATTRIBUTE;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
+import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPARATOR_MF_ATTRIBUTE;
abstract class AbstractOnboardingManifest implements Manifest{
@@ -118,7 +118,7 @@ import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
}
protected boolean isMetadata(String line) {
- if(line.trim().equals(METADATA_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE)){
+ if(line.trim().equals(METADATA_MF_ATTRIBUTE + SEPARATOR_MF_ATTRIBUTE)){
return true;
}
reportError(line);
diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/CSARConstants.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/CSARConstants.java
index d7dd3d450f..123bddaa1d 100644
--- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/CSARConstants.java
+++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/CSARConstants.java
@@ -17,9 +17,10 @@
package org.openecomp.sdc.tosca.csar;
+import static com.google.common.collect.ImmutableSet.of;
+
import com.google.common.collect.ImmutableSet;
-import static com.google.common.collect.ImmutableSet.of;
public class CSARConstants {
public static final ImmutableSet<String> ELIGBLE_FOLDERS = of("Artifacts/","Definitions/",
@@ -39,10 +40,21 @@ public class CSARConstants {
public static final String TOSCA_META_ETSI_ENTRY_CERTIFICATE = "ETSI-Entry-Certificate";
public static final ImmutableSet<String> ELIGIBLE_FILES =
of(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME,MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME);
+
+ public static final String PNFD_PROVIDER = "pnfd_provider";
+ public static final String PNFD_NAME = "pnfd_name";
+ public static final String PNFD_RELEASE_DATE_TIME = "pnfd_release_date_time";
+ public static final String PNFD_ARCHIVE_VERSION = "pnfd_archive_version";
public static final ImmutableSet<String> MANIFEST_PNF_METADATA =
- of("pnfd_provider", "pnfd_name", "pnfd_release_date_time", "pnfd_archive_version");
+ of(PNFD_PROVIDER, PNFD_NAME, PNFD_RELEASE_DATE_TIME, PNFD_ARCHIVE_VERSION);
+
+ public static final String VNF_PROVIDER_ID = "vnf_provider_id";
+ public static final String VNF_PRODUCT_NAME = "vnf_product_name";
+ public static final String VNF_RELEASE_DATE_TIME = "vnf_release_date_time";
+ public static final String VNF_PACKAGE_VERSION = "vnf_package_version";
public static final ImmutableSet<String> MANIFEST_VNF_METADATA =
- of("vnf_provider_id", "vnf_product_name", "vnf_release_date_time", "vnf_package_version");
+ of(VNF_PROVIDER_ID, VNF_PRODUCT_NAME, VNF_RELEASE_DATE_TIME, VNF_PACKAGE_VERSION);
+
public static final int MANIFEST_METADATA_LIMIT = 4;
public static final String METADATA_MF_ATTRIBUTE = "metadata";
public static final String SOURCE_MF_ATTRIBUTE = "Source";
@@ -50,7 +62,7 @@ public class CSARConstants {
public static final String HASH_MF_ATTRIBUTE = "Hash";
public static final String CMS_BEGIN = "----BEGIN CMS-----";
public static final String CMD_END = "----END CMS-----";
- public static final String SEPERATOR_MF_ATTRIBUTE = ":";
+ public static final String SEPARATOR_MF_ATTRIBUTE = ":";
public static final String NON_MANO_MF_ATTRIBUTE = "non_mano_artifact_sets";
public static final String TOSCA_META_ORIG_PATH_FILE_NAME="TOSCA-Metadata/TOSCA.meta.original";
diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ONAPManifestOnboarding.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ONAPManifestOnboarding.java
index 8e56669c62..2c4cc3a81f 100644
--- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ONAPManifestOnboarding.java
+++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ONAPManifestOnboarding.java
@@ -24,7 +24,7 @@ import com.google.common.collect.ImmutableList;
import org.openecomp.sdc.common.errors.Messages;
import java.util.Iterator;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
+import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPARATOR_MF_ATTRIBUTE;
import static org.openecomp.sdc.tosca.csar.CSARConstants.SOURCE_MF_ATTRIBUTE;
public class ONAPManifestOnboarding extends AbstractOnboardingManifest implements Manifest {
@@ -46,16 +46,16 @@ public class ONAPManifestOnboarding extends AbstractOnboardingManifest implement
if(isEmptyLine(iterator, line)) {
return;
}
- String[] metaSplit = line.split(SEPERATOR_MF_ATTRIBUTE);
+ String[] metaSplit = line.split(SEPARATOR_MF_ATTRIBUTE);
if (isInvalidLine(line, metaSplit)) {
return;
}
if (!metaSplit[0].equals(SOURCE_MF_ATTRIBUTE)){
- String value = line.substring((metaSplit[0] + SEPERATOR_MF_ATTRIBUTE).length()).trim();
+ String value = line.substring((metaSplit[0] + SEPARATOR_MF_ATTRIBUTE).length()).trim();
metadata.put(metaSplit[0].trim(),value.trim());
processMetadata(iterator);
}else if(metaSplit[0].startsWith(SOURCE_MF_ATTRIBUTE)){
- String value = line.substring((metaSplit[0] + SEPERATOR_MF_ATTRIBUTE).length()).trim();
+ String value = line.substring((metaSplit[0] + SEPARATOR_MF_ATTRIBUTE).length()).trim();
sources.add(value);
processMetadata(iterator);
}
diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java
index 6dd6979751..8d603cccb3 100644
--- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java
+++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java
@@ -36,7 +36,7 @@ import java.util.List;
import java.util.Map;
import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
+import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPARATOR_MF_ATTRIBUTE;
import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS;
public class OnboardingToscaMetadata implements ToscaMetadata{
@@ -66,7 +66,7 @@ public class OnboardingToscaMetadata implements ToscaMetadata{
if (line.isEmpty()) {
return meta;
}
- String[] entry = line.split(SEPERATOR_MF_ATTRIBUTE);
+ String[] entry = line.split(SEPARATOR_MF_ATTRIBUTE);
//No empty keys allowed, no empty values allowed
if (entry.length < 2 || entry[0].isEmpty()) {
meta.errors.add(new ErrorMessage(ErrorLevel.ERROR, getErrorWithParameters(
diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/SOL004ManifestOnboarding.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/SOL004ManifestOnboarding.java
index 1ee1c1b1ae..b5b3d9cdce 100644
--- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/SOL004ManifestOnboarding.java
+++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/SOL004ManifestOnboarding.java
@@ -29,7 +29,7 @@ import static org.openecomp.sdc.tosca.csar.CSARConstants.CMD_END;
import static org.openecomp.sdc.tosca.csar.CSARConstants.CMS_BEGIN;
import static org.openecomp.sdc.tosca.csar.CSARConstants.HASH_MF_ATTRIBUTE;
import static org.openecomp.sdc.tosca.csar.CSARConstants.NON_MANO_MF_ATTRIBUTE;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE;
+import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPARATOR_MF_ATTRIBUTE;
import static org.openecomp.sdc.tosca.csar.CSARConstants.SOURCE_MF_ATTRIBUTE;
public class SOL004ManifestOnboarding extends AbstractOnboardingManifest {
@@ -43,12 +43,12 @@ public class SOL004ManifestOnboarding extends AbstractOnboardingManifest {
if(isEmptyLine(iterator, line)){
return;
}
- String[] metaSplit = line.split(SEPERATOR_MF_ATTRIBUTE);
+ String[] metaSplit = line.split(SEPARATOR_MF_ATTRIBUTE);
if (isInvalidLine(line, metaSplit)) {
return;
}
if (!metaSplit[0].equals(SOURCE_MF_ATTRIBUTE) && !metaSplit[0].equals(NON_MANO_MF_ATTRIBUTE)){
- String value = line.substring((metaSplit[0] + SEPERATOR_MF_ATTRIBUTE).length()).trim();
+ String value = line.substring((metaSplit[0] + SEPARATOR_MF_ATTRIBUTE).length()).trim();
metadata.put(metaSplit[0].trim(),value.trim());
processMetadata(iterator);
} else {
@@ -61,11 +61,11 @@ public class SOL004ManifestOnboarding extends AbstractOnboardingManifest {
if(iterator.hasNext()){
processSourcesAndNonManoSources(iterator, iterator.next());
}
- } else if(prevLine.startsWith(SOURCE_MF_ATTRIBUTE+SEPERATOR_MF_ATTRIBUTE)){
+ } else if(prevLine.startsWith(SOURCE_MF_ATTRIBUTE+ SEPARATOR_MF_ATTRIBUTE)){
processSource(iterator, prevLine);
}
- else if(prevLine.startsWith(ALGORITHM_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE) ||
- prevLine.startsWith(HASH_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE)){
+ else if(prevLine.startsWith(ALGORITHM_MF_ATTRIBUTE + SEPARATOR_MF_ATTRIBUTE) ||
+ prevLine.startsWith(HASH_MF_ATTRIBUTE + SEPARATOR_MF_ATTRIBUTE)){
processSourcesAndNonManoSources(iterator, iterator.next());
}else if(prevLine.startsWith(CMS_BEGIN)){
String line = iterator.next();
@@ -74,7 +74,7 @@ public class SOL004ManifestOnboarding extends AbstractOnboardingManifest {
}
processSourcesAndNonManoSources(iterator, iterator.next());
}
- else if(prevLine.startsWith(NON_MANO_MF_ATTRIBUTE+SEPERATOR_MF_ATTRIBUTE)){
+ else if(prevLine.startsWith(NON_MANO_MF_ATTRIBUTE+ SEPARATOR_MF_ATTRIBUTE)){
//non mano should be the last bit in manifest file,
// all sources after non mano will be placed to the last non mano
// key, if any other structure met error reported
@@ -85,7 +85,7 @@ public class SOL004ManifestOnboarding extends AbstractOnboardingManifest {
}
private void processSource(Iterator<String> iterator, String prevLine) {
- String value = prevLine.substring((SOURCE_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE).length()).trim();
+ String value = prevLine.substring((SOURCE_MF_ATTRIBUTE + SEPARATOR_MF_ATTRIBUTE).length()).trim();
sources.add(value);
if(iterator.hasNext()) {
processSourcesAndNonManoSources(iterator, iterator.next());
@@ -93,16 +93,16 @@ public class SOL004ManifestOnboarding extends AbstractOnboardingManifest {
}
private void processNonManoInputs(Iterator<String> iterator, String prevLine) {
- if(prevLine.trim().equals(SOURCE_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE)){
+ if(prevLine.trim().equals(SOURCE_MF_ATTRIBUTE + SEPARATOR_MF_ATTRIBUTE)){
reportError(prevLine);
return;
}
- if(!prevLine.contains(SEPERATOR_MF_ATTRIBUTE)){
+ if(!prevLine.contains(SEPARATOR_MF_ATTRIBUTE)){
reportError(prevLine);
return;
}
- String[] metaSplit = prevLine.trim().split(SEPERATOR_MF_ATTRIBUTE);
+ String[] metaSplit = prevLine.trim().split(SEPARATOR_MF_ATTRIBUTE);
if (metaSplit.length > 1){
reportError(prevLine);
return;
@@ -122,8 +122,8 @@ public class SOL004ManifestOnboarding extends AbstractOnboardingManifest {
String line = iterator.next();
if(line.isEmpty()){
processNonManoSource(iterator, key, sources);
- }else if(line.trim().startsWith(SOURCE_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE)){
- String value = line.replace(SOURCE_MF_ATTRIBUTE + SEPERATOR_MF_ATTRIBUTE, "").trim();
+ }else if(line.trim().startsWith(SOURCE_MF_ATTRIBUTE + SEPARATOR_MF_ATTRIBUTE)){
+ String value = line.replace(SOURCE_MF_ATTRIBUTE + SEPARATOR_MF_ATTRIBUTE, "").trim();
sources.add(value);
processNonManoSource(iterator, key, sources);
}else {