test(client): cover gateway replacement status
The manual lifecycle check depends on the Windows client diagnostics moving from connected, to disconnected, and back to connected when the LAN gateway is restarted. Existing formatter tests covered a gateway leave, but not the replacement join updating the tracked gateway peer id afterward. Add a client lifecycle unit test that formats the first gateway join, its leave, and a replacement gateway join. The assertions prove the client-side relay status clears the old peer id and then reports the new gateway as connected. Test Plan: - cargo fmt --check - cargo test -p lanparty-client-win \ tracks_gateway_replacement_after_disconnect -- --nocapture - cargo test -p lanparty-client-win - cargo test --workspace - cargo clippy --workspace --all-targets -- -D warnings - git diff --check Refs: MVP lifecycle sanity check
This commit is contained in:
@@ -1685,6 +1685,41 @@ mod tests {
|
||||
assert_eq!(relay_status.gateway_peer_id(), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tracks_gateway_replacement_after_disconnect() {
|
||||
let first_gateway =
|
||||
ControlMessage::PeerJoined(PeerInfo::new(1, Role::Gateway, None).unwrap());
|
||||
let first_gateway_left = ControlMessage::PeerLeft {
|
||||
peer_id: 1,
|
||||
reason: DisconnectReason::Normal,
|
||||
};
|
||||
let replacement_gateway =
|
||||
ControlMessage::PeerJoined(PeerInfo::new(3, Role::Gateway, None).unwrap());
|
||||
let mut formatter = ControlEventFormatter::default();
|
||||
let relay_status = ClientRelayStatus::new(false);
|
||||
|
||||
assert_eq!(
|
||||
formatter.format(&first_gateway, &relay_status),
|
||||
"relay event: LAN gateway connected as peer 1"
|
||||
);
|
||||
assert!(relay_status.gateway_connected());
|
||||
assert_eq!(relay_status.gateway_peer_id(), Some(1));
|
||||
|
||||
assert_eq!(
|
||||
formatter.format(&first_gateway_left, &relay_status),
|
||||
"relay event: LAN gateway disconnected (peer 1, Normal)"
|
||||
);
|
||||
assert!(!relay_status.gateway_connected());
|
||||
assert_eq!(relay_status.gateway_peer_id(), None);
|
||||
|
||||
assert_eq!(
|
||||
formatter.format(&replacement_gateway, &relay_status),
|
||||
"relay event: LAN gateway connected as peer 3"
|
||||
);
|
||||
assert!(relay_status.gateway_connected());
|
||||
assert_eq!(relay_status.gateway_peer_id(), Some(3));
|
||||
}
|
||||
|
||||
const fn mac(last_octet: u8) -> MacAddr {
|
||||
MacAddr::new([0x02, 0, 0, 0, 0, last_octet])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user