|
41 | 41 | Metadata, |
42 | 42 | MetaFile, |
43 | 43 | Root, |
| 44 | + RootVerificationResult, |
44 | 45 | Signature, |
45 | 46 | Snapshot, |
46 | 47 | SuccinctRoles, |
47 | 48 | TargetFile, |
48 | 49 | Targets, |
49 | 50 | Timestamp, |
| 51 | + VerificationResult, |
50 | 52 | ) |
51 | 53 | from tuf.api.serialization import DeserializationError, SerializationError |
52 | 54 | from tuf.api.serialization.json import JSONSerializer |
@@ -470,6 +472,47 @@ def test_signed_verify_delegate(self) -> None: |
470 | 472 | Snapshot.type, snapshot_md.signed_bytes, snapshot_md.signatures |
471 | 473 | ) |
472 | 474 |
|
| 475 | + def test_verification_result(self) -> None: |
| 476 | + vr = VerificationResult(3, {"a": None}, {"b": None}) |
| 477 | + self.assertEqual(vr.missing, 2) |
| 478 | + self.assertFalse(vr.verified) |
| 479 | + self.assertFalse(vr) |
| 480 | + |
| 481 | + # Add a signature |
| 482 | + vr.signed["c"] = None |
| 483 | + self.assertEqual(vr.missing, 1) |
| 484 | + self.assertFalse(vr.verified) |
| 485 | + self.assertFalse(vr) |
| 486 | + |
| 487 | + # Add last missing signature |
| 488 | + vr.signed["d"] = None |
| 489 | + self.assertEqual(vr.missing, 0) |
| 490 | + self.assertTrue(vr.verified) |
| 491 | + self.assertTrue(vr) |
| 492 | + |
| 493 | + # Add one more signature |
| 494 | + vr.signed["e"] = None |
| 495 | + self.assertEqual(vr.missing, 0) |
| 496 | + self.assertTrue(vr.verified) |
| 497 | + self.assertTrue(vr) |
| 498 | + |
| 499 | + def test_root_verification_result(self) -> None: |
| 500 | + vr1 = VerificationResult(3, {"a": None}, {"b": None}) |
| 501 | + vr2 = VerificationResult(1, {"c": None}, {"b": None}) |
| 502 | + |
| 503 | + vr = RootVerificationResult(vr1, vr2) |
| 504 | + self.assertEqual(vr.signed, {"a": None, "c": None}) |
| 505 | + self.assertEqual(vr.unsigned, {"b": None}) |
| 506 | + self.assertFalse(vr.verified) |
| 507 | + self.assertFalse(vr) |
| 508 | + |
| 509 | + vr1.signed["c"] = None |
| 510 | + vr1.signed["f"] = None |
| 511 | + self.assertEqual(vr.signed, {"a": None, "c": None, "f": None}) |
| 512 | + self.assertEqual(vr.unsigned, {"b": None}) |
| 513 | + self.assertTrue(vr.verified) |
| 514 | + self.assertTrue(vr) |
| 515 | + |
473 | 516 | def test_signed_get_verification_result(self) -> None: |
474 | 517 | # Setup: Load test metadata and keys |
475 | 518 | root_path = os.path.join(self.repo_dir, "metadata", "root.json") |
|
0 commit comments