dd-sensitive-data-scanner 0.0.0

Core Sensitive Data Scanner library for detecting and redacting sensitive information.
Documentation
use crate::secondary_validation::Validator;
use iban::Iban;
pub struct IbanChecker;

impl Validator for IbanChecker {
    fn is_valid_match(&self, regex_match: &str) -> bool {
        let iban_candidate: String = regex_match
            .chars()
            .filter(|c| c.is_alphanumeric())
            .collect();
        let iban = iban_candidate.parse::<Iban>();
        if iban.is_err() {
            return false;
        }
        true
    }
}

#[cfg(test)]
mod test {
    use crate::secondary_validation::*;
    #[test]
    fn test_valid_ibans() {
        let valid_ibans = vec![
            "DE44500105175407324931",
            "DE4450-0105-1754-0732-4931",
            "KZ86 125K ZT50 0410 0100",
        ];
        for iban in valid_ibans {
            assert!(IbanChecker.is_valid_match(iban));
        }
    }

    #[test]
    fn test_invalid_ibans() {
        let invalid_ibans_checksum =
            vec!["DE45500105175407324931", "ZZZFO6666000000000000031231ZZZ"];
        for iban in invalid_ibans_checksum {
            assert!(!IbanChecker.is_valid_match(iban));
        }
        let invalid_ibans_bban = vec!["AL84212110090000AB023569874"];
        for iban in invalid_ibans_bban {
            assert!(!IbanChecker.is_valid_match(iban));
        }
    }
}