diff options
Diffstat (limited to 'tests/packager')
-rw-r--r-- | tests/packager/test_csar.py | 161 | ||||
-rw-r--r-- | tests/packager/test_manifest.py | 26 | ||||
-rw-r--r-- | tests/packager/test_toscameta.py | 57 | ||||
-rw-r--r-- | tests/packager/test_utils.py | 116 |
4 files changed, 180 insertions, 180 deletions
diff --git a/tests/packager/test_csar.py b/tests/packager/test_csar.py index b63a117..767a86c 100644 --- a/tests/packager/test_csar.py +++ b/tests/packager/test_csar.py @@ -31,87 +31,86 @@ CSAR_ENTRY_FILE = 'test_entry.yaml' CSAR_OUTPUT_FILE = 'output.csar' Args = collections.namedtuple('Args', - ['source', 'entry', 'manifest', 'history', 'tests', - 'licenses', 'digest', 'certificate', 'privkey', 'sol241']) - - -ARGS_MANIFEST = { - 'source': CSAR_RESOURCE_DIR, - 'entry': CSAR_ENTRY_FILE, - 'manifest': 'test_entry.mf', - 'history': 'ChangeLog.txt', - 'tests': 'Tests', - 'licenses': 'Licenses', - 'digest': None, - 'certificate': None, - 'privkey': None, - 'sol241': False, - } - -ARGS_MANIFEST_DIGEST = { - 'source': CSAR_RESOURCE_DIR, - 'entry': CSAR_ENTRY_FILE, - 'manifest': 'test_entry.mf', - 'history': 'ChangeLog.txt', - 'tests': 'Tests', - 'licenses': 'Licenses', - 'digest': 'sha-256', - 'certificate': None, - 'privkey': None, - 'sol241': False, - } - -ARGS_MANIFEST_DIGEST_CERT = { - 'source': CSAR_RESOURCE_DIR, - 'entry': CSAR_ENTRY_FILE, - 'manifest': 'test_entry.mf', - 'history': 'ChangeLog.txt', - 'tests': 'Tests', - 'licenses': 'Licenses', - 'digest': 'sha-256', - 'certificate': 'test.crt', - 'privkey': os.path.join(ROOT_DIR, 'tests', 'resources', 'signature', 'test.key'), - 'sol241': False, - } - -ARGS_NO_MANIFEST = { - 'source': CSAR_RESOURCE_DIR, - 'entry': CSAR_ENTRY_FILE, - 'manifest': None, - 'history': None, - 'tests': None, - 'licenses': None, - 'digest': None, - 'certificate': None, - 'privkey': None, - 'sol241': True, - } - -INVALID_ARGS_NO_MANIFEST = { - 'source': CSAR_RESOURCE_DIR, - 'entry': CSAR_ENTRY_FILE, - 'manifest': None, - 'history': None, - 'tests': None, - 'licenses': None, - 'digest': 'sha-256', - 'certificate': None, - 'privkey': None, - 'sol241': True, - } - -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, - 'sol241': True, - } + ['source', 'entry', 'manifest', + 'history', 'tests', 'licenses', + 'digest', 'certificate', 'privkey', + 'sol241']) + + +ARGS_MANIFEST = {'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': 'test_entry.mf', + 'history': 'ChangeLog.txt', + 'tests': 'Tests', + 'licenses': 'Licenses', + 'digest': None, + 'certificate': None, + 'privkey': None, + 'sol241': False, + } + +ARGS_MANIFEST_DIGEST = {'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': 'test_entry.mf', + 'history': 'ChangeLog.txt', + 'tests': 'Tests', + 'licenses': 'Licenses', + 'digest': 'sha-256', + 'certificate': None, + 'privkey': None, + 'sol241': False, + } + +ARGS_MANIFEST_DIGEST_CERT = {'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': 'test_entry.mf', + 'history': 'ChangeLog.txt', + 'tests': 'Tests', + 'licenses': 'Licenses', + 'digest': 'sha-256', + 'certificate': 'test.crt', + 'privkey': os.path.join(ROOT_DIR, 'tests', + 'resources', + 'signature', + 'test.key'), + 'sol241': False, + } + +ARGS_NO_MANIFEST = {'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': None, + 'history': None, + 'tests': None, + 'licenses': None, + 'digest': None, + 'certificate': None, + 'privkey': None, + 'sol241': True, + } + +INVALID_ARGS_NO_MANIFEST = {'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': None, + 'history': None, + 'tests': None, + 'licenses': None, + 'digest': 'sha-256', + 'certificate': None, + 'privkey': None, + 'sol241': True, + } + +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, + 'sol241': True, + } def csar_write_test(args): diff --git a/tests/packager/test_manifest.py b/tests/packager/test_manifest.py index 7fa3474..816d256 100644 --- a/tests/packager/test_manifest.py +++ b/tests/packager/test_manifest.py @@ -32,13 +32,13 @@ METADATA_241 = '\n'.join(["metadata:", "vnf_provider_id: test", "vnf_package_version: 1.0", "vnf_release_data_time: 2017-09-15T15:00:10+08:00", - ]) + ]) METADATA_MISSING_KEY = '\n'.join(["metadata:", - "vnf_product_name: test", - "vnf_provider_id: test", - "vnf_package_version:1.0", - ]) + "vnf_product_name: test", + "vnf_provider_id: test", + "vnf_package_version:1.0", + ]) METADATA_MISSING = "vnf_product_name: test" @@ -46,7 +46,7 @@ FILE_CONTENT = "needToBeHashed" FILE_DIGEST = '\n'.join(['Source: digest', 'Algorithm: SHA-256', 'Hash: 20a480339aa4371099f9503511dcc5a8051ce3884846678ced5611ec64bbfc9c', - ]) + ]) CMS = '\n'.join(['-----BEGIN CMS-----', 'MIICmAYJKoZIhvcNAQcCoIICiTCCAoUCAQExDTALBglghkgBZQMEAgEwCwYJKoZI', @@ -64,11 +64,11 @@ CMS = '\n'.join(['-----BEGIN CMS-----', 'pqE+DUlSFyilc9CQWnSLubkHmM4dZnU7qnNoTBqplDYpOYH3WSNN9Cv322JusAzt', 'SzFEv182phI2C5pmjUnf7VG1WMKCH2WNtkYwMUCDcGvbHrh8n+kR8hL/BAs=', '-----END CMS-----', - ]) + ]) FILE_SOURCE_ONLY = '\n'.join(['Source: source1', 'Source: source2', - ]) + ]) NON_MANO_ARTIFACTS = '\n'.join(['non_mano_artifact_sets:', 'foo_bar:', @@ -76,7 +76,7 @@ NON_MANO_ARTIFACTS = '\n'.join(['non_mano_artifact_sets:', 'prv.happy-nfv.cool:', 'Source: happy/cool/123.html', 'Source: happy/cool/cool.json', - ]) + ]) def test_metadata(tmpdir): @@ -122,6 +122,7 @@ def test_missing_metadata(tmpdir): manifest.Manifest(p.dirname, 'test.mf') excinfo.match(r"Unrecognized file digest line vnf_product_name: test:") + def test_digest(tmpdir): root = tmpdir.mkdir('csar') mf = root.join('test.mf') @@ -133,6 +134,7 @@ def test_digest(tmpdir): assert m.digests['digest'][0] == "SHA-256" assert m.digests['digest'][1] == "20a480339aa4371099f9503511dcc5a8051ce3884846678ced5611ec64bbfc9c" + def test_add_file(tmpdir): root = tmpdir.mkdir('csar') mf = root.join('test.mf') @@ -145,6 +147,7 @@ def test_add_file(tmpdir): assert m.digests['digest'][0] == "SHA-256" assert m.digests['digest'][1] == "20a480339aa4371099f9503511dcc5a8051ce3884846678ced5611ec64bbfc9c" + def test_update_to_file(tmpdir): root = tmpdir.mkdir('csar') mf = root.join('test.mf') @@ -164,12 +167,14 @@ def test_update_to_file(tmpdir): assert len(list(m2.digests.keys())) == 2 assert m2.signature == CMS + def test_signature(tmpdir): p = tmpdir.mkdir('csar').join('test.mf') p.write(METADATA + "\n\n" + CMS) m = manifest.Manifest(p.dirname, 'test.mf') assert m.signature == CMS + def test_illegal_signature(tmpdir): p = tmpdir.mkdir('csar').join('test.mf') p.write(METADATA + "\n\n" + CMS[:-17]) @@ -177,6 +182,7 @@ def test_illegal_signature(tmpdir): manifest.Manifest(p.dirname, 'test.mf') excinfo.match(r"Can NOT find end of sigature block") + def test_signature_strip(tmpdir): p = tmpdir.mkdir('csar').join('test.mf') p.write(METADATA + "\n\n" + CMS) @@ -188,6 +194,7 @@ def test_signature_strip(tmpdir): assert m2.signature is None os.unlink(newfile) + def test_source_only(tmpdir): p = tmpdir.mkdir('csar').join('test.mf') p.write(METADATA + "\n\n" + FILE_SOURCE_ONLY) @@ -195,6 +202,7 @@ def test_source_only(tmpdir): assert 'source1' in m.digests.keys() assert 'source2' in m.digests.keys() + def test_non_mano_artifacts(tmpdir, mocker): mocker.patch('vnfsdk_pkgtools.packager.utils.check_file_dir') p = tmpdir.mkdir('csar').join('test.mf') diff --git a/tests/packager/test_toscameta.py b/tests/packager/test_toscameta.py index be6a173..9c5a13b 100644 --- a/tests/packager/test_toscameta.py +++ b/tests/packager/test_toscameta.py @@ -29,35 +29,32 @@ 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, - } +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): @@ -110,6 +107,7 @@ def test_invalid_csar_version(): 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')) @@ -117,6 +115,7 @@ def _prepare(target, metafile_path): 'TOSCA-Metadata', 'TOSCA.meta')) + def test_create_from_file(): for case in FROM_FILE_CASES: target = tempfile.mkdtemp() diff --git a/tests/packager/test_utils.py b/tests/packager/test_utils.py index 450a526..8c504e4 100644 --- a/tests/packager/test_utils.py +++ b/tests/packager/test_utils.py @@ -22,22 +22,24 @@ from vnfsdk_pkgtools.packager import utils from vnfsdk_pkgtools import util ROOT_DIR = util.get_project_root() -RESOURCES_DIR= os.path.join(ROOT_DIR, 'tests', 'resources', 'signature') +RESOURCES_DIR = os.path.join(ROOT_DIR, 'tests', 'resources', 'signature') -MSG_FILE = os.path.join(RESOURCES_DIR, 'manifest.mf') +MSG_FILE = os.path.join(RESOURCES_DIR, 'manifest.mf') CERT_FILE = os.path.join(RESOURCES_DIR, 'test.crt') -KEY_FILE = os.path.join(RESOURCES_DIR, 'test.key') +KEY_FILE = os.path.join(RESOURCES_DIR, 'test.key') CONTENT = b"needToBeHashed" SHA256 = "20a480339aa4371099f9503511dcc5a8051ce3884846678ced5611ec64bbfc9c" SHA512 = "dbed8672e752d51d0c7ca42050f67faf1534e58470bba96e787df5c4cf6a4f8ecf7ad45fb9307adbc5b9dec8432627d86b3eb1d3d43ee9c5e93f754ff2825320" + def test_cal_file_hash(tmpdir): p = tmpdir.join("file_to_hash.txt") p.write(CONTENT) assert SHA512 == utils.cal_file_hash("", str(p), 'SHA512') assert SHA256 == utils.cal_file_hash(p.dirname, p.basename, 'sha256') + def test_cal_file_hash_remote(mocker): class FakeRequest(object): def __init__(self, *args): @@ -46,6 +48,7 @@ def test_cal_file_hash_remote(mocker): mocker.patch('requests.get', new=FakeRequest) assert SHA256 == utils.cal_file_hash("", "http://fake", 'sha256') + def test_sign_verify_pairwise(): cms = utils.sign(MSG_FILE, CERT_FILE, KEY_FILE) # We can't examine the exact content of cms because it contains timestamp @@ -56,70 +59,61 @@ def test_sign_verify_pairwise(): def test_verify_bad(tmpdir): cms = utils.sign(MSG_FILE, CERT_FILE, KEY_FILE) - p = tmpdir.join("file_msg.txt") p.write("BAD") - with pytest.raises(subprocess.CalledProcessError): utils.verify(str(p), CERT_FILE, cms, no_verify_cert=True) -CHECK_FILE_CASES = [ - { - 'negative': False, - 'params': {'root': RESOURCES_DIR, - 'entry': 'test.key', - 'msg': '', - 'check_for_non': False, - 'check_dir': False, - } - }, - { - 'negative': False, - 'params': {'root': RESOURCES_DIR, - 'entry': 'non-existing-file', - 'msg': '', - 'check_for_non': True, - 'check_dir': False, - } - }, - { - 'negative': True, - 'params': {'root': RESOURCES_DIR, - 'entry': 'non-existing-file', - 'msg': '', - 'check_for_non': False, - 'check_dir': False, - } - }, - { - 'negative': False, - 'params': {'root': ROOT_DIR, - 'entry': 'tests', - 'msg': '', - 'check_for_non': False, - 'check_dir': True, - } - }, - { - 'negative': False, - 'params': {'root': ROOT_DIR, - 'entry': 'non-existing-dir', - 'msg': '', - 'check_for_non': True, - 'check_dir': True, - } - }, - { - 'negative': True, - 'params': {'root': ROOT_DIR, - 'entry': 'non-existing-dir', - 'msg': '', - 'check_for_non': False, - 'check_dir': True, - } - }, - ] +CHECK_FILE_CASES = [{'negative': False, + 'params': {'root': RESOURCES_DIR, + 'entry': 'test.key', + 'msg': '', + 'check_for_non': False, + 'check_dir': False, + }, + }, + {'negative': False, + 'params': {'root': RESOURCES_DIR, + 'entry': 'non-existing-file', + 'msg': '', + 'check_for_non': True, + 'check_dir': False, + } + }, + {'negative': True, + 'params': {'root': RESOURCES_DIR, + 'entry': 'non-existing-file', + 'msg': '', + 'check_for_non': False, + 'check_dir': False, + } + }, + {'negative': False, + 'params': {'root': ROOT_DIR, + 'entry': 'tests', + 'msg': '', + 'check_for_non': False, + 'check_dir': True, + } + }, + {'negative': False, + 'params': {'root': ROOT_DIR, + 'entry': 'non-existing-dir', + 'msg': '', + 'check_for_non': True, + 'check_dir': True, + } + }, + {'negative': True, + 'params': {'root': ROOT_DIR, + 'entry': 'non-existing-dir', + 'msg': '', + 'check_for_non': False, + 'check_dir': True, + } + }, + ] def test_check_file_dir(): |