From c2545b65405633df5ce45f8c06d1ac6cc42d0c6c Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Thu, 4 Jan 2024 12:10:12 +0100 Subject: [PATCH] move api-types tests to api-types and drop vec![] macro we don't need to allocate here Signed-off-by: Wolfgang Bumiller --- pbs-api-types/tests/group_filter_tests.rs | 76 +++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 pbs-api-types/tests/group_filter_tests.rs diff --git a/pbs-api-types/tests/group_filter_tests.rs b/pbs-api-types/tests/group_filter_tests.rs new file mode 100644 index 00000000..89a7ddd1 --- /dev/null +++ b/pbs-api-types/tests/group_filter_tests.rs @@ -0,0 +1,76 @@ +use pbs_api_types::{BackupGroup, BackupType, GroupFilter}; +use std::str::FromStr; + +#[test] +fn test_no_filters() { + let group_filters = vec![]; + + let do_backup = [ + "vm/101", "vm/102", "vm/103", "vm/104", "vm/105", "vm/106", "vm/107", "vm/108", "vm/109", + ]; + + for id in do_backup { + assert!(BackupGroup::new(BackupType::Vm, id).apply_filters(&group_filters)); + } +} + +#[test] +fn test_include_filters() { + let group_filters = vec![GroupFilter::from_str("regex:.*10[2-8]").unwrap()]; + + let do_backup = [ + "vm/102", "vm/103", "vm/104", "vm/105", "vm/106", "vm/107", "vm/108", + ]; + + let dont_backup = ["vm/101", "vm/109"]; + + for id in do_backup { + assert!(BackupGroup::new(BackupType::Vm, id).apply_filters(&group_filters)); + } + + for id in dont_backup { + assert!(!BackupGroup::new(BackupType::Vm, id).apply_filters(&group_filters)); + } +} + +#[test] +fn test_exclude_filters() { + let group_filters = [ + GroupFilter::from_str("exclude:regex:.*10[1-3]").unwrap(), + GroupFilter::from_str("exclude:regex:.*10[5-7]").unwrap(), + ]; + + let do_backup = ["vm/104", "vm/108", "vm/109"]; + + let dont_backup = ["vm/101", "vm/102", "vm/103", "vm/105", "vm/106", "vm/107"]; + + for id in do_backup { + assert!(BackupGroup::new(BackupType::Vm, id).apply_filters(&group_filters)); + } + for id in dont_backup { + assert!(!BackupGroup::new(BackupType::Vm, id).apply_filters(&group_filters)); + } +} + +#[test] +fn test_include_and_exclude_filters() { + let group_filters = [ + GroupFilter::from_str("exclude:regex:.*10[1-3]").unwrap(), + GroupFilter::from_str("regex:.*10[2-8]").unwrap(), + GroupFilter::from_str("exclude:regex:.*10[5-7]").unwrap(), + ]; + + let do_backup = ["vm/104", "vm/108"]; + + let dont_backup = [ + "vm/101", "vm/102", "vm/103", "vm/105", "vm/106", "vm/107", "vm/109", + ]; + + for id in do_backup { + assert!(BackupGroup::new(BackupType::Vm, id).apply_filters(&group_filters)); + } + + for id in dont_backup { + assert!(!BackupGroup::new(BackupType::Vm, id).apply_filters(&group_filters)); + } +}