@@ -33,33 +33,34 @@ pub struct VerifiedDigests {
33
33
}
34
34
35
35
#[ derive( PartialEq , Debug ) ]
36
- pub ( crate ) struct InvalidImmutableFiles {
36
+ pub ( crate ) struct ImmutableFilesNotVerified {
37
37
pub tampered_files : Vec < ImmutableFileName > ,
38
38
pub non_verifiable_files : Vec < ImmutableFileName > ,
39
39
}
40
40
41
41
impl VerifiedDigests {
42
- pub ( crate ) fn list_tampered_immutable_files (
42
+ pub ( crate ) fn list_immutable_files_not_verified (
43
43
& self ,
44
- computed_digests : & BTreeMap < ImmutableFileName , HexEncodedDigest > ,
45
- ) -> MithrilResult < InvalidImmutableFiles > {
44
+ computed_digests : & BTreeMap < ImmutableFile , HexEncodedDigest > ,
45
+ ) -> ImmutableFilesNotVerified {
46
46
let mut tampered_files = vec ! [ ] ;
47
47
let mut non_verifiable_files = vec ! [ ] ;
48
48
49
- computed_digests. iter ( ) . for_each ( |( immutable_file_name, digest) | {
50
- if let Some ( verified_digest) = self . digests . get ( immutable_file_name) {
49
+ computed_digests. iter ( ) . for_each ( |( immutable_file, digest) | {
50
+ let immutable_file_name_to_verify = immutable_file. filename . clone ( ) ;
51
+ if let Some ( verified_digest) = self . digests . get ( & immutable_file_name_to_verify) {
51
52
if verified_digest != digest {
52
- tampered_files. push ( immutable_file_name . clone ( ) ) ;
53
+ tampered_files. push ( immutable_file_name_to_verify ) ;
53
54
}
54
55
} else {
55
- non_verifiable_files. push ( immutable_file_name . clone ( ) ) ;
56
+ non_verifiable_files. push ( immutable_file_name_to_verify ) ;
56
57
}
57
58
} ) ;
58
59
59
- Ok ( InvalidImmutableFiles {
60
+ ImmutableFilesNotVerified {
60
61
tampered_files,
61
62
non_verifiable_files,
62
- } )
63
+ }
63
64
}
64
65
}
65
66
@@ -242,15 +243,23 @@ mod tests {
242
243
243
244
use super :: * ;
244
245
245
- mod list_tampered_immutable_files {
246
+ mod list_immutable_files_not_verified {
246
247
247
248
use super :: * ;
248
249
250
+ fn fake_immutable ( filename : & str ) -> ImmutableFile {
251
+ ImmutableFile {
252
+ path : PathBuf :: from ( "whatever" ) ,
253
+ number : 1 ,
254
+ filename : filename. to_string ( ) ,
255
+ }
256
+ }
257
+
249
258
#[ test]
250
259
fn should_return_empty_list_when_no_tampered_files ( ) {
251
260
let digests_to_verify = BTreeMap :: from ( [
252
- ( "00001.chunk" . to_string ( ) , "digest-1" . to_string ( ) ) ,
253
- ( "00002.chunk" . to_string ( ) , "digest-2" . to_string ( ) ) ,
261
+ ( fake_immutable ( "00001.chunk" ) , "digest-1" . to_string ( ) ) ,
262
+ ( fake_immutable ( "00002.chunk" ) , "digest-2" . to_string ( ) ) ,
254
263
] ) ;
255
264
256
265
let verified_digests = VerifiedDigests {
@@ -261,13 +270,12 @@ mod tests {
261
270
merkle_tree : MKTree :: new ( & [ "whatever" ] ) . unwrap ( ) ,
262
271
} ;
263
272
264
- let invalid_files = verified_digests
265
- . list_tampered_immutable_files ( & digests_to_verify)
266
- . unwrap ( ) ;
273
+ let invalid_files =
274
+ verified_digests. list_immutable_files_not_verified ( & digests_to_verify) ;
267
275
268
276
assert_eq ! (
269
277
invalid_files,
270
- InvalidImmutableFiles {
278
+ ImmutableFilesNotVerified {
271
279
tampered_files: vec![ ] ,
272
280
non_verifiable_files: vec![ ] ,
273
281
}
@@ -277,8 +285,8 @@ mod tests {
277
285
#[ test]
278
286
fn should_return_list_with_tampered_files ( ) {
279
287
let digests_to_verify = BTreeMap :: from ( [
280
- ( "00001.chunk" . to_string ( ) , "digest-1" . to_string ( ) ) ,
281
- ( "00002.chunk" . to_string ( ) , "digest-2" . to_string ( ) ) ,
288
+ ( fake_immutable ( "00001.chunk" ) , "digest-1" . to_string ( ) ) ,
289
+ ( fake_immutable ( "00002.chunk" ) , "digest-2" . to_string ( ) ) ,
282
290
] ) ;
283
291
284
292
let verified_digests = VerifiedDigests {
@@ -289,13 +297,12 @@ mod tests {
289
297
merkle_tree : MKTree :: new ( & [ "whatever" ] ) . unwrap ( ) ,
290
298
} ;
291
299
292
- let invalid_files = verified_digests
293
- . list_tampered_immutable_files ( & digests_to_verify)
294
- . unwrap ( ) ;
300
+ let invalid_files =
301
+ verified_digests. list_immutable_files_not_verified ( & digests_to_verify) ;
295
302
296
303
assert_eq ! (
297
304
invalid_files,
298
- InvalidImmutableFiles {
305
+ ImmutableFilesNotVerified {
299
306
tampered_files: vec![ "00002.chunk" . to_string( ) ] ,
300
307
non_verifiable_files: vec![ ] ,
301
308
}
@@ -305,22 +312,24 @@ mod tests {
305
312
#[ test]
306
313
fn should_return_list_with_non_verifiable ( ) {
307
314
let digests_to_verify = BTreeMap :: from ( [
308
- ( "00001.chunk" . to_string ( ) , "digest-1" . to_string ( ) ) ,
309
- ( "00002.not.verifiable" . to_string ( ) , "digest-2" . to_string ( ) ) ,
315
+ ( fake_immutable ( "00001.chunk" ) , "digest-1" . to_string ( ) ) ,
316
+ (
317
+ fake_immutable ( "00002.not.verifiable" ) ,
318
+ "digest-2" . to_string ( ) ,
319
+ ) ,
310
320
] ) ;
311
321
312
322
let verified_digests = VerifiedDigests {
313
323
digests : BTreeMap :: from ( [ ( "00001.chunk" . to_string ( ) , "digest-1" . to_string ( ) ) ] ) ,
314
324
merkle_tree : MKTree :: new ( & [ "whatever" ] ) . unwrap ( ) ,
315
325
} ;
316
326
317
- let invalid_files = verified_digests
318
- . list_tampered_immutable_files ( & digests_to_verify)
319
- . unwrap ( ) ;
327
+ let invalid_files =
328
+ verified_digests. list_immutable_files_not_verified ( & digests_to_verify) ;
320
329
321
330
assert_eq ! (
322
331
invalid_files,
323
- InvalidImmutableFiles {
332
+ ImmutableFilesNotVerified {
324
333
tampered_files: vec![ ] ,
325
334
non_verifiable_files: vec![ "00002.not.verifiable" . to_string( ) ] ,
326
335
}
0 commit comments