From ad99b805537fc8f3103fa5646abe5342924e10cd Mon Sep 17 00:00:00 2001 From: Adam Wudzinski Date: Fri, 27 Nov 2020 12:50:27 +0100 Subject: [SDC] PM_Dictionary file validation for ZIP onboarding Use PM_Dictionary validator from VNF-SDK to validate PM_Dictionary files when onboarding ZIP package Issue-ID: SDC-3390 Signed-off-by: Adam Wudzinski Change-Id: I03fd622393d675977527b9845b6cf8b87b2ec0a3 --- .../impl/validators/FileExtensionUtilsTest.java | 111 +++++++++++++++++++++ .../impl/validators/PmDictionaryValidatorTest.java | 60 +++++++++++ 2 files changed, 171 insertions(+) create mode 100644 openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/FileExtensionUtilsTest.java create mode 100644 openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidatorTest.java (limited to 'openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java') diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/FileExtensionUtilsTest.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/FileExtensionUtilsTest.java new file mode 100644 index 0000000000..53a2cfa650 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/FileExtensionUtilsTest.java @@ -0,0 +1,111 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2020 Nokia Intellectual Property. 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.openecomp.sdc.validation.impl.validators; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; + +class FileExtensionUtilsTest { + + private static final Set VALID_YAML_EXTENSIONS = Set.of( + ".yaml", + ".yml", + ".env" + ); + private static final Set INVALID_YAML_EXTENSIONS = Set.of( + ".txt", + ".java", + ".properties" + ); + + private static final Set VALID_PM_DICTIONARY_EXTENSIONS = Set.of( + "pmdict.yml", + "pmdict.yaml", + "pm_dict.yml", + "pm_dict.yaml", + "pmdictionary.yml", + "pmdictionary.yaml", + "pm_dictionary.yml", + "pm_dictionary.yaml" + ); + private static final Set INVALID_PM_DICTIONARY_EXTENSIONS = Set.of( + "pmdict.txt", + "pmdict.java", + "pm.yml" + ); + + private static final Set TEST_FILE_PREFIXES = Set.of( + "test", + "test_file" + ); + + @Test + void shouldMatchProperYamlExtensions() { + final boolean allValidFilesMatched = constructTestFilenamesWithExtensions(VALID_YAML_EXTENSIONS) + .allMatch(FileExtensionUtils::isYaml); + + assertTrue(allValidFilesMatched); + } + + @Test + void shouldNotMatchImproperYamlExtensions() { + final boolean allInvalidFilesNotMatched = constructTestFilenamesWithExtensions(INVALID_YAML_EXTENSIONS) + .noneMatch(FileExtensionUtils::isYaml); + + assertTrue(allInvalidFilesNotMatched); + } + + @Test + void shouldMatchProperPmDictionaryExtensions() { + final boolean allValidFilesMatched = constructTestFilenamesWithExtensions(VALID_PM_DICTIONARY_EXTENSIONS) + .allMatch(FileExtensionUtils::isPmDictionary); + + assertTrue(allValidFilesMatched); + } + + @Test + void shouldNotMatchImproperPmDictionaryExtensions() { + final boolean allInvalidFilesNotMatched = constructTestFilenamesWithExtensions(INVALID_PM_DICTIONARY_EXTENSIONS) + .noneMatch(FileExtensionUtils::isPmDictionary); + + assertTrue(allInvalidFilesNotMatched); + } + + private Stream constructTestFilenamesWithExtensions(Set extensions) { + return extensions.stream() + .flatMap(ext -> prepareFilenamesWithExtension(ext).stream()); + } + + private Set prepareFilenamesWithExtension(String extension) { + return Stream.concat( + joinTestNamesWithExtension(extension.toLowerCase()), + joinTestNamesWithExtension(extension.toUpperCase()) + ).collect(Collectors.toSet()); + } + + private Stream joinTestNamesWithExtension(String extension) { + return TEST_FILE_PREFIXES.stream() + .map(prefix -> prefix + extension); + } +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidatorTest.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidatorTest.java new file mode 100644 index 0000000000..d841694a23 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidatorTest.java @@ -0,0 +1,60 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2020 Nokia Intellectual Property. 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.openecomp.sdc.validation.impl.validators; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.openecomp.core.validation.types.MessageContainer; +import org.openecomp.sdc.validation.util.ValidationTestUtil; + +public class PmDictionaryValidatorTest { + + private static final String RESOURCE_PATH = "/org/openecomp/validation/validators/pm_dictionary_validator"; + private static final String VALID_PM_DICTIONARY_YAML = "valid_pm_dictionary.yaml"; + private static final String INVALID_PM_DICTIONARY_YAML = "invalid_pm_dictionary.yaml"; + + @Test + public void shouldNotReturnErrorsWhenValidPmDict() { + Map messages = runValidation( + RESOURCE_PATH + "/" + VALID_PM_DICTIONARY_YAML); + + assertNotNull(messages); + assertEquals(0, messages.size()); + } + + @Test + public void shouldReturnErrorsWhenInvalidPmDict() { + Map messages = runValidation( + RESOURCE_PATH + "/" + INVALID_PM_DICTIONARY_YAML); + + assertNotNull(messages); + assertNotNull(messages.get(INVALID_PM_DICTIONARY_YAML)); + assertEquals(4, messages.get(INVALID_PM_DICTIONARY_YAML).getErrorMessageList().size()); + } + + private Map runValidation(String path) { + PmDictionaryValidator validator = new PmDictionaryValidator(); + return ValidationTestUtil.testValidator(validator, path); + } +} \ No newline at end of file -- cgit 1.2.3-korg