diff options
author | Lianhao Lu <lianhao.lu@intel.com> | 2018-08-29 13:55:41 +0800 |
---|---|---|
committer | Lianhao Lu <lianhao.lu@intel.com> | 2018-08-29 13:55:41 +0800 |
commit | 7db9cd91cd0b25000fca4c3ffb5c59cc413ad3f6 (patch) | |
tree | 6a8c9a76aa82f17d7c76be2c1da470b4c8e23683 | |
parent | 03257fcd7885f7a8c47e2f8f34204097201f5b89 (diff) |
Added more logic about cmd param validation
Shouldn't allow the user to set digest or certificate if manifest is
not set.
Change-Id: Iccb9f038106d52039f75ce80af1cce3858d1fba5
Issue-ID: VNFSDK-311
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
-rw-r--r-- | tests/packager/test_csar.py | 37 | ||||
-rw-r--r-- | vnfsdk_pkgtools/packager/csar.py | 6 |
2 files changed, 40 insertions, 3 deletions
diff --git a/tests/packager/test_csar.py b/tests/packager/test_csar.py index e9e441c..04efca7 100644 --- a/tests/packager/test_csar.py +++ b/tests/packager/test_csar.py @@ -19,6 +19,8 @@ import os import tempfile import shutil +import pytest + from vnfsdk_pkgtools.packager import csar CSAR_RESOURCE_DIR = 'tests/resources/csar' @@ -78,6 +80,30 @@ ARGS_NO_MANIFEST = { 'privkey': None, } +INVALID_ARGS_NO_MANIFEST = { + 'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': None, + 'history': None, + 'tests': None, + 'licenses': None, + 'digest': 'sha256', + 'certificate': None, + 'privkey': None, + } + +INVALID_ARGS_NO_PRIVKEY = { + 'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': 'test_entry.mf', + 'history': None, + 'tests': None, + 'licenses': None, + 'digest': None, + 'certificate': 'test.crt', + 'privkey': None, + } + def csar_write_test(args): csar_target_dir = tempfile.mkdtemp() @@ -116,9 +142,20 @@ def test_CSARWrite_manifest_digest(): os.makedirs(license_path) csar_write_test(Args(**ARGS_MANIFEST_DIGEST)) + def test_CSARWrite_manifest_digest_cert(): # Because git can not store emptry directory, we need to create manually here license_path = ARGS_MANIFEST['source'] + '/' + ARGS_MANIFEST['licenses'] if not os.path.exists(license_path): os.makedirs(license_path) csar_write_test(Args(**ARGS_MANIFEST_DIGEST_CERT)) + + +def test_CSARWrite_invalid_arg(): + with pytest.raises(ValueError) as excinfo: + csar_write_test(Args(**INVALID_ARGS_NO_MANIFEST)) + excinfo.match(r"Must specify manifest file") + + with pytest.raises(ValueError) as excinfo: + csar_write_test(Args(**INVALID_ARGS_NO_PRIVKEY)) + excinfo.match(r"Need private key file") diff --git a/vnfsdk_pkgtools/packager/csar.py b/vnfsdk_pkgtools/packager/csar.py index 8b1eb34..af84974 100644 --- a/vnfsdk_pkgtools/packager/csar.py +++ b/vnfsdk_pkgtools/packager/csar.py @@ -98,6 +98,8 @@ def write(source, entry, destination, args): metadata[META_ENTRY_MANIFEST_FILE_KEY] = args.manifest manifest_file = manifest.Manifest(source, args.manifest) manifest_file_full_path = os.path.join(source, args.manifest) + elif args.certificate or args.digest: + raise ValueError("Must specify manifest file if certificate or digest is specified") else: manifest_file = None manifest_file_full_path = None @@ -117,7 +119,7 @@ def write(source, entry, destination, args): check_dir=False) metadata[META_ENTRY_CERT_FILE_KEY] = args.certificate if not args.privkey: - raise RuntimeError('Need private key file for signing') + raise ValueError('Need private key file for signing') check_file_dir(root='', entry=args.privkey, msg='Please specify a valid private key file.', @@ -334,8 +336,6 @@ class _CSARReader(object): no_verify_cert) os.unlink(tmp_manifest) - - def _download(self, url, target): response = requests.get(url, stream=True) if response.status_code != 200: |