diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index 061af14..59b5330 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -1331,77 +1331,7 @@ fn test_mark_unreachable() { } #[test] -fn test_blockage_migration_level_3() { - 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)); - - // 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()); - - // 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); - - 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() { +fn test_blockage_migration() { let mut th = TestHarness::new(); // Join an untrusted user @@ -1475,8 +1405,55 @@ fn test_blockage_migration_level_4() { // Migrate let (_five_perf_stat, cred5) = th.blockage_migration(&cred4, &migration); + assert!(scalar_u32(&cred5.trust_level).unwrap() == 2); println!("cred5 = {:?}", cred5); assert!(th.ba.verify_lox(&cred5)); + + // Time passes + th.advance_days(29); + + // Go up to level 3 + let (_six_perf_stat, cred6) = th.level_up(&cred5); + assert!(scalar_u32(&cred6.trust_level).unwrap() == 3); + println!("cred6 = {:?}", cred6); + assert!(th.ba.verify_lox(&cred6)); + + // Get our bridges + let (id, key) = bridge_table::from_scalar(cred6.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()); + + // Oh, no! Two of our bridges are blocked! + th.ba.bridge_blocked(&bucket.0[1], &mut th.bdb); + th.ba.bridge_blocked(&bucket.0[2], &mut th.bdb); + + 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(&cred6); + + println!("migration = {:?}", migration); + + // Migrate + let (_seven_perf_stat, cred7) = th.blockage_migration(&cred6, &migration); + + assert!(scalar_u32(&cred7.trust_level).unwrap() == 1); + println!("cred7 = {:?}", cred7); + assert!(th.ba.verify_lox(&cred7)); } fn print_test_results(perf_stat: PerfStat) {