nvpn 4.1.13

CLI and daemon for Nostr VPN private mesh networks
use super::*;

#[test]
fn cooldown_is_enforced() {
    let mut last_restart_at = None;

    assert!(fips_stale_participant_restart_due(
        &mut last_restart_at,
        1_000
    ));
    assert_eq!(last_restart_at, Some(1_000));
    assert!(!fips_stale_participant_restart_due(
        &mut last_restart_at,
        1_000 + FIPS_STALE_PARTICIPANT_RESTART_COOLDOWN_SECS - 1
    ));
    assert!(fips_stale_participant_restart_due(
        &mut last_restart_at,
        1_000 + FIPS_STALE_PARTICIPANT_RESTART_COOLDOWN_SECS
    ));
    assert!(fips_stale_participant_restart_due(
        &mut last_restart_at,
        900
    ));
}

#[test]
fn carrier_rebind_requires_every_peer_path_to_fail() {
    let stale = vec!["a".to_string()];
    let mut peers = vec![pending_fips_peer("a"), pending_fips_peer("b")];

    assert!(fips_stale_participant_carrier_rebind_required(
        &peers, &stale
    ));

    peers[1].connected = true;
    assert!(!fips_stale_participant_carrier_rebind_required(
        &peers, &stale
    ));
    assert!(!fips_stale_participant_carrier_rebind_required(&peers, &[]));
    peers[1].connected = false;
    let mut seller = pending_fips_peer("public-paid-seller");
    seller.connected = true;
    peers.push(seller);
    assert!(
        !fips_stale_participant_carrier_rebind_required(&peers, &stale),
        "a private device going offline must not rebind a working paid connection"
    );
}