From 1525143a04e1d92ee5d88b38f890f5f94f6af3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=AD=A3=E8=B6=85?= Date: Tue, 21 Apr 2026 09:59:05 +0800 Subject: [PATCH] test: cover NATS and Pulsar config validation (#2623) --- crates/targets/src/config/common.rs | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/crates/targets/src/config/common.rs b/crates/targets/src/config/common.rs index 54536bf4c..7016c3c57 100644 --- a/crates/targets/src/config/common.rs +++ b/crates/targets/src/config/common.rs @@ -180,3 +180,52 @@ pub(super) fn validate_pulsar_broker_config(broker: &str, config: &KVS, default_ pub(super) fn parse_url(value: &str, field_label: &str) -> Result { Url::parse(value).map_err(|e| TargetError::Configuration(format!("Invalid {field_label}: {e} (value: '{value}')"))) } + +#[cfg(test)] +mod tests { + use super::{validate_nats_server_config, validate_pulsar_broker_config}; + use async_nats::ServerAddr; + use rustfs_config::{ + NATS_PASSWORD, NATS_QUEUE_DIR, NATS_SUBJECT, NATS_TOKEN, NATS_USERNAME, PULSAR_TLS_ALLOW_INSECURE, PULSAR_TOPIC, + }; + use rustfs_ecstore::config::KVS; + use std::str::FromStr; + + #[test] + fn validate_nats_server_config_rejects_multiple_auth_methods() { + let server = ServerAddr::from_str("nats://127.0.0.1:4222").expect("valid nats address"); + let mut config = KVS::new(); + config.insert(NATS_SUBJECT.to_string(), "events".to_string()); + config.insert(NATS_TOKEN.to_string(), "token".to_string()); + config.insert(NATS_USERNAME.to_string(), "user".to_string()); + config.insert(NATS_PASSWORD.to_string(), "password".to_string()); + + let err = validate_nats_server_config(&server, &config, "").expect_err("conflicting auth should be rejected"); + + assert!(err.to_string().contains("only one auth method")); + } + + #[test] + fn validate_nats_server_config_rejects_relative_queue_dir() { + let server = ServerAddr::from_str("nats://127.0.0.1:4222").expect("valid nats address"); + let mut config = KVS::new(); + config.insert(NATS_SUBJECT.to_string(), "events".to_string()); + config.insert(NATS_QUEUE_DIR.to_string(), "relative-queue".to_string()); + + let err = validate_nats_server_config(&server, &config, "").expect_err("relative queue_dir should be rejected"); + + assert!(err.to_string().contains("absolute path")); + } + + #[test] + fn validate_pulsar_broker_config_rejects_tls_flags_without_tls_scheme() { + let mut config = KVS::new(); + config.insert(PULSAR_TOPIC.to_string(), "events".to_string()); + config.insert(PULSAR_TLS_ALLOW_INSECURE.to_string(), "on".to_string()); + + let err = validate_pulsar_broker_config("pulsar://127.0.0.1:6650", &config, "") + .expect_err("TLS flags should require pulsar+ssl"); + + assert!(err.to_string().contains("only allowed with pulsar+ssl")); + } +}