From 08fab34804e3a167608fec89f0306bd4876edd54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=AD=A3=E8=B6=85?= Date: Fri, 1 May 2026 12:11:46 +0800 Subject: [PATCH] test(admin): cover peer identity scheme dedupe (#2764) --- rustfs/src/admin/site_replication_identity.rs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/rustfs/src/admin/site_replication_identity.rs b/rustfs/src/admin/site_replication_identity.rs index 1fbc4b3dc..56564b038 100644 --- a/rustfs/src/admin/site_replication_identity.rs +++ b/rustfs/src/admin/site_replication_identity.rs @@ -149,6 +149,20 @@ where #[cfg(test)] mod tests { use super::*; + use rustfs_madmin::{BucketBandwidth, SyncStatus}; + + fn peer(name: &str, endpoint: &str) -> PeerInfo { + PeerInfo { + name: name.to_string(), + endpoint: endpoint.to_string(), + deployment_id: name.to_string(), + sync_state: SyncStatus::Unknown, + default_bandwidth: BucketBandwidth::default(), + replicate_ilm_expiry: false, + object_naming_mode: String::new(), + api_version: None, + } + } #[test] fn canonical_endpoint_accepts_case_insensitive_scheme() { @@ -166,4 +180,19 @@ mod tests { "http://node-a.example.com:9000" )); } + + #[test] + fn normalize_peer_map_deduplicates_case_insensitive_scheme() { + let peers = BTreeMap::from([ + ("remote-http".to_string(), peer("remote-http", "http://node-a.example.com:9000")), + ("remote-https".to_string(), peer("remote-https", "HTTPS://Node-A.Example.Com:9000/")), + ]); + + let normalized = normalize_peer_map_by_identity_with(peers, |peer| peer); + + assert_eq!(normalized.len(), 1); + let peer = normalized.values().next().expect("normalized peer should exist"); + assert_eq!(peer.endpoint, "HTTPS://Node-A.Example.Com:9000/"); + assert_eq!(peer.deployment_id, "remote-https"); + } }