diff --git a/src/filters/naive_filter/filter.rs b/src/filters/naive_filter/filter.rs index 110cf3a..4280645 100644 --- a/src/filters/naive_filter/filter.rs +++ b/src/filters/naive_filter/filter.rs @@ -161,4 +161,52 @@ mod tests { assert_eq!(17, passed_messages); assert_eq!(83, filtered_messages); } + + #[test] + fn invalid_filters() { + assert!( + NaiveFilter::from_filters(&vec!["method~='get]".to_string()]).is_err(), + "The filter should not have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["method~='get']".to_string()]).is_err(), + "The filter should not have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["status~=`404".to_string()]).is_err(), + "The filter should not have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["status~=`404,123`".to_string()]).is_err(), + "The filter should not have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["status~=`abc`".to_string()]).is_err(), + "The filter should not have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["status~=`abc`".to_string()]).is_err(), + "The filter should not have been created" + ); + } + + #[test] + fn valid_filters() { + assert!( + NaiveFilter::from_filters(&vec!["method=='get'".to_string()]).is_ok(), + "The filter should have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["status==`404`".to_string()]).is_ok(), + "The filter should have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["status==internal.status".to_string()]).is_ok(), + "The filter should have been created" + ); + assert!( + NaiveFilter::from_filters(&vec!["internal.value!=`3.1415962`".to_string()]).is_ok(), + "The filter should not have been created" + ); + } } diff --git a/src/filters/naive_filter/operand.rs b/src/filters/naive_filter/operand.rs index e362e42..799b876 100644 --- a/src/filters/naive_filter/operand.rs +++ b/src/filters/naive_filter/operand.rs @@ -28,6 +28,7 @@ impl NaiveFilterOperand { } pub(crate) fn from_str(operand_str: &str) -> Result { + let operand_str = operand_str.trim(); match operand_str.chars().next() { // number Some('`') => {