From 143ebaae9349667b6dfda2f937cca3d64b913f22 Mon Sep 17 00:00:00 2001 From: "glm-5.1" Date: Mon, 15 Jun 2026 06:15:04 +0000 Subject: [PATCH] Add wildcard bind acceptance/rejection tests for ConfigReloadHandle reload Tests verify that reload accepts 0.0.0.0 bind when cli_allow_wildcard_bind is true and rejects it when false. --- src/config/dynamic_config.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/config/dynamic_config.rs b/src/config/dynamic_config.rs index b4dcb6c..022611d 100644 --- a/src/config/dynamic_config.rs +++ b/src/config/dynamic_config.rs @@ -474,4 +474,34 @@ mod tests { assert!(config.routing_table.contains_key("my.site")); assert_eq!(config.routing_table.len(), 1); } + + #[test] + fn reload_accepts_wildcard_bind_when_flag_true() { + let initial = test_fixtures::test_dynamic_config(); + let config_arc = Arc::new(ArcSwap::from_pointee(initial.clone())); + let mut static_config = test_fixtures::test_static_config(); + static_config.listeners[0].bind_addr = "0.0.0.0".to_string(); + static_config.allow_wildcard_bind = false; + let handle = ConfigReloadHandle::new(config_arc.clone(), static_config.clone(), true); + + let rt = tokio::runtime::Runtime::new().unwrap(); + let result = rt.block_on(handle.reload(static_config, initial)); + assert!(result.is_ok()); + } + + #[test] + fn reload_rejects_wildcard_bind_when_flag_false() { + let initial = test_fixtures::test_dynamic_config(); + let config_arc = Arc::new(ArcSwap::from_pointee(initial.clone())); + let mut static_config = test_fixtures::test_static_config(); + static_config.listeners[0].bind_addr = "0.0.0.0".to_string(); + static_config.allow_wildcard_bind = false; + let handle = ConfigReloadHandle::new(config_arc.clone(), static_config.clone(), false); + + let rt = tokio::runtime::Runtime::new().unwrap(); + let result = rt.block_on(handle.reload(static_config, initial)); + assert!(result.is_err()); + let err_msg = result.unwrap_err().to_string(); + assert!(err_msg.contains("0.0.0.0")); + } }