Update the unit tests affected by the change to the 'expires' format.

This commit is contained in:
Vladimir Diaz 2014-04-15 12:53:46 -04:00
parent 1935b1de2b
commit b6cd82d75c
5 changed files with 58 additions and 48 deletions

View file

@ -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'}}},

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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