summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--csarvalidation/src/main/java/org/onap/cvc/csar/ZipFileContentValidator.java52
-rw-r--r--csarvalidation/src/main/java/org/onap/cvc/csar/cc/VTPValidateCSARBase.java10
-rw-r--r--csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java29
-rw-r--r--csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java75
-rw-r--r--csarvalidation/src/test/java/org/onap/cvc/csar/PnfCSARArchiveTest.java10
-rw-r--r--csarvalidation/src/test/java/org/onap/cvc/csar/ZipFileContentValidatorTest.java134
-rw-r--r--csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092IntegrationTest.java6
-rw-r--r--csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965IntegrationTest.java37
-rw-r--r--csarvalidation/src/test/resources/pnf/README.txt6
-rw-r--r--csarvalidation/src/test/resources/pnf/dummyPnfv2.csarbin4037 -> 4038 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/noToscaMetaFile.csarbin3621 -> 3622 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csarbin4110 -> 4111 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csarbin4111 -> 4112 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csarbin4117 -> 4118 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csarbin4110 -> 4111 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r146092/missingFieldsInNonManoArtifactManifest.csarbin3965 -> 3964 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r146092/missingNonManoArtifactInManifest.csarbin3950 -> 3949 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r146092/noSourceElementInNonManoArtifactEntryManifest.csarbin4078 -> 4076 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r146092/sourceElementWithUnknownFileInNonManoArtifactEntryManifest.csarbin4086 -> 4086 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r293901/allMandatoryEntriesDefinedInTOSCAMeta.csarbin4117 -> 4116 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r293901/noMandatoryEntriesInTOSCAMeta.csarbin3943 -> 3942 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r57019/allMandatoryEntriesDefinedInMetadataManifest.csarbin4099 -> 4100 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r57019/noMandatoryEntriesInMetadataManifest.csarbin4039 -> 4040 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r787965/broken.zipbin0 -> 1867 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/r787965/signature-and-certificate.zipbin0 -> 4499 bytes
-rw-r--r--csarvalidation/src/test/resources/pnf/signed-package-valid-signature.zipbin3777 -> 23227 bytes
26 files changed, 124 insertions, 235 deletions
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/ZipFileContentValidator.java b/csarvalidation/src/main/java/org/onap/cvc/csar/ZipFileContentValidator.java
deleted file mode 100644
index 801d8cf..0000000
--- a/csarvalidation/src/main/java/org/onap/cvc/csar/ZipFileContentValidator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2019 Nokia
- * <p>
- * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- *
- */
-
-package org.onap.cvc.csar;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ZipFileContentValidator {
-
- public static class CSARErrorCertMissing extends CSARArchive.CSARError {
- CSARErrorCertMissing() {
- super("0x1008");
- this.message = "Missing. Cert file is not available!";
- }
- }
-
- public static class CSARErrorCMSMissing extends CSARArchive.CSARError {
- CSARErrorCMSMissing() {
- super("0x1009");
- this.message = "Missing. CMS file is not available!";
- }
- }
-
- public List<CSARArchive.CSARError> validate(FileArchive.Workspace workspace){
- final ArrayList<CSARArchive.CSARError> retValue = new ArrayList<>();
-
- if(!workspace.getPathToCertFile().isPresent()){
- retValue.add(new CSARErrorCertMissing());
- }
-
- if(!workspace.getPathToCmsFile().isPresent()){
- retValue.add(new CSARErrorCMSMissing());
- }
-
- return retValue;
- }
-}
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/VTPValidateCSARBase.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/VTPValidateCSARBase.java
index eafdbde..6e67df9 100644
--- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/VTPValidateCSARBase.java
+++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/VTPValidateCSARBase.java
@@ -22,9 +22,7 @@ import org.onap.cli.fw.error.OnapCommandExecutionFailed;
import org.onap.cli.fw.input.OnapCommandParameter;
import org.onap.cvc.csar.CSARArchive;
import org.onap.cvc.csar.CSARArchive.CSARError;
-import org.onap.cvc.csar.FileArchive;
import org.onap.cvc.csar.PnfCSARArchive;
-import org.onap.cvc.csar.ZipFileContentValidator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,8 +32,6 @@ import java.util.List;
public abstract class VTPValidateCSARBase extends OnapCommand {
protected static final Logger LOG = LoggerFactory.getLogger(VTPValidateCSARBase.class);
- private final ZipFileContentValidator zipFileContentValidator = new ZipFileContentValidator();
-
protected abstract void validateCSAR(CSARArchive csar) throws Exception;
protected abstract String getVnfReqsNo();
@@ -52,12 +48,6 @@ public abstract class VTPValidateCSARBase extends OnapCommand {
try (CSARArchive csar = isPnf ? new PnfCSARArchive(): new CSARArchive()){
csar.init(path);
-
- FileArchive.Workspace workspace = csar.getWorkspace();
- if(workspace.isZip()) {
- errors.addAll(zipFileContentValidator.validate(workspace));
- }
-
csar.parse();
errors.addAll(csar.getErrors());
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java
index 6150a04..b84dea7 100644
--- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java
+++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java
@@ -31,13 +31,12 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
@OnapCommandSchema(schema = "vtp-validate-csar-r146092.yaml")
public class VTPValidateCSARR146092 extends VTPValidateCSARBase {
private static final int UNKNOWN_LINE_NUMBER = -1;
- private static final String SOURCE_ELEMENT_TAG = "source";
+ private static final String SOURCE_ELEMENT_TAG = "Source";
private static class MissingSourceElementUnderAttributeError extends PnfCSARError {
private MissingSourceElementUnderAttributeError(String attributeName, String fileName) {
@@ -96,7 +95,7 @@ public class VTPValidateCSARR146092 extends VTPValidateCSARBase {
List<String> attributeNames = Arrays.asList(
"onap_ves_events",
"onap_pm_dictionary",
- "onap_yang_module",
+ "onap_yang_modules",
"onap_others"
);
@@ -123,21 +122,23 @@ public class VTPValidateCSARR146092 extends VTPValidateCSARBase {
private void validateSourceElementsUnderAttribute(String attributeName) {
Map<String, List<String>> attributeElements = this.nonMano.get(attributeName);
- List<String> attributeElementNames = attributeElements.keySet().stream()
- .map(String::toLowerCase)
- .collect(Collectors.toList());
+ Set<String> attributeElementNames = attributeElements.keySet();
if (!attributeElementNames.contains(SOURCE_ELEMENT_TAG)) {
this.errors.add(new MissingSourceElementUnderAttributeError(attributeName, this.fileName));
} else {
- for (String pathToFile : attributeElements.get(SOURCE_ELEMENT_TAG)) {
- File fileFromCsar = this.csar.getFileFromCsar(pathToFile);
- if (!fileFromCsar.exists()) {
- this.errors.add(
- new InvalidPathToFileError(attributeName,
- pathToFile, this.fileName)
- );
- }
+ validateThatSourceFileExists(attributeName, attributeElements);
+ }
+ }
+
+ private void validateThatSourceFileExists(String attributeName, Map<String, List<String>> attributeElements) {
+ for (String pathToFile : attributeElements.get(SOURCE_ELEMENT_TAG)) {
+ File fileFromCsar = this.csar.getFileFromCsar(pathToFile);
+ if (!fileFromCsar.exists()) {
+ this.errors.add(
+ new InvalidPathToFileError(attributeName,
+ pathToFile, this.fileName)
+ );
}
}
}
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java
index 621ede0..97efd11 100644
--- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java
+++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java
@@ -36,34 +36,46 @@ public class VTPValidateCSARR787965 extends VTPValidateCSARBase {
private static final Logger LOG = LoggerFactory.getLogger(VTPValidateCSARR787965.class);
- public static class CSARErrorInvalidSignature extends CSARArchive.CSARError {
+ static class CSARErrorInvalidSignature extends CSARArchive.CSARError {
CSARErrorInvalidSignature() {
super("0x3001");
this.message = "Invalid CSAR signature!";
}
}
- @Override
- protected void validateCSAR(CSARArchive csar) throws OnapCommandException {
+ static class CsarFileNotAvailableError extends CSARArchive.CSARError {
+ CsarFileNotAvailableError() {
+ super("0x3002");
+ this.message = "Missing. Csar file is not available!";
+ }
+ }
- try {
- final CmsSignatureValidator securityManager = new CmsSignatureValidator();
+ static class SignatureWithCertificationOnlyWarning extends CSARArchive.CSARError {
+ SignatureWithCertificationOnlyWarning() {
+ super("0x3003");
+ this.message = "Warning. Zip package probably is valid. " +
+ "It contains only signature with certification cms and csar package. " +
+ "Unable to verify csar signature.";
+ }
+ }
- FileArchive.Workspace workspace = csar.getWorkspace();
- final Optional<Path> pathToCsarFile = workspace.getPathToCsarFile();
- final Optional<Path> pathToCertFile = workspace.getPathToCertFile();
- final Optional<Path> pathToCmsFile = workspace.getPathToCmsFile();
- if (workspace.isZip() && pathToCsarFile.isPresent() && pathToCertFile.isPresent() && pathToCmsFile.isPresent()) {
- byte[] csarContent = Files.readAllBytes(pathToCsarFile.get());
- byte[] signature = Files.readAllBytes(pathToCmsFile.get());
- byte[] publicCertification = Files.readAllBytes(pathToCertFile.get());
+ static class BrokenZipPackageError extends CSARArchive.CSARError {
+ BrokenZipPackageError() {
+ super("0x3004");
+ this.message = "Missing. Unable to find certification files.";
+ }
+ }
- if (!securityManager.verifySignedData(signature, publicCertification,csarContent)) {
- this.errors.add(new CSARErrorInvalidSignature());
- }
- }
+ @Override
+ protected void validateCSAR(CSARArchive csar) throws OnapCommandException {
+
+ try {
+ FileArchive.Workspace workspace = csar.getWorkspace();
+ if (workspace.isZip()) {
+ verifyZipStructure(workspace);
+ }
} catch (Exception e) {
LOG.error("Internal VTPValidateCSARR787965 command error", e);
throw new OnapCommandException("0x3000", "Internal VTPValidateCSARR787965 command error. See logs.");
@@ -71,6 +83,35 @@ public class VTPValidateCSARR787965 extends VTPValidateCSARBase {
}
+ private void verifyZipStructure(FileArchive.Workspace workspace) throws Exception {
+ final Optional<Path> pathToCsarFile = workspace.getPathToCsarFile();
+ final Optional<Path> pathToCertFile = workspace.getPathToCertFile();
+ final Optional<Path> pathToCmsFile = workspace.getPathToCmsFile();
+ if(!pathToCsarFile.isPresent()) {
+ this.errors.add(new CsarFileNotAvailableError());
+ } else {
+ if (pathToCertFile.isPresent() && pathToCmsFile.isPresent()) {
+ verifyTwoFileCertification(pathToCsarFile.get(), pathToCertFile.get(), pathToCmsFile.get());
+ } else if (pathToCmsFile.isPresent()) {
+ this.errors.add(new SignatureWithCertificationOnlyWarning());
+ } else {
+ this.errors.add(new BrokenZipPackageError());
+ }
+ }
+ }
+
+ private void verifyTwoFileCertification(Path pathToCsarFile, Path pathToCertFile, Path pathToCmsFile) throws Exception {
+ final CmsSignatureValidator securityManager = new CmsSignatureValidator();
+
+ byte[] csarContent = Files.readAllBytes(pathToCsarFile);
+ byte[] signature = Files.readAllBytes(pathToCmsFile);
+ byte[] publicCertification = Files.readAllBytes(pathToCertFile);
+
+ if (!securityManager.verifySignedData(signature, publicCertification,csarContent)) {
+ this.errors.add(new CSARErrorInvalidSignature());
+ }
+ }
+
@Override
protected String getVnfReqsNo() {
return "R787965";
diff --git a/csarvalidation/src/test/java/org/onap/cvc/csar/PnfCSARArchiveTest.java b/csarvalidation/src/test/java/org/onap/cvc/csar/PnfCSARArchiveTest.java
index ca85c7a..810ef0f 100644
--- a/csarvalidation/src/test/java/org/onap/cvc/csar/PnfCSARArchiveTest.java
+++ b/csarvalidation/src/test/java/org/onap/cvc/csar/PnfCSARArchiveTest.java
@@ -26,6 +26,8 @@ import static org.assertj.core.api.Assertions.assertThat;
public class PnfCSARArchiveTest {
+ public static final String SOURCE_TAG = "Source";
+
@Test
public void shouldUseDataStoredInManifestMfFileToConfigurePnfCSARArchive() throws Exception {
// given
@@ -61,16 +63,16 @@ public class PnfCSARArchiveTest {
private void verifyThatNonManoArtifactsWereSet(PnfCSARArchive.PnfManifest manifest) {
Map<String, Map<String, List<String>>> nonManoArtifacts = manifest.getNonMano();
- assertThat(nonManoArtifacts.get("onap_ves_events").get("source"))
+ assertThat(nonManoArtifacts.get("onap_ves_events").get(SOURCE_TAG))
.isEqualTo(Lists.newArrayList("Artifacts/Events/VES_registration.yml")
);
- assertThat(nonManoArtifacts.get("onap_pm_dictionary").get("source"))
+ assertThat(nonManoArtifacts.get("onap_pm_dictionary").get(SOURCE_TAG))
.isEqualTo(Lists.newArrayList("Artifacts/Measurements/PM_Dictionary.yaml")
);
- assertThat(nonManoArtifacts.get("onap_yang_module").get("source"))
+ assertThat(nonManoArtifacts.get("onap_yang_modules").get(SOURCE_TAG))
.isEqualTo(Lists.newArrayList("Artifacts/Yang_module/Yang_module.yaml")
);
- assertThat(nonManoArtifacts.get("onap_others").get("source"))
+ assertThat(nonManoArtifacts.get("onap_others").get(SOURCE_TAG))
.isEqualTo(Lists.newArrayList(
"Artifacts/scripts/install.sh",
"Artifacts/Informational/user_guide.txt",
diff --git a/csarvalidation/src/test/java/org/onap/cvc/csar/ZipFileContentValidatorTest.java b/csarvalidation/src/test/java/org/onap/cvc/csar/ZipFileContentValidatorTest.java
deleted file mode 100644
index 7da91f8..0000000
--- a/csarvalidation/src/test/java/org/onap/cvc/csar/ZipFileContentValidatorTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2019 Nokia
- * <p>
- * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
- *
- */
-
-package org.onap.cvc.csar;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.nio.file.Path;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@RunWith(MockitoJUnitRunner.class)
-public class ZipFileContentValidatorTest {
-
- @Mock
- Path rootFolder;
- @Mock
- Path pathToCsarWorkspace;
- @Mock
- Path certFile;
- @Mock
- Path csarFile;
- @Mock
- Path cmsFile;
-
- private ZipFileContentValidator zipFileContentValidator;
-
-
- @Before
- public void setUp(){
- zipFileContentValidator = new ZipFileContentValidator();
- }
-
- @Test
- public void shouldReportThatCertFileAndCmsFileIsNotAvailable() {
- // given
- FileArchive.Workspace workspace = FileArchive.Workspace.forZip(
- rootFolder,
- pathToCsarWorkspace,
- null,
- null,
- null
- );
-
- // when
- List<CSARArchive.CSARError> errors = zipFileContentValidator.validate(workspace);
-
- // then
- assertThat(errors.size()).isEqualTo(2);
- assertThat(errors.stream().map(CSARArchive.CSARError::getMessage).collect(Collectors.toList())).contains(
- "Missing. Cert file is not available!", "Missing. CMS file is not available!"
- );
- }
-
- @Test
- public void shouldReportThatCertFileIsNotAvailable() {
- // given
- FileArchive.Workspace workspace = FileArchive.Workspace.forZip(
- rootFolder,
- pathToCsarWorkspace,
- null,
- cmsFile,
- csarFile
- );
-
- // when
- List<CSARArchive.CSARError> errors = zipFileContentValidator.validate(workspace);
-
- // then
- assertThat(errors.size()).isEqualTo(1);
- assertThat(errors.stream().map(CSARArchive.CSARError::getMessage).collect(Collectors.toList())).contains(
- "Missing. Cert file is not available!"
- );
- }
-
- @Test
- public void shouldReportThatCmsFileIsNotAvailable() {
- // given
- FileArchive.Workspace workspace = FileArchive.Workspace.forZip(
- rootFolder,
- pathToCsarWorkspace,
- certFile,
- null,
- csarFile
- );
-
- // when
- List<CSARArchive.CSARError> errors = zipFileContentValidator.validate(workspace);
-
- // then
- assertThat(errors.size()).isEqualTo(1);
- assertThat(errors.stream().map(CSARArchive.CSARError::getMessage).collect(Collectors.toList())).contains(
- "Missing. CMS file is not available!"
- );
- }
-
- @Test
- public void shouldNotReportAnyErrorWhenAllFilesAreAvailable() {
- // given
- FileArchive.Workspace workspace = FileArchive.Workspace.forZip(
- rootFolder,
- pathToCsarWorkspace,
- certFile,
- cmsFile,
- csarFile
- );
-
- // when
- List<CSARArchive.CSARError> errors = zipFileContentValidator.validate(workspace);
-
- // then
- assertThat(errors.size()).isEqualTo(0);
- }
-} \ No newline at end of file
diff --git a/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092IntegrationTest.java b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092IntegrationTest.java
index ba51882..0e0f35d 100644
--- a/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092IntegrationTest.java
+++ b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092IntegrationTest.java
@@ -69,7 +69,7 @@ public class VTPValidateCSARR146092IntegrationTest {
assertThat(convertToMessagesList(errors)).contains(
"Missing. Entry [onap_ves_events]",
"Missing. Entry [onap_pm_dictionary]",
- "Missing. Entry [onap_yang_module]",
+ "Missing. Entry [onap_yang_modules]",
"Missing. Entry [onap_others]"
);
}
@@ -87,7 +87,7 @@ public class VTPValidateCSARR146092IntegrationTest {
List<CSARArchive.CSARError> errors = testCase.getErrors();
assertThat(errors.size()).isEqualTo(1);
assertThat(convertToMessagesList(errors)).contains(
- "Missing. Entry [source under onap_ves_events]"
+ "Missing. Entry [Source under onap_ves_events]"
);
}
@@ -104,7 +104,7 @@ public class VTPValidateCSARR146092IntegrationTest {
List<CSARArchive.CSARError> errors = testCase.getErrors();
assertThat(errors.size()).isEqualTo(1);
assertThat(convertToMessagesList(errors)).contains(
- "Invalid. Entry [source under onap_ves_events has invalid 'Artifacts/Deployment/Events/RadioNode.yml' path]"
+ "Invalid. Entry [Source under onap_ves_events has invalid 'Artifacts/Deployment/Events/RadioNode.yml' path]"
);
}
diff --git a/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965IntegrationTest.java b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965IntegrationTest.java
index c19fe99..ffbf87e 100644
--- a/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965IntegrationTest.java
+++ b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965IntegrationTest.java
@@ -60,6 +60,42 @@ public class VTPValidateCSARR787965IntegrationTest {
}
@Test
+ public void shouldReportThatZipContainsSignatureWithCertificationFileAndPackageIsProbableValid() throws Exception {
+
+ // given
+ configureTestCase(testCase, "pnf/r787965/signature-and-certificate.zip");
+
+ // when
+ testCase.execute();
+
+ // then
+ List<CSARArchive.CSARError> errors = testCase.getErrors();
+ assertThat(errors.size()).isEqualTo(1);
+ assertThat(convertToMessagesList(errors)).contains(
+ "Warning. Zip package probably is valid. " +
+ "It contains only signature with certification cms and csar package. " +
+ "Unable to verify csar signature."
+ );
+ }
+
+ @Test
+ public void shouldReportThatZipPackageIsBroken() throws Exception {
+
+ // given
+ configureTestCase(testCase, "pnf/r787965/broken.zip");
+
+ // when
+ testCase.execute();
+
+ // then
+ List<CSARArchive.CSARError> errors = testCase.getErrors();
+ assertThat(errors.size()).isEqualTo(1);
+ assertThat(convertToMessagesList(errors)).contains(
+ "Missing. Unable to find certification files."
+ );
+ }
+
+ @Test
public void shouldDoNotReportAnyErrorWhenPackageHasValidSignature() throws Exception {
// given
@@ -73,5 +109,4 @@ public class VTPValidateCSARR787965IntegrationTest {
assertThat(errors.size()).isEqualTo(0);
}
-
} \ No newline at end of file
diff --git a/csarvalidation/src/test/resources/pnf/README.txt b/csarvalidation/src/test/resources/pnf/README.txt
new file mode 100644
index 0000000..8984d6f
--- /dev/null
+++ b/csarvalidation/src/test/resources/pnf/README.txt
@@ -0,0 +1,6 @@
+How to sign CSAR file
+---------------------
+openssl req -new -nodes -x509 -keyout root-private-key.pem > root.cert
+openssl req -new -nodes -keyout sample-pnf-private-key.pem > sample-pnf-request.pem
+openssl x509 -req -CA root.cert -CAkey root-private-key.pem -CAcreateserial < sample-pnf-request.pem > sample-pnf.cert
+openssl cms -sign -binary -nocerts -outform pem -signer sample-pnf.cert -inkey sample-pnf-private-key.pem < sample-pnf.csar > sample-pnf.cms \ No newline at end of file
diff --git a/csarvalidation/src/test/resources/pnf/dummyPnfv2.csar b/csarvalidation/src/test/resources/pnf/dummyPnfv2.csar
index dd45b66..bf2d912 100644
--- a/csarvalidation/src/test/resources/pnf/dummyPnfv2.csar
+++ b/csarvalidation/src/test/resources/pnf/dummyPnfv2.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/noToscaMetaFile.csar b/csarvalidation/src/test/resources/pnf/noToscaMetaFile.csar
index 331da92..f01cf20 100644
--- a/csarvalidation/src/test/resources/pnf/noToscaMetaFile.csar
+++ b/csarvalidation/src/test/resources/pnf/noToscaMetaFile.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar
index 56b145f..f1b8ab5 100644
--- a/csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar
+++ b/csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar
index d07dcbf..beb73d8 100644
--- a/csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar
+++ b/csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar
index 83a37cb..96f3916 100644
--- a/csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar
+++ b/csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar
index b31d8cf..65fb622 100644
--- a/csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar
+++ b/csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r146092/missingFieldsInNonManoArtifactManifest.csar b/csarvalidation/src/test/resources/pnf/r146092/missingFieldsInNonManoArtifactManifest.csar
index 545dd16..5f48c14 100644
--- a/csarvalidation/src/test/resources/pnf/r146092/missingFieldsInNonManoArtifactManifest.csar
+++ b/csarvalidation/src/test/resources/pnf/r146092/missingFieldsInNonManoArtifactManifest.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r146092/missingNonManoArtifactInManifest.csar b/csarvalidation/src/test/resources/pnf/r146092/missingNonManoArtifactInManifest.csar
index 0bb0e16..f1a5055 100644
--- a/csarvalidation/src/test/resources/pnf/r146092/missingNonManoArtifactInManifest.csar
+++ b/csarvalidation/src/test/resources/pnf/r146092/missingNonManoArtifactInManifest.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r146092/noSourceElementInNonManoArtifactEntryManifest.csar b/csarvalidation/src/test/resources/pnf/r146092/noSourceElementInNonManoArtifactEntryManifest.csar
index edeaf9b..78360dc 100644
--- a/csarvalidation/src/test/resources/pnf/r146092/noSourceElementInNonManoArtifactEntryManifest.csar
+++ b/csarvalidation/src/test/resources/pnf/r146092/noSourceElementInNonManoArtifactEntryManifest.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r146092/sourceElementWithUnknownFileInNonManoArtifactEntryManifest.csar b/csarvalidation/src/test/resources/pnf/r146092/sourceElementWithUnknownFileInNonManoArtifactEntryManifest.csar
index 434d614..d4c7993 100644
--- a/csarvalidation/src/test/resources/pnf/r146092/sourceElementWithUnknownFileInNonManoArtifactEntryManifest.csar
+++ b/csarvalidation/src/test/resources/pnf/r146092/sourceElementWithUnknownFileInNonManoArtifactEntryManifest.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r293901/allMandatoryEntriesDefinedInTOSCAMeta.csar b/csarvalidation/src/test/resources/pnf/r293901/allMandatoryEntriesDefinedInTOSCAMeta.csar
index f22366a..1dd4dfd 100644
--- a/csarvalidation/src/test/resources/pnf/r293901/allMandatoryEntriesDefinedInTOSCAMeta.csar
+++ b/csarvalidation/src/test/resources/pnf/r293901/allMandatoryEntriesDefinedInTOSCAMeta.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r293901/noMandatoryEntriesInTOSCAMeta.csar b/csarvalidation/src/test/resources/pnf/r293901/noMandatoryEntriesInTOSCAMeta.csar
index 9ef56cf..70a1939 100644
--- a/csarvalidation/src/test/resources/pnf/r293901/noMandatoryEntriesInTOSCAMeta.csar
+++ b/csarvalidation/src/test/resources/pnf/r293901/noMandatoryEntriesInTOSCAMeta.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r57019/allMandatoryEntriesDefinedInMetadataManifest.csar b/csarvalidation/src/test/resources/pnf/r57019/allMandatoryEntriesDefinedInMetadataManifest.csar
index 3311713..b23a689 100644
--- a/csarvalidation/src/test/resources/pnf/r57019/allMandatoryEntriesDefinedInMetadataManifest.csar
+++ b/csarvalidation/src/test/resources/pnf/r57019/allMandatoryEntriesDefinedInMetadataManifest.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r57019/noMandatoryEntriesInMetadataManifest.csar b/csarvalidation/src/test/resources/pnf/r57019/noMandatoryEntriesInMetadataManifest.csar
index 6b16ed5..570693d 100644
--- a/csarvalidation/src/test/resources/pnf/r57019/noMandatoryEntriesInMetadataManifest.csar
+++ b/csarvalidation/src/test/resources/pnf/r57019/noMandatoryEntriesInMetadataManifest.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r787965/broken.zip b/csarvalidation/src/test/resources/pnf/r787965/broken.zip
new file mode 100644
index 0000000..5447a8f
--- /dev/null
+++ b/csarvalidation/src/test/resources/pnf/r787965/broken.zip
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r787965/signature-and-certificate.zip b/csarvalidation/src/test/resources/pnf/r787965/signature-and-certificate.zip
new file mode 100644
index 0000000..47470f4
--- /dev/null
+++ b/csarvalidation/src/test/resources/pnf/r787965/signature-and-certificate.zip
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/signed-package-valid-signature.zip b/csarvalidation/src/test/resources/pnf/signed-package-valid-signature.zip
index 15437d6..b946585 100644
--- a/csarvalidation/src/test/resources/pnf/signed-package-valid-signature.zip
+++ b/csarvalidation/src/test/resources/pnf/signed-package-valid-signature.zip
Binary files differ