aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2025-08-15 23:25:45 +0200
committerrtkay123 <dev@kanjala.com>2025-08-15 23:25:45 +0200
commit4e31b25854e015e089c0abd4e5c61ee3de4bfc8a (patch)
tree00d32d5de09db57be23da673960ea5386f8b0748
parentdfc698ac6b31be19185124dd39fd91a49549cb99 (diff)
downloadwarden-4e31b25854e015e089c0abd4e5c61ee3de4bfc8a.tar.bz2
warden-4e31b25854e015e089c0abd4e5c61ee3de4bfc8a.zip
test(exec): extract id and ver
-rw-r--r--crates/rule-executor/src/processor/rule.rs63
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");
+ }
}