aboutsummaryrefslogtreecommitdiffstats
path: root/tests/packager/test_toscameta.py
diff options
context:
space:
mode:
authorLianhao Lu <lianhao.lu@intel.com>2019-11-28 15:12:22 +0800
committerLianhao Lu <lianhao.lu@intel.com>2019-11-29 10:11:46 +0800
commitfdb7c576cf4238228a786aa7cdb808aad2cb72cb (patch)
tree0a704125fdcfebbb8cba9748daf45922a337ae11 /tests/packager/test_toscameta.py
parent6bdd924968ceccf33a86482aa720609d1c156741 (diff)
Adapt to TOSCA.meta chagnes in SOL004 v2.6.1
Adapted to changes made in SOL004 v2.6.1 about TOSCA.meta file content, while still keeps the backward ability to generate SOL004 v2.4.1 compatible csar file. Issue-ID: VNFSDK-420 Change-Id: I2ea8d001211ea15c8409ee2e2802798a0945f390 Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
Diffstat (limited to 'tests/packager/test_toscameta.py')
-rw-r--r--tests/packager/test_toscameta.py132
1 files changed, 132 insertions, 0 deletions
diff --git a/tests/packager/test_toscameta.py b/tests/packager/test_toscameta.py
new file mode 100644
index 0000000..be6a173
--- /dev/null
+++ b/tests/packager/test_toscameta.py
@@ -0,0 +1,132 @@
+#
+# Copyright (c) 2017 GigaSpaces Technologies Ltd. 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.
+#
+import copy
+import os
+import pytest
+import shutil
+import tempfile
+
+from vnfsdk_pkgtools.packager import toscameta
+from vnfsdk_pkgtools import util
+
+
+ROOT_DIR = util.get_project_root()
+
+CSAR_RESOURCE_DIR = os.path.join(ROOT_DIR, 'tests', 'resources', 'csar')
+CSAR_ENTRY_FILE = 'test_entry.yaml'
+CSAR_OUTPUT_FILE = 'output.csar'
+
+ARGS_MANIFEST = {
+ 'base_dir': CSAR_RESOURCE_DIR,
+ 'entry': CSAR_ENTRY_FILE,
+ 'manifest': 'test_entry.mf',
+ 'changelog': 'ChangeLog.txt',
+ 'licenses': 'Licenses',
+ 'tests': 'Tests',
+ 'certificate': None,
+ }
+
+ARGS_MANIFEST_CERTIFICATE = {
+ 'base_dir': CSAR_RESOURCE_DIR,
+ 'entry': CSAR_ENTRY_FILE,
+ 'manifest': 'test_entry.mf',
+ 'changelog': 'ChangeLog.txt',
+ 'licenses': 'Licenses',
+ 'tests': 'Tests',
+ 'certificate': 'test.crt',
+ }
+
+ARGS_NO_MANIFEST = {
+ 'base_dir': CSAR_RESOURCE_DIR,
+ 'entry': CSAR_ENTRY_FILE,
+ 'manifest': None,
+ 'changelog': None,
+ 'licenses': None,
+ 'tests': None,
+ 'certificate': None,
+ }
+
+
+def _validate_metadata(cls, expected):
+ metadata = cls(**expected)
+ assert toscameta.META_CREATED_BY_VALUE == metadata.created_by
+ assert toscameta.META_CSAR_VERSION_VALUE == metadata.csar_version
+ assert toscameta.META_FILE_VERSION_VALUE == metadata.meta_file_version
+ assert expected['entry'] == metadata.entry_definitions
+ assert expected['manifest'] == metadata.entry_manifest_file
+ assert expected['changelog'] == metadata.entry_history_file
+ assert expected['licenses'] == metadata.entry_licenses_dir
+ assert expected['tests'] == metadata.entry_tests_dir
+ assert expected['certificate'] == metadata.entry_certificate_file
+ return metadata
+
+
+def test_261():
+ metadata = _validate_metadata(toscameta.ToscaMeta261, ARGS_MANIFEST)
+ assert "ETSI-Entry-Change-Log: ChangeLog.txt\n" in metadata.dump_as_string()
+
+
+def test_241():
+ metadata = _validate_metadata(toscameta.ToscaMeta241, ARGS_MANIFEST_CERTIFICATE)
+ assert "Entry-Certificate: test.crt\n" in metadata.dump_as_string()
+
+
+def test_261_no_manifest():
+ with pytest.raises(ValueError):
+ toscameta.ToscaMeta261(**ARGS_NO_MANIFEST)
+
+
+def test_241_no_manifest():
+ metadata = _validate_metadata(toscameta.ToscaMeta241, ARGS_NO_MANIFEST)
+ assert "Entry-Definitions: test_entry.yaml\n" in metadata.dump_as_string()
+
+
+def test_invalid_entry():
+ args = copy.copy(ARGS_MANIFEST)
+ args['entry'] = 'test_entry.mf'
+ with pytest.raises(ValueError):
+ toscameta.ToscaMeta261(**args)
+
+
+def test_invalid_csar_version():
+ args = copy.copy(ARGS_MANIFEST)
+ args['meta_csar_version'] = '1.2'
+ with pytest.raises(ValueError):
+ toscameta.ToscaMeta241(**args)
+
+
+FROM_FILE_CASES = ['TOSCA.meta.sol261', 'TOSCA.meta.sol241']
+
+def _prepare(target, metafile_path):
+ shutil.copytree(CSAR_RESOURCE_DIR, target)
+ os.mkdir(os.path.join(target, 'TOSCA-Metadata'))
+ shutil.copy(metafile_path, os.path.join(target,
+ 'TOSCA-Metadata',
+ 'TOSCA.meta'))
+
+def test_create_from_file():
+ for case in FROM_FILE_CASES:
+ target = tempfile.mkdtemp()
+ base_dir = os.path.join(target, 'mytest')
+ _prepare(base_dir,
+ os.path.join(ROOT_DIR,
+ 'tests',
+ 'resources',
+ case))
+ try:
+ toscameta.create_from_file(base_dir)
+ finally:
+ shutil.rmtree(target, ignore_errors=True)