Skip to content

Commit 2738883

Browse files
committed
Update test_repository_lib and test_formats
Modify test cases which use unsigned metadata. Update test_sign_metadata to check for empty key list. Signed-off-by: Teodora Sechkova <[email protected]>
1 parent e0086d6 commit 2738883

File tree

2 files changed

+30
-27
lines changed

2 files changed

+30
-27
lines changed

tests/test_formats.py

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@
3131
import unittest
3232
import datetime
3333
import sys
34+
import os
3435

3536
import tuf
3637
import tuf.formats
3738

3839
import utils
3940

4041
import securesystemslib
42+
import securesystemslib.util
4143
import six
4244

4345

@@ -778,20 +780,10 @@ def test_parse_base64(self):
778780

779781
def test_make_signable(self):
780782
# Test conditions for expected make_signable() behavior.
781-
root = {'_type': 'root',
782-
'spec_version': '1.0.0',
783-
'version': 8,
784-
'consistent_snapshot': False,
785-
'expires': '1985-10-21T13:20:00Z',
786-
'keys': {'123abc': {'keytype': 'rsa',
787-
'scheme': 'rsassa-pss-sha256',
788-
'keyval': {'public': 'pubkey',
789-
'private': 'privkey'}}},
790-
'roles': {'root': {'keyids': ['123abc'],
791-
'threshold': 1,
792-
'paths': ['path1/', 'path2']}}}
793-
794783
SIGNABLE_SCHEMA = tuf.formats.SIGNABLE_SCHEMA
784+
root_file = os.path.join('repository_data', 'repository', 'metadata',
785+
'root.json')
786+
root = securesystemslib.util.load_json_file(root_file)
795787
self.assertTrue(SIGNABLE_SCHEMA.matches(tuf.formats.make_signable(root)))
796788
signable = tuf.formats.make_signable(root)
797789
self.assertEqual('root', tuf.formats.check_signable_object_format(signable))
@@ -902,19 +894,9 @@ def test_expected_meta_rolename(self):
902894

903895
def test_check_signable_object_format(self):
904896
# Test condition for a valid argument.
905-
root = {'_type': 'root',
906-
'spec_version': '1.0.0',
907-
'version': 8,
908-
'consistent_snapshot': False,
909-
'expires': '1985-10-21T13:20:00Z',
910-
'keys': {'123abc': {'keytype': 'rsa',
911-
'scheme': 'rsassa-pss-sha256',
912-
'keyval': {'public': 'pubkey',
913-
'private': 'privkey'}}},
914-
'roles': {'root': {'keyids': ['123abc'],
915-
'threshold': 1,
916-
'paths': ['path1/', 'path2']}}}
917-
897+
root_file = os.path.join('repository_data', 'repository', 'metadata',
898+
'root.json')
899+
root = securesystemslib.util.load_json_file(root_file)
918900
root = tuf.formats.make_signable(root)
919901
self.assertEqual('root', tuf.formats.check_signable_object_format(root))
920902

tests/test_repository_lib.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,8 @@ def test__generate_and_write_metadata(self):
885885
# (specifically 'snapshot') and keys to be available in 'tuf.roledb'.
886886
tuf.roledb.create_roledb_from_root_metadata(root_signable['signed'],
887887
repository_name)
888+
tuf.keydb.create_keydb_from_root_metadata(root_signable['signed'],
889+
repository_name)
888890
temporary_directory = tempfile.mkdtemp(dir=self.temporary_directory)
889891
targets_directory = os.path.join(temporary_directory, 'targets')
890892
os.mkdir(targets_directory)
@@ -897,6 +899,14 @@ def test__generate_and_write_metadata(self):
897899
securesystemslib.util.ensure_parent_dir(obsolete_metadata)
898900
shutil.copyfile(targets_metadata, obsolete_metadata)
899901

902+
keystore_path = os.path.join('repository_data', 'keystore')
903+
targets_private_keypath = os.path.join(keystore_path, 'targets_key')
904+
targets_private_key = repo_lib.import_ed25519_privatekey_from_file(targets_private_keypath,
905+
'password')
906+
tuf.keydb.remove_key(targets_private_key['keyid'],
907+
repository_name=repository_name)
908+
tuf.keydb.add_key(targets_private_key, repository_name=repository_name)
909+
900910
# Verify that obsolete metadata (a metadata file exists on disk, but the
901911
# role is unavailable in 'tuf.roledb'). First add the obsolete
902912
# role to 'tuf.roledb' so that its metadata file can be written to disk.
@@ -906,6 +916,7 @@ def test__generate_and_write_metadata(self):
906916
tuf.formats.unix_timestamp_to_datetime(int(time.time() + 86400))
907917
expiration = expiration.isoformat() + 'Z'
908918
targets_roleinfo['expires'] = expiration
919+
targets_roleinfo['signing_keyids'] = targets_roleinfo['keyids']
909920
tuf.roledb.add_role('obsolete_role', targets_roleinfo,
910921
repository_name=repository_name)
911922

@@ -1004,14 +1015,24 @@ def test__load_top_level_metadata(self):
10041015
roleinfo['version'] = 1
10051016
tuf.roledb.add_role('role1', roleinfo, repository_name)
10061017

1018+
keystore_path = os.path.join('repository_data', 'keystore')
1019+
root_privkey_path = os.path.join(keystore_path, 'root_key')
1020+
targets_privkey_path = os.path.join(keystore_path, 'targets_key')
1021+
snapshot_privkey_path = os.path.join(keystore_path, 'snapshot_key')
1022+
timestamp_privkey_path = os.path.join(keystore_path, 'timestamp_key')
1023+
1024+
repository.root.load_signing_key(repo_lib.import_rsa_privatekey_from_file(root_privkey_path, 'password'))
1025+
repository.targets.load_signing_key(repo_lib.import_ed25519_privatekey_from_file(targets_privkey_path, 'password'))
1026+
repository.snapshot.load_signing_key(repo_lib.import_ed25519_privatekey_from_file(snapshot_privkey_path, 'password'))
1027+
repository.timestamp.load_signing_key(repo_lib.import_ed25519_privatekey_from_file(timestamp_privkey_path, 'password'))
10071028

10081029
# Partially write all top-level roles (we increase the threshold of each
10091030
# top-level role so that they are flagged as partially written.
10101031
repository.root.threshold = repository.root.threshold + 1
10111032
repository.snapshot.threshold = repository.snapshot.threshold + 1
10121033
repository.targets.threshold = repository.targets.threshold + 1
10131034
repository.timestamp.threshold = repository.timestamp.threshold + 1
1014-
repository.write('root', )
1035+
repository.write('root')
10151036
repository.write('snapshot')
10161037
repository.write('targets')
10171038
repository.write('timestamp')

0 commit comments

Comments
 (0)