mirror of
https://github.com/theupdateframework/python-tuf
synced 2026-05-24 10:08:28 +00:00
Update the unit tests affected by the change to the 'expires' format.
This commit is contained in:
parent
1935b1de2b
commit
b6cd82d75c
5 changed files with 58 additions and 48 deletions
|
|
@ -18,6 +18,7 @@
|
|||
"""
|
||||
|
||||
import unittest
|
||||
import datetime
|
||||
|
||||
import tuf
|
||||
import tuf.formats
|
||||
|
|
@ -39,7 +40,7 @@ def tearDown(self):
|
|||
def test_schemas(self):
|
||||
# Test conditions for valid schemas.
|
||||
valid_schemas = {
|
||||
'TIME_SCHEMA': (tuf.formats.TIME_SCHEMA, '2012-10-14 06:42:12 UTC'),
|
||||
'UNIX_TIMESTAMP_SCHEMA': (tuf.formats.UNIX_TIMESTAMP_SCHEMA, 499137720),
|
||||
|
||||
'HASH_SCHEMA': (tuf.formats.HASH_SCHEMA, 'A4582BCF323BCEF'),
|
||||
|
||||
|
|
@ -53,7 +54,7 @@ def test_schemas(self):
|
|||
'KEYIDS_SCHEMA': (tuf.formats.KEYIDS_SCHEMA,
|
||||
['123456789abcdef', '123456789abcdef']),
|
||||
|
||||
'SIG_METHOD_SCHEMA': (tuf.formats.SIG_METHOD_SCHEMA, 'evp'),
|
||||
'SIG_METHOD_SCHEMA': (tuf.formats.SIG_METHOD_SCHEMA, 'ed25519'),
|
||||
|
||||
'RELPATH_SCHEMA': (tuf.formats.RELPATH_SCHEMA, 'metadata/root/'),
|
||||
|
||||
|
|
@ -184,7 +185,7 @@ def test_schemas(self):
|
|||
{'_type': 'Root',
|
||||
'version': 8,
|
||||
'consistent_snapshot': False,
|
||||
'expires': '2012-10-16 06:42:12 UTC',
|
||||
'expires': 499137720,
|
||||
'keys': {'123abc': {'keytype': 'rsa',
|
||||
'keyval': {'public': 'pubkey',
|
||||
'private': 'privkey'}}},
|
||||
|
|
@ -195,7 +196,7 @@ def test_schemas(self):
|
|||
'TARGETS_SCHEMA': (tuf.formats.TARGETS_SCHEMA,
|
||||
{'_type': 'Targets',
|
||||
'version': 8,
|
||||
'expires': '2012-10-16 06:42:12 UTC',
|
||||
'expires': 499137720,
|
||||
'targets': {'metadata/targets.json': {'length': 1024,
|
||||
'hashes': {'sha256': 'ABCD123'},
|
||||
'custom': {'type': 'metadata'}}},
|
||||
|
|
@ -209,7 +210,7 @@ def test_schemas(self):
|
|||
'SNAPSHOT_SCHEMA': (tuf.formats.SNAPSHOT_SCHEMA,
|
||||
{'_type': 'Snapshot',
|
||||
'version': 8,
|
||||
'expires': '2012-10-16 06:42:12 UTC',
|
||||
'expires': 499137720,
|
||||
'meta': {'metadata/snapshot.json': {'length': 1024,
|
||||
'hashes': {'sha256': 'ABCD123'},
|
||||
'custom': {'type': 'metadata'}}}}),
|
||||
|
|
@ -217,7 +218,7 @@ def test_schemas(self):
|
|||
'TIMESTAMP_SCHEMA': (tuf.formats.TIMESTAMP_SCHEMA,
|
||||
{'_type': 'Timestamp',
|
||||
'version': 8,
|
||||
'expires': '2012-10-16 06:42:12 UTC',
|
||||
'expires': 499137720,
|
||||
'meta': {'metadata/timestamp.json': {'length': 1024,
|
||||
'hashes': {'sha256': 'ABCD123'},
|
||||
'custom': {'type': 'metadata'}}}}),
|
||||
|
|
@ -239,7 +240,7 @@ def test_schemas(self):
|
|||
'MIRRORLIST_SCHEMA': (tuf.formats.MIRRORLIST_SCHEMA,
|
||||
{'_type': 'Mirrors',
|
||||
'version': 8,
|
||||
'expires': '2012-10-16 06:42:12 UTC',
|
||||
'expires': 499137720,
|
||||
'mirrors': [{'url_prefix': 'http://localhost:8001',
|
||||
'metadata_path': 'metadata/',
|
||||
'targets_path': 'targets/',
|
||||
|
|
@ -289,7 +290,7 @@ def __init__(self, version, expires):
|
|||
def test_TimestampFile(self):
|
||||
# Test conditions for valid instances of 'tuf.formats.TimestampFile'.
|
||||
version = 8
|
||||
expires = '2012-10-16 06:42:12 UTC'
|
||||
expires = 499137720
|
||||
filedict = {'metadata/timestamp.json': {'length': 1024,
|
||||
'hashes': {'sha256': 'ABCD123'},
|
||||
'custom': {'type': 'metadata'}}}
|
||||
|
|
@ -323,7 +324,7 @@ def test_RootFile(self):
|
|||
# Test conditions for valid instances of 'tuf.formats.RootFile'.
|
||||
version = 8
|
||||
consistent_snapshot = False
|
||||
expires = '2018-10-16 06:42:12 UTC'
|
||||
expires = 499137720
|
||||
keydict = {'123abc': {'keytype': 'rsa',
|
||||
'keyval': {'public': 'pubkey',
|
||||
'private': 'privkey'}}}
|
||||
|
|
@ -373,7 +374,7 @@ def test_RootFile(self):
|
|||
def test_SnapshotFile(self):
|
||||
# Test conditions for valid instances of 'tuf.formats.SnapshotFile'.
|
||||
version = 8
|
||||
expires = '2012-10-16 06:42:12 UTC'
|
||||
expires = 499137720
|
||||
filedict = {'metadata/snapshot.json': {'length': 1024,
|
||||
'hashes': {'sha256': 'ABCD123'},
|
||||
'custom': {'type': 'metadata'}}}
|
||||
|
|
@ -405,7 +406,7 @@ def test_SnapshotFile(self):
|
|||
def test_TargetsFile(self):
|
||||
# Test conditions for valid instances of 'tuf.formats.TargetsFile'.
|
||||
version = 8
|
||||
expires = '2012-10-16 06:42:12 UTC'
|
||||
expires = 499137720
|
||||
filedict = {'metadata/targets.json': {'length': 1024,
|
||||
'hashes': {'sha256': 'ABCD123'},
|
||||
'custom': {'type': 'metadata'}}}
|
||||
|
|
@ -444,27 +445,30 @@ def test_TargetsFile(self):
|
|||
|
||||
|
||||
|
||||
def test_format_time(self):
|
||||
def test_unix_timestamp_to_datetime(self):
|
||||
# Test conditions for valid arguments.
|
||||
TIME_SCHEMA = tuf.formats.TIME_SCHEMA
|
||||
self.assertTrue(TIME_SCHEMA.matches(tuf.formats.format_time(499137720)))
|
||||
self.assertEqual('1985-10-26 01:22:00 UTC', tuf.formats.format_time(499137720))
|
||||
UNIX_TIMESTAMP_SCHEMA = tuf.formats.UNIX_TIMESTAMP_SCHEMA
|
||||
self.assertTrue(datetime.datetime, tuf.formats.unix_timestamp_to_datetime(499137720))
|
||||
datetime_object = datetime.datetime(1985, 10, 26, 01, 22)
|
||||
self.assertEqual(datetime_object, tuf.formats.unix_timestamp_to_datetime(499137720))
|
||||
|
||||
# Test conditions for invalid arguments.
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.format_time, 'bad')
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.format_time, 1000000000000000000000)
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.format_time, ['5'])
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.unix_timestamp_to_datetime, 'bad')
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.unix_timestamp_to_datetime, 1000000000000000000000)
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.unix_timestamp_to_datetime, -1)
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.unix_timestamp_to_datetime, ['5'])
|
||||
|
||||
|
||||
|
||||
def test_parse_time(self):
|
||||
def test_datetime_to_unix_timestamp(self):
|
||||
# Test conditions for valid arguments.
|
||||
self.assertEqual(499137600, tuf.formats.parse_time('1985-10-26 01:20:00 UTC'))
|
||||
datetime_object = datetime.datetime(2015, 10, 21, 19, 28)
|
||||
self.assertEqual(1445455680, tuf.formats.datetime_to_unix_timestamp(datetime_object))
|
||||
|
||||
# Test conditions for invalid arguments.
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.parse_time, 'bad')
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.parse_time, 1000000000000000000000)
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.parse_time, ['1'])
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.datetime_to_unix_timestamp, 'bad')
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.datetime_to_unix_timestamp, 1000000000000000000000)
|
||||
self.assertRaises(tuf.FormatError, tuf.formats.datetime_to_unix_timestamp, ['1'])
|
||||
|
||||
|
||||
|
||||
|
|
@ -498,7 +502,7 @@ def test_make_signable(self):
|
|||
root = {'_type': 'Root',
|
||||
'version': 8,
|
||||
'consistent_snapshot': False,
|
||||
'expires': '2012-10-16 06:42:12 UTC',
|
||||
'expires': 499137720,
|
||||
'keys': {'123abc': {'keytype': 'rsa',
|
||||
'keyval': {'public': 'pubkey',
|
||||
'private': 'privkey'}}},
|
||||
|
|
@ -625,7 +629,7 @@ def test_check_signable_object_format(self):
|
|||
root = {'_type': 'Root',
|
||||
'version': 8,
|
||||
'consistent_snapshot': False,
|
||||
'expires': '2012-10-16 06:42:12 UTC',
|
||||
'expires': 499137720,
|
||||
'keys': {'123abc': {'keytype': 'rsa',
|
||||
'keyval': {'public': 'pubkey',
|
||||
'private': 'privkey'}}},
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ def test_create_keydb_from_root_metadata(self):
|
|||
'Targets': {'keyids': [keyid2], 'threshold': 1}}
|
||||
version = 8
|
||||
consistent_snapshot = False
|
||||
expires = '2012-10-16 06:42:12 UTC'
|
||||
expires = 499137720
|
||||
|
||||
root_metadata = tuf.formats.RootFile.make_metadata(version,
|
||||
expires,
|
||||
|
|
@ -208,7 +208,7 @@ def test_create_keydb_from_root_metadata(self):
|
|||
rsakey3['keytype'] = 'bad_keytype'
|
||||
keydict[keyid3] = rsakey3
|
||||
version = 8
|
||||
expires = '2012-10-16 06:42:12 UTC'
|
||||
expires = 499137720
|
||||
|
||||
root_metadata = tuf.formats.RootFile.make_metadata(version,
|
||||
expires,
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
import os
|
||||
import time
|
||||
import datetime
|
||||
import unittest
|
||||
import logging
|
||||
import tempfile
|
||||
|
|
@ -225,7 +226,7 @@ def test_write_and_write_partial(self):
|
|||
# is made to a role.
|
||||
repo_tool.load_repository(repository_directory)
|
||||
|
||||
repository.timestamp.expiration = '2084-01-01 12:00:00'
|
||||
repository.timestamp.expiration = datetime.datetime(2030, 01, 01, 12, 00)
|
||||
self.assertRaises(tuf.UnsignedMetadataError, repository.write)
|
||||
|
||||
# Verify that a write_partial() is allowed.
|
||||
|
|
@ -300,7 +301,7 @@ def __init__(self):
|
|||
self._rolename = 'metadata_role'
|
||||
|
||||
# Expire in 86400 seconds (1 day).
|
||||
expiration = tuf.formats.format_time(time.time() + 86400)
|
||||
expiration = int(time.time() + 86400)
|
||||
|
||||
roleinfo = {'keyids': [], 'signing_keyids': [], 'threshold': 1,
|
||||
'signatures': [], 'version': 0,
|
||||
|
|
@ -354,31 +355,35 @@ def test_threshold(self):
|
|||
def test_expiration(self):
|
||||
# Test expiration getter.
|
||||
expiration = self.metadata.expiration
|
||||
self.assertTrue(tuf.formats.TIME_SCHEMA.matches(expiration))
|
||||
self.assertTrue(isinstance(expiration, datetime.datetime))
|
||||
|
||||
# Test expiration setter.
|
||||
self.metadata.expiration = '2088-01-01 12:00:00'
|
||||
self.metadata.expiration = datetime.datetime(2030, 01, 01, 12, 00)
|
||||
expiration = self.metadata.expiration
|
||||
self.assertTrue(tuf.formats.TIME_SCHEMA.matches(expiration))
|
||||
self.assertTrue(isinstance(expiration, datetime.datetime))
|
||||
|
||||
|
||||
# Test improperly formatted datetime.
|
||||
try:
|
||||
self.metadata.expiration = '3'
|
||||
|
||||
except tuf.FormatError:
|
||||
pass
|
||||
|
||||
else:
|
||||
self.fail('Setter failed to detect improperly formatted datetime.')
|
||||
|
||||
|
||||
# Test invalid argument (i.e., expiration has already expired.)
|
||||
expired_datetime = tuf.formats.format_time(time.time() - 1)
|
||||
expired_datetime = tuf.formats.unix_timestamp_to_datetime(int(time.time() - 1))
|
||||
try:
|
||||
self.metadata.expiration = expired_datetime
|
||||
except tuf.FormatError:
|
||||
|
||||
except tuf.Error:
|
||||
pass
|
||||
|
||||
else:
|
||||
self.fail('Setter failted to detect an expired datetime.')
|
||||
self.fail('Setter failed to detect an expired datetime.')
|
||||
|
||||
|
||||
|
||||
|
|
@ -1525,24 +1530,24 @@ def test_generate_root_metadata(self):
|
|||
tuf.roledb.create_roledb_from_root_metadata(root_signable['signed'])
|
||||
tuf.keydb.create_keydb_from_root_metadata(root_signable['signed'])
|
||||
|
||||
root_metadata = repo_tool.generate_root_metadata(1, '2088-01-01 12:00:00 UTC',
|
||||
root_metadata = repo_tool.generate_root_metadata(1, 189345000,
|
||||
consistent_snapshot=False)
|
||||
self.assertTrue(tuf.formats.ROOT_SCHEMA.matches(root_metadata))
|
||||
|
||||
|
||||
# Test improperly formatted arguments.
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_root_metadata,
|
||||
'3', '2088-01-01 12:00:00 UTC', False)
|
||||
'3', 189345000, False)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_root_metadata,
|
||||
1, 3, False)
|
||||
1, '3', False)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_root_metadata,
|
||||
1, '2088-01-01 12:00:00 UTC', 3)
|
||||
1, 189345000, 3)
|
||||
|
||||
# Test for missing required roles and keys.
|
||||
tuf.roledb.clear_roledb()
|
||||
tuf.keydb.clear_keydb()
|
||||
self.assertRaises(tuf.Error, repo_tool.generate_root_metadata,
|
||||
1, '2088-01-01 12:00:00 UTC', False)
|
||||
1, 189345000, False)
|
||||
|
||||
|
||||
|
||||
|
|
@ -1558,7 +1563,8 @@ def test_generate_targets_metadata(self):
|
|||
|
||||
# Set valid generate_targets_metadata() arguments.
|
||||
version = 1
|
||||
expiration_date = '2088-01-01 12:00:00 UTC'
|
||||
datetime_object = datetime.datetime(2030, 01, 01, 12, 00)
|
||||
expiration_date = tuf.formats.datetime_to_unix_timestamp(datetime_object)
|
||||
target_files = ['file.txt']
|
||||
|
||||
delegations = {"keys": {
|
||||
|
|
@ -1611,7 +1617,7 @@ def test_generate_targets_metadata(self):
|
|||
self.assertRaises(tuf.FormatError, repo_tool.generate_targets_metadata,
|
||||
targets_directory, target_files, '3', expiration_date)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_targets_metadata,
|
||||
targets_directory, target_files, version, 3)
|
||||
targets_directory, target_files, version, '3')
|
||||
|
||||
# Improperly formatted 'delegations' and 'write_consistent_targets'
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_targets_metadata,
|
||||
|
|
@ -1643,7 +1649,7 @@ def test_generate_snapshot_metadata(self):
|
|||
targets_filename = os.path.join(metadata_directory,
|
||||
repo_tool.TARGETS_FILENAME)
|
||||
version = 1
|
||||
expiration_date = '2088-01-01 12:00:00 UTC'
|
||||
expiration_date = 189345000
|
||||
|
||||
snapshot_metadata = \
|
||||
repo_tool.generate_snapshot_metadata(metadata_directory, version,
|
||||
|
|
@ -1661,7 +1667,7 @@ def test_generate_snapshot_metadata(self):
|
|||
metadata_directory, '3', expiration_date,
|
||||
root_filename, targets_filename, consistent_snapshot=False)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_snapshot_metadata,
|
||||
metadata_directory, version, 3,
|
||||
metadata_directory, version, '3',
|
||||
root_filename, targets_filename, consistent_snapshot=False)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_snapshot_metadata,
|
||||
metadata_directory, version, expiration_date,
|
||||
|
|
@ -1689,7 +1695,7 @@ def test_generate_timestamp_metadata(self):
|
|||
|
||||
# Set valid generate_timestamp_metadata() arguments.
|
||||
version = 1
|
||||
expiration_date = '2088-01-01 12:00:00 UTC'
|
||||
expiration_date = 189345000
|
||||
compressions = ['gz']
|
||||
|
||||
snapshot_metadata = \
|
||||
|
|
@ -1704,7 +1710,7 @@ def test_generate_timestamp_metadata(self):
|
|||
self.assertRaises(tuf.FormatError, repo_tool.generate_timestamp_metadata,
|
||||
snapshot_filename, '3', expiration_date, compressions)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_timestamp_metadata,
|
||||
snapshot_filename, version, 3, compressions)
|
||||
snapshot_filename, version, '3', compressions)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_timestamp_metadata,
|
||||
snapshot_filename, version, expiration_date, 3)
|
||||
self.assertRaises(tuf.FormatError, repo_tool.generate_timestamp_metadata,
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ def test_create_roledb_from_root_metadata(self):
|
|||
'targets': {'keyids': [keyid2], 'threshold': 1}}
|
||||
version = 8
|
||||
consistent_snapshot = False
|
||||
expires = '2012-10-16 06:42:12 UTC'
|
||||
expires = 499137720
|
||||
|
||||
root_metadata = tuf.formats.RootFile.make_metadata(version,
|
||||
expires,
|
||||
|
|
|
|||
|
|
@ -465,7 +465,7 @@ def test_2__ensure_not_expired(self):
|
|||
|
||||
# 'tuf.ExpiredMetadataError' should be raised in this next test condition,
|
||||
# because the expiration_date has expired by 10 seconds.
|
||||
expires = tuf.formats.format_time(time.time() - 10)
|
||||
expires = int(time.time() - 10)
|
||||
self.repository_updater.metadata['current']['root']['expires'] = expires
|
||||
|
||||
# Ensure the 'expires' value of the root file is valid by checking the
|
||||
|
|
|
|||
Loading…
Reference in a new issue