summaryrefslogtreecommitdiffstats
path: root/integration-tests/src/test
diff options
context:
space:
mode:
authorMaciej Malewski <maciej.malewski@nokia.com>2020-12-10 14:38:00 +0100
committerVasyl Razinkov <vasyl.razinkov@est.tech>2020-12-17 14:55:21 +0000
commit1b44134b16ac74e8326ba14e1764a9023cc6f0cf (patch)
tree64e831c281abf51435d4684bca784a66355dab1f /integration-tests/src/test
parent0b42749241b257588a74bef1804deec581d2afc2 (diff)
Integration tests for validating PM_Dictionary.
Checking compliance content of the PM_Dictionary file against it's schema. Issue-ID: SDC-3390 Change-Id: I8e20f977c7d6838005bc84fc6c7c8ab197152a53 Signed-off-by: Maciej Malewski <maciej.malewski@nokia.com>
Diffstat (limited to 'integration-tests/src/test')
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarLoader.java54
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarValidationTest.java73
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/ZipValidationTest.java90
-rw-r--r--integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/invalidPnfCompliantWithSOL004.csarbin0 -> 104109 bytes
-rw-r--r--integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/validPnfCompliantWithSOL004.csarbin0 -> 104106 bytes
-rw-r--r--integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/invalidPmDict.zipbin0 -> 3234 bytes
-rw-r--r--integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/validPmDict.zipbin0 -> 3233 bytes
7 files changed, 217 insertions, 0 deletions
diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarLoader.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarLoader.java
new file mode 100644
index 0000000000..ca80ecee4c
--- /dev/null
+++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarLoader.java
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2020 Nokia. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdc.backend.ci.tests.validation.pmdictionary;
+
+import org.apache.commons.io.IOUtils;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.vendorsoftwareproduct.exception.OnboardPackageException;
+import org.openecomp.sdc.vendorsoftwareproduct.types.OnboardPackage;
+import org.openecomp.sdc.vendorsoftwareproduct.types.OnboardPackageInfo;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+
+class CsarLoader {
+
+ private CsarLoader() {
+ }
+
+ static FileContentHandler load(String csarFileName, String csarFilePath) throws IOException, OnboardPackageException {
+ InputStream inputStream = CsarLoader.class.getResourceAsStream(csarFilePath);
+ OnboardPackage onboardPackage = getOnboardPackage(csarFileName, inputStream);
+ return onboardPackage.getFileContentHandler();
+ }
+
+ private static OnboardPackage getOnboardPackage(String csarFileName, InputStream inputStream) throws OnboardPackageException, IOException {
+ OnboardPackageInfo onboardPackageInfo = new OnboardPackageInfo(csarFileName, OnboardingTypesEnum.CSAR.name(),
+ convertFileInputStream(inputStream), OnboardingTypesEnum.CSAR);
+ return onboardPackageInfo.getOnboardPackage();
+ }
+
+ private static ByteBuffer convertFileInputStream(final InputStream fileInputStream) throws IOException {
+ byte[] fileContent = IOUtils.toByteArray(fileInputStream);
+ return ByteBuffer.wrap(fileContent);
+ }
+}
diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarValidationTest.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarValidationTest.java
new file mode 100644
index 0000000000..e12e058d6c
--- /dev/null
+++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/CsarValidationTest.java
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2020 Nokia. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdc.backend.ci.tests.validation.pmdictionary;
+
+import org.junit.jupiter.api.Test;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.vendorsoftwareproduct.exception.OnboardPackageException;
+import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.validation.ValidatorFactory;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.*;
+
+class CsarValidationTest {
+
+ @Test
+ void shouldNotReturnErrors_whenPnfCsarIsValid() throws OnboardPackageException, IOException {
+ //given
+ FileContentHandler pnfFileContent = CsarLoader.load("validPnfCompliantWithSOL004.csar", "/Files/PNFs/validation/pmdictionary/validPnfCompliantWithSOL004.csar");
+
+ //when
+ Map<String, List<ErrorMessage>> errorsMap = ValidatorFactory.getValidator(pnfFileContent).validateContent(pnfFileContent);
+
+ //then
+ assertThat(errorsMap, is(anEmptyMap()));
+ }
+
+ @Test
+ void shouldReturnError_whenPMDictionaryContentIsNotCompliantWithSchema() throws OnboardPackageException, IOException {
+ //given
+ String expectedErrorMessage = "Document number: 1, Path: /pmMetaData/, Message: Key not found: pmHeader";
+ FileContentHandler pnfFileContent = CsarLoader.load("invalidPnfCompliantWithSOL004.csar", "/Files/PNFs/validation/pmdictionary/invalidPnfCompliantWithSOL004.csar");
+
+ //when
+ Map<String, List<ErrorMessage>> errorMap = ValidatorFactory.getValidator(pnfFileContent).validateContent(pnfFileContent);
+ List<ErrorMessage> errorList = errorMap.get("uploadFile");
+
+ //then
+ assertThat(errorList, is(not(empty())));
+ assertThat(getActualErrorMessage(errorList), is(equalTo(expectedErrorMessage)));
+ assertThat(getActualErrorLevel(errorList), is(ErrorLevel.ERROR));
+ }
+
+ private String getActualErrorMessage(List<ErrorMessage> errorList) {
+ return errorList.get(0).getMessage();
+ }
+
+ private ErrorLevel getActualErrorLevel(List<ErrorMessage> errorList) {
+ return errorList.get(0).getLevel();
+ }
+}
diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/ZipValidationTest.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/ZipValidationTest.java
new file mode 100644
index 0000000000..d3287d29b6
--- /dev/null
+++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/validation/pmdictionary/ZipValidationTest.java
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2020 Nokia. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdc.backend.ci.tests.validation.pmdictionary;
+
+import org.junit.jupiter.api.Test;
+import org.openecomp.core.utilities.file.FileContentHandler;
+import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
+import org.openecomp.sdc.common.utils.CommonUtil;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.validation.util.ValidationManagerUtil;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class ZipValidationTest {
+
+ private static final String PM_DICTIONARY_FILE = "pmdict.yaml";
+ private static final String ZIPS_PATH = "Files/VNFs/validation/pmdictionary";
+
+ @Test
+ void shouldReportOnlyFileNotReferenced_whenValidPmDictionaryZip() throws IOException {
+ // given
+ FileContentHandler fileContentHandler = getFileContentHandler("validPmDict.zip");
+
+ // when
+ Map<String, List<ErrorMessage>> errors = ValidationManagerUtil.initValidationManager(fileContentHandler)
+ .validate();
+ List<ErrorMessage> pmDictValidationErrors = extractPmDictValidationErrors(errors);
+
+ // then
+ assertThat(pmDictValidationErrors).isEmpty();
+ }
+
+ @Test
+ void shouldReportPmDictionaryErrors_whenInvalidPmDictionaryZip() throws IOException {
+ // given
+ FileContentHandler fileContentHandler = getFileContentHandler("invalidPmDict.zip");
+ ErrorMessage errorMessage = new ErrorMessage(ErrorLevel.ERROR,
+ "ERROR: [PM_DICT]: Document Number: 1, Path: /pmMetaData/, Problem: Key not found: pmHeader");
+
+
+ // when
+ Map<String, List<ErrorMessage>> errors = ValidationManagerUtil.initValidationManager(fileContentHandler)
+ .validate();
+ List<ErrorMessage> pmDictValidationErrors = extractPmDictValidationErrors(errors);
+
+ // then
+ assertThat(pmDictValidationErrors)
+ .hasSize(1)
+ .containsExactly(errorMessage);
+ }
+
+ private FileContentHandler getFileContentHandler(String filename) throws IOException {
+ return CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP,
+ Objects.requireNonNull(this.getClass()
+ .getClassLoader()
+ .getResourceAsStream(ZIPS_PATH + "/" + filename))
+ .readAllBytes());
+ }
+
+ private List<ErrorMessage> extractPmDictValidationErrors(Map<String, List<ErrorMessage>> errors) {
+ return errors.getOrDefault(PM_DICTIONARY_FILE, List.of())
+ .stream()
+ .filter(error -> error.getMessage().contains("[PM_DICT]"))
+ .collect(Collectors.toList());
+ }
+}
diff --git a/integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/invalidPnfCompliantWithSOL004.csar b/integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/invalidPnfCompliantWithSOL004.csar
new file mode 100644
index 0000000000..2929843825
--- /dev/null
+++ b/integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/invalidPnfCompliantWithSOL004.csar
Binary files differ
diff --git a/integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/validPnfCompliantWithSOL004.csar b/integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/validPnfCompliantWithSOL004.csar
new file mode 100644
index 0000000000..3574b72393
--- /dev/null
+++ b/integration-tests/src/test/resources/Files/PNFs/validation/pmdictionary/validPnfCompliantWithSOL004.csar
Binary files differ
diff --git a/integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/invalidPmDict.zip b/integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/invalidPmDict.zip
new file mode 100644
index 0000000000..2c8c3691ec
--- /dev/null
+++ b/integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/invalidPmDict.zip
Binary files differ
diff --git a/integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/validPmDict.zip b/integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/validPmDict.zip
new file mode 100644
index 0000000000..b1a49feea8
--- /dev/null
+++ b/integration-tests/src/test/resources/Files/VNFs/validation/pmdictionary/validPmDict.zip
Binary files differ