1616
1717class TestTrustedMetadataSet (unittest .TestCase ):
1818
19- def test_update (self ):
20- repo_dir = os .path .join (os .getcwd (), 'repository_data' , 'repository' , 'metadata' )
19+ @classmethod
20+ def setUpClass (cls ):
21+ cls .repo_dir = os .path .join (
22+ os .getcwd (), 'repository_data' , 'repository' , 'metadata'
23+ )
24+ cls .metadata = {}
25+ for md in ["root" , "timestamp" , "snapshot" , "targets" , "role1" , "role2" ]:
26+ with open (os .path .join (cls .repo_dir , f"{ md } .json" ), "rb" ) as f :
27+ cls .metadata [md ] = f .read ()
28+
2129
22- with open ( os . path . join ( repo_dir , "root.json" ), "rb" ) as f :
23- trusted_set = TrustedMetadataSet (f . read () )
30+ def test_update ( self ) :
31+ trusted_set = TrustedMetadataSet (self . metadata [ "root" ] )
2432 trusted_set .root_update_finished ()
2533
26- with open (os .path .join (repo_dir , "timestamp.json" ), "rb" ) as f :
27- trusted_set .update_timestamp (f .read ())
28- with open (os .path .join (repo_dir , "snapshot.json" ), "rb" ) as f :
29- trusted_set .update_snapshot (f .read ())
30- with open (os .path .join (repo_dir , "targets.json" ), "rb" ) as f :
31- trusted_set .update_targets (f .read ())
32- with open (os .path .join (repo_dir , "role1.json" ), "rb" ) as f :
33- trusted_set .update_delegated_targets (f .read (), "role1" , "targets" )
34- with open (os .path .join (repo_dir , "role2.json" ), "rb" ) as f :
35- trusted_set .update_delegated_targets (f .read (), "role2" , "role1" )
34+ trusted_set .update_timestamp (self .metadata ["timestamp" ])
35+ trusted_set .update_snapshot (self .metadata ["snapshot" ])
36+ trusted_set .update_targets (self .metadata ["targets" ])
37+ trusted_set .update_delegated_targets (
38+ self .metadata ["role1" ], "role1" , "targets"
39+ )
40+ trusted_set .update_delegated_targets (
41+ self .metadata ["role2" ], "role2" , "role1"
42+ )
3643
3744 def test_out_of_order_ops (self ):
38- repo_dir = os .path .join (os .getcwd (), 'repository_data' , 'repository' , 'metadata' )
39- data = {}
40- for md in ["root" , "timestamp" , "snapshot" , "targets" , "role1" ]:
41- with open (os .path .join (repo_dir , f"{ md } .json" ), "rb" ) as f :
42- data [md ] = f .read ()
43-
44- trusted_set = TrustedMetadataSet (data ["root" ])
45+ trusted_set = TrustedMetadataSet (self .metadata ["root" ])
4546
4647 # Update timestamp before root is finished
4748 with self .assertRaises (RuntimeError ):
48- trusted_set .update_timestamp (data ["timestamp" ])
49+ trusted_set .update_timestamp (self . metadata ["timestamp" ])
4950
5051 trusted_set .root_update_finished ()
5152 with self .assertRaises (RuntimeError ):
5253 trusted_set .root_update_finished ()
5354
5455 # Update snapshot before timestamp
5556 with self .assertRaises (RuntimeError ):
56- trusted_set .update_snapshot (data ["snapshot" ])
57+ trusted_set .update_snapshot (self . metadata ["snapshot" ])
5758
58- trusted_set .update_timestamp (data ["timestamp" ])
59+ trusted_set .update_timestamp (self . metadata ["timestamp" ])
5960
6061 # Update targets before snapshot
6162 with self .assertRaises (RuntimeError ):
62- trusted_set .update_targets (data ["targets" ])
63+ trusted_set .update_targets (self . metadata ["targets" ])
6364
64- trusted_set .update_snapshot (data ["snapshot" ])
65+ trusted_set .update_snapshot (self . metadata ["snapshot" ])
6566
66- #update timestamp after snapshot
67+ # update timestamp after snapshot
6768 with self .assertRaises (RuntimeError ):
68- trusted_set .update_timestamp (data ["timestamp" ])
69+ trusted_set .update_timestamp (self . metadata ["timestamp" ])
6970
7071 # Update delegated targets before targets
7172 with self .assertRaises (RuntimeError ):
72- trusted_set .update_delegated_targets (data ["role1" ], "role1" , "targets" )
73+ trusted_set .update_delegated_targets (
74+ self .metadata ["role1" ], "role1" , "targets"
75+ )
7376
74- trusted_set .update_targets (data ["targets" ])
75- trusted_set .update_delegated_targets (data ["role1" ], "role1" , "targets" )
77+ trusted_set .update_targets (self .metadata ["targets" ])
78+ trusted_set .update_delegated_targets (
79+ self .metadata ["role1" ], "role1" , "targets"
80+ )
7681
77- def test_update_with_invalid_json (self ):
78- repo_dir = os .path .join (os .getcwd (), 'repository_data' , 'repository' , 'metadata' )
79- data = {}
80- for md in ["root" , "timestamp" , "snapshot" , "targets" , "role1" ]:
81- with open (os .path .join (repo_dir , f"{ md } .json" ), "rb" ) as f :
82- data [md ] = f .read ()
82+ trusted_set .update_targets (self .metadata ["targets" ])
83+ trusted_set .update_delegated_targets (
84+ self .metadata ["role1" ], "role1" , "targets"
85+ )
8386
87+ def test_update_with_invalid_json (self ):
8488 # root.json not a json file at all
8589 with self .assertRaises (exceptions .RepositoryError ):
8690 TrustedMetadataSet (b"" )
8791 # root.json is invalid
88- root = Metadata .from_bytes (data ["root" ])
92+ root = Metadata .from_bytes (self . metadata ["root" ])
8993 root .signed .version += 1
9094 with self .assertRaises (exceptions .RepositoryError ):
9195 TrustedMetadataSet (json .dumps (root .to_dict ()).encode ())
9296
93- trusted_set = TrustedMetadataSet (data ["root" ])
97+ trusted_set = TrustedMetadataSet (self . metadata ["root" ])
9498 trusted_set .root_update_finished ()
9599
96100 top_level_md = [
97- (data ["timestamp" ], trusted_set .update_timestamp ),
98- (data ["snapshot" ], trusted_set .update_snapshot ),
99- (data ["targets" ], trusted_set .update_targets ),
101+ (self . metadata ["timestamp" ], trusted_set .update_timestamp ),
102+ (self . metadata ["snapshot" ], trusted_set .update_snapshot ),
103+ (self . metadata ["targets" ], trusted_set .update_targets ),
100104 ]
101105 for metadata , update_func in top_level_md :
102106 # metadata is not json
@@ -110,7 +114,7 @@ def test_update_with_invalid_json(self):
110114
111115 # metadata is of wrong type
112116 with self .assertRaises (exceptions .RepositoryError ):
113- update_func (data ["root" ])
117+ update_func (self . metadata ["root" ])
114118
115119 update_func (metadata )
116120
0 commit comments