diff options
author | rtkay123 <dev@kanjala.com> | 2025-08-15 23:25:45 +0200 |
---|---|---|
committer | rtkay123 <dev@kanjala.com> | 2025-08-15 23:25:45 +0200 |
commit | 4e31b25854e015e089c0abd4e5c61ee3de4bfc8a (patch) | |
tree | 00d32d5de09db57be23da673960ea5386f8b0748 | |
parent | dfc698ac6b31be19185124dd39fd91a49549cb99 (diff) | |
download | warden-4e31b25854e015e089c0abd4e5c61ee3de4bfc8a.tar.bz2 warden-4e31b25854e015e089c0abd4e5c61ee3de4bfc8a.zip |
test(exec): extract id and ver
-rw-r--r-- | crates/rule-executor/src/processor/rule.rs | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/crates/rule-executor/src/processor/rule.rs b/crates/rule-executor/src/processor/rule.rs index 8168c5a..8c23e0f 100644 --- a/crates/rule-executor/src/processor/rule.rs +++ b/crates/rule-executor/src/processor/rule.rs @@ -9,13 +9,70 @@ use warden_core::configuration::rule::RuleConfigurationRequest; use crate::state::AppHandle; pub async fn process_rule(message: Message, state: AppHandle) -> Result<()> { - let req = create_configuration_request(&message); + let req = create_configuration_request(message.subject.as_str()); let rule_configuration = configuration::get_configuration(req, Arc::clone(&state)).await?; Ok(()) } -fn create_configuration_request(message: &Message) -> RuleConfigurationRequest { - todo!() +fn create_configuration_request(subject: &str) -> RuleConfigurationRequest { + // rule.901.v1.0.0 + let mut tokens = subject.split("rule."); + // rule. + tokens.next(); + // 901.v1.0.0 + let rem = tokens.next().expect("router guarantees subject"); + + let mut tokens = rem.split(".v"); + let rule_id = tokens.next().expect("router guarantees subject"); + let version = tokens.next().expect("router guarantees subject"); + + RuleConfigurationRequest { + id: rule_id.to_owned(), + version: version.to_owned() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_valid_subject() { + let subject = "rule.901.v1.0.0"; + let req = create_configuration_request(subject); + assert_eq!(req.id, "901"); + assert_eq!(req.version, "1.0.0"); + } + + #[test] + fn test_valid_subject_with_longer_id() { + let subject = "rule.12345.v2.3.4"; + let req = create_configuration_request(subject); + assert_eq!(req.id, "12345"); + assert_eq!(req.version, "2.3.4"); + } + + #[test] + #[should_panic(expected = "router guarantees subject")] + fn test_missing_rule_prefix() { + let subject = "901.v1.0.0"; // Missing "rule." + create_configuration_request(subject); + } + + #[test] + #[should_panic(expected = "router guarantees subject")] + fn test_missing_version() { + let subject = "rule.901"; + create_configuration_request(subject); + } + + #[test] + fn test_different_version_format() { + let subject = "rule.abc.v999"; + let req = create_configuration_request(subject); + assert_eq!(req.id, "abc"); + assert_eq!(req.version, "999"); + } } |