From 59358787ebb897f446cb412d137001bc55e97329 Mon Sep 17 00:00:00 2001 From: Vecna Date: Sun, 26 May 2024 12:55:51 -0400 Subject: [PATCH] Break into two tests --- crates/lox-library/src/tests.rs | 92 +++++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 15 deletions(-) diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index d7ee36a..061af14 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -1331,7 +1331,7 @@ fn test_mark_unreachable() { } #[test] -fn test_blockage_migration() { +fn test_blockage_migration_level_3() { let mut th = TestHarness::new(); // Join an untrusted user @@ -1363,22 +1363,84 @@ fn test_blockage_migration() { println!("cred3 = {:?}", cred3); assert!(th.ba.verify_lox(&cred3)); - // If true, level up one more time, causing blockage migration to fail - let migrate_from_level_4 = false; + // Get our bridges + let (id, key) = bridge_table::from_scalar(cred3.bucket).unwrap(); + let encbuckets = th.ba.enc_bridge_table(); + let bucket = + bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets.get(&id).unwrap()).unwrap(); + // We should have a Bridge Reachability credential + assert!(bucket.1.is_some()); - let cred4 = if migrate_from_level_4 { - // Time passes - th.advance_days(56); + // Oh, no! Two of our bridges are blocked! + th.ba.bridge_blocked(&bucket.0[0], &mut th.bdb); + th.ba.bridge_blocked(&bucket.0[2], &mut th.bdb); - // Go up to level 4 - let (_four_perf_stat, cred4) = th.level_up(&cred3); - assert!(scalar_u32(&cred4.trust_level).unwrap() == 4); - println!("cred4 = {:?}", cred4); - assert!(th.ba.verify_lox(&cred4)); - cred4 - } else { - cred3 - }; + println!("spares = {:?}", th.ba.bridge_table.spares); + println!("tmig = {:?}", th.ba.trustup_migration_table.table); + println!("bmig = {:?}", th.ba.blockage_migration_table.table); + println!("openinv = {:?}\n", th.bdb.openinv_buckets); + + // Time passes + th.advance_days(1); + let encbuckets2 = th.ba.enc_bridge_table(); + let bucket2 = + bridge_table::BridgeTable::decrypt_bucket(id, &key, encbuckets2.get(&id).unwrap()).unwrap(); + // We should no longer have a Bridge Reachability credential + assert!(bucket2.1.is_none()); + + // See about getting a Migration credential for the blockage + let (_block_perf_stat, migration) = th.check_blockage(&cred3); + + println!("migration = {:?}", migration); + + // Migrate + let (_four_perf_stat, cred4) = th.blockage_migration(&cred3, &migration); + + println!("cred4 = {:?}", cred4); + assert!(th.ba.verify_lox(&cred4)); +} + +#[test] +fn test_blockage_migration_level_4() { + let mut th = TestHarness::new(); + + // Join an untrusted user + let cred = th.open_invite().1 .0; + + // Time passes + th.advance_days(47); + + // Go up to level 1 + let (_mperf_stat, migcred) = th.trust_promotion(&cred); + let (_perf_stat, cred1) = th.level0_migration(&cred, &migcred); + assert!(scalar_u32(&cred1.trust_level).unwrap() == 1); + + // Time passes + th.advance_days(20); + + // Go up to level 2 + let (_two_perf_stat, cred2) = th.level_up(&cred1); + assert!(scalar_u32(&cred2.trust_level).unwrap() == 2); + println!("cred2 = {:?}", cred2); + assert!(th.ba.verify_lox(&cred2)); + + // Time passes + th.advance_days(29); + + // Go up to level 3 + let (_three_perf_stat, cred3) = th.level_up(&cred2); + assert!(scalar_u32(&cred3.trust_level).unwrap() == 3); + println!("cred3 = {:?}", cred3); + assert!(th.ba.verify_lox(&cred3)); + + // Time passes + th.advance_days(56); + + // Go up to level 4 + let (_four_perf_stat, cred4) = th.level_up(&cred3); + assert!(scalar_u32(&cred4.trust_level).unwrap() == 4); + println!("cred4 = {:?}", cred4); + assert!(th.ba.verify_lox(&cred4)); // Get our bridges let (id, key) = bridge_table::from_scalar(cred4.bucket).unwrap();