aboutsummaryrefslogtreecommitdiffstats
path: root/ice_validator/app_tests/test_config.py
diff options
context:
space:
mode:
Diffstat (limited to 'ice_validator/app_tests/test_config.py')
-rw-r--r--ice_validator/app_tests/test_config.py269
1 files changed, 269 insertions, 0 deletions
diff --git a/ice_validator/app_tests/test_config.py b/ice_validator/app_tests/test_config.py
new file mode 100644
index 0000000..a41cfbf
--- /dev/null
+++ b/ice_validator/app_tests/test_config.py
@@ -0,0 +1,269 @@
+# -*- coding: utf8 -*-
+# ============LICENSE_START====================================================
+# org.onap.vvp/validation-scripts
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the "License");
+# you may not use this software 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.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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============================================
+
+import uuid
+from io import StringIO
+
+import pytest
+import yaml
+
+from config import Config, get_generator_plugin_names, to_uri
+import vvp
+
+
+DEFAULT_CONFIG = """
+namespace: {namespace}
+owner: onap-test
+ui:
+ app-name: VNF Validation Tool
+ requirement-link-url: http://requirement.url.com
+categories:
+ - name: Environment File Compliance. (Required to Onboard)
+ category: environment_file
+ description:
+ Checks certain parameters are excluded from the .env file, per HOT Requirements.
+ Required for ASDC onboarding, not needed for manual Openstack testing.
+settings:
+ polling-freqency: 1000
+ env-specs:
+ - tests.test_environment_file_parameters.ENV_PARAMETER_SPEC
+terms:
+ version: 1.0.0
+ path: path/to/terms.txt
+ popup-title: Terms and Conditions
+ popup-link-text: View Terms and Conditions
+ popup-msg-text: Review and Accept the Terms
+"""
+
+
+# noinspection PyShadowingNames
+@pytest.fixture()
+def config():
+ unique = str(uuid.uuid4())
+ data = DEFAULT_CONFIG.format(namespace=unique)
+ return Config(yaml.safe_load(StringIO(data)))
+
+
+def test_app_name(config):
+ assert "VNF Validation Tool" in config.app_name
+ assert vvp.VERSION in config.app_name
+
+
+def test_categories_names_length(config):
+ names = config.category_names
+ assert len(names) == 1
+ assert names[0] == "Environment File Compliance. (Required to Onboard)"
+
+
+def test_polling_frequency(config):
+ assert config.polling_frequency == 1000
+
+
+def test_get_category_when_other(config):
+ assert (
+ config.get_category("Environment File Compliance. (Required to Onboard)")
+ == "environment_file"
+ )
+
+
+def test_queues(config):
+ assert config.log_queue.empty(), "Log should start empty"
+ config.log_file.write("Test")
+ assert config.log_queue.get() == "Test"
+
+ assert config.status_queue.empty(), "status should start empty"
+ config.status_queue.put((True, None))
+ assert config.status_queue.get() == (True, None)
+
+
+MISSING_CATEGORY_FIELD = """
+namespace: org.onap.test
+owner: onap-test
+ui:
+ app-name: VNF Validation Tool
+categories:
+ - description: |
+ Runs all default validations that apply to all VNF packages
+ regardless of deployment environment
+settings:
+ polling-freqency: 1000
+"""
+
+
+def test_missing_category_fields():
+ settings = yaml.safe_load(StringIO(MISSING_CATEGORY_FIELD))
+ with pytest.raises(RuntimeError) as e:
+ Config(settings)
+ assert "Missing: name" in str(e)
+
+
+def test_default_output_format(config):
+ assert config.default_report_format == "HTML"
+
+
+def test_output_formats(config):
+ for format in ["CSV", "HTML", "Excel"]:
+ assert format in config.report_formats
+
+
+def test_category_names(config):
+ assert "Environment File Compliance. (Required to Onboard)" in config.category_names
+
+
+def test_default_input_format(config):
+ assert "Directory (Uncompressed)" == config.default_input_format
+
+
+def test_input_formats(config):
+ assert "Directory (Uncompressed)" in config.input_formats
+ assert "ZIP File" in config.input_formats
+
+
+def test_env_specs(config):
+ specs = config.env_specs
+ assert len(specs) == 1
+ assert "ALL" in specs[0]
+
+
+def test_get_generator_plugin_names(config):
+ names = get_generator_plugin_names()
+ assert "VNF-API" in names
+ assert "GR-API" in names
+
+
+def test_preload_formats(config):
+ formats = config.preload_formats
+ assert all(format in formats for format in ("VNF-API", "GR-API"))
+
+
+def test_requirement_link_http(config):
+ assert config.requirement_link_url == "http://requirement.url.com"
+
+
+def test_to_uri_relative_path():
+ assert to_uri("path/").startswith("file://")
+ assert to_uri("path/").endswith("/path")
+
+
+def test_to_uri_relative_http():
+ assert to_uri("http://url.com") == "http://url.com"
+
+
+def test_to_uri_absolute_path():
+ assert to_uri("/path/one").startswith("file:///")
+ assert to_uri("/path/one").endswith("/path/one")
+
+
+def test_requirement_link_path(config):
+ config._config["ui"]["requirement-link-url"] = "path/to/reqs.txt"
+ url = config.requirement_link_url
+ assert url.startswith("file://")
+ assert "path/to/reqs.txt" in url
+
+
+def test_terms_version(config):
+ assert config.terms_version == "1.0.0"
+
+
+def test_terms_popup_title(config):
+ assert config.terms_popup_title == "Terms and Conditions"
+
+
+def test_terms_popup_message(config):
+ assert config.terms_popup_message == "Review and Accept the Terms"
+
+
+def test_terms_link_url_default(config):
+ config._config["terms"]["path"] = None
+ assert config.terms_link_url is None
+
+
+def test_terms_acceptance(config):
+ assert not config.are_terms_accepted
+ config.set_terms_accepted()
+ assert config.are_terms_accepted
+
+
+def test_terms_link_url_path(config):
+ assert config.terms_link_url.startswith("file://")
+ assert config.terms_link_url.endswith("/path/to/terms.txt")
+
+
+def test_terms_link_text(config):
+ assert config.terms_link_text == "View Terms and Conditions"
+
+
+def test_default_halt_on_failure(config):
+ assert config.default_halt_on_failure
+
+
+def test_get_subdir_for_preload(config):
+ assert config.get_subdir_for_preload("VNF-API") == "vnfapi"
+
+
+def test_default_preload_format(config):
+ assert config.default_preload_format in ("VNF-API", "GR-API", "Excel")
+
+
+def test_category_description(config):
+ assert "Checks certain parameters" in config.get_description(
+ "Environment File Compliance. (Required to Onboard)"
+ )
+
+
+def test_get_category_by_name(config):
+ assert (
+ config.get_category("Environment File Compliance. (Required to Onboard)")
+ == "environment_file"
+ )
+
+
+def test_cached_category_setting(config):
+ assert (
+ config.get_category_value("Environment File Compliance. (Required to Onboard)")
+ == 0
+ )
+
+
+def test_disclaimer_text(config):
+ assert config.disclaimer_text == ""
+
+
+def test_requirement_link_text(config):
+ url_text = "Requirement URL"
+ config._config["ui"]["requirement-link-text"] = url_text
+ assert config.requirement_link_text == url_text