[VVP] stand alone tool, script updates
[vvp/validation-scripts.git] / ice_validator / app_tests / test_app_config.py
diff --git a/ice_validator/app_tests/test_app_config.py b/ice_validator/app_tests/test_app_config.py
new file mode 100644 (file)
index 0000000..d9a8567
--- /dev/null
@@ -0,0 +1,143 @@
+# -*- 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============================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+
+from io import StringIO
+
+import pytest
+import yaml
+
+import vvp
+
+DEFAULT_CONFIG = """
+ui:
+  app-name: VNF Validation Tool
+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
+  default-verbosity: Standard
+"""
+
+
+# noinspection PyShadowingNames
+@pytest.fixture(scope="module")
+def config():
+    return vvp.Config(yaml.load(StringIO(DEFAULT_CONFIG)))
+
+
+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_default_verbosity(config):
+    assert config.default_verbosity(vvp.ValidatorApp.VERBOSITY_LEVELS) == "More (-vv)"
+
+
+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 = """
+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.load(StringIO(MISSING_CATEGORY_FIELD))
+    with pytest.raises(RuntimeError) as e:
+        vvp.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