From 167aea9954cfe9e6528671dd37445d4fc3378a97 Mon Sep 17 00:00:00 2001 From: Bogumil Zebek Date: Tue, 17 Sep 2019 10:24:53 +0200 Subject: Non mano artifacts Change-Id: I4d7eefc999f9cd6cb5255b764da3c5ae7e84f0af Issue-ID: VNFSDK-476 Signed-off-by: Zebek Bogumil --- .../cvc/csar/cc/sol004/VTPValidateCSARR130206.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'csarvalidation/src/main/java/org/onap') diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR130206.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR130206.java index 2d85e35..e36314a 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR130206.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR130206.java @@ -38,7 +38,9 @@ import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.security.NoSuchAlgorithmException; +import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -102,6 +104,13 @@ public class VTPValidateCSARR130206 extends VTPValidateCSARBase { } } + public static class CSARErrorContentMismatch extends CSARArchive.CSARError { + CSARErrorContentMismatch() { + super("0x4008"); + this.message = "Mismatch between contents of non-mano-artifact-sets and source files of the package"; + } + } + @Override protected void validateCSAR(CSARArchive csar) throws OnapCommandException { @@ -126,12 +135,37 @@ public class VTPValidateCSARR130206 extends VTPValidateCSARBase { validateSecurityStructure(csar, csarRootDirectory); validateSources(csarRootDirectory, manifest); + final Map>> nonMano = manifest.getNonMano(); + final List sources = manifest.getSources(); + + validateNonManoCohesionWithSources(nonMano, sources); + final File manifestMfFile = csar.getManifestMfFile(); if (manifestMfFile != null) { validateFileSignature(manifestMfFile); } } + private void validateNonManoCohesionWithSources(final Map>> nonMano, final List sources) { + + final Collection>> values = nonMano.values(); + final List nonManoSourcePaths = values.stream() + .map(Map::values) + .flatMap(Collection::stream) + .flatMap(List::stream) + .filter(it -> !it.isEmpty()) + .collect(Collectors.toList()); + + final List sourcePaths = sources.stream() + .map(SourcesParser.Source::getValue) + .collect(Collectors.toList()); + + if(!sourcePaths.containsAll(nonManoSourcePaths)){ + this.errors.add(new CSARErrorContentMismatch()); + } + + } + private void validateFileSignature(File manifestMfFile) { final boolean isValid = this.manifestFileSignatureValidator.isValid(manifestMfFile); if (!isValid) { -- cgit 1.2.3-korg