fedimovies/src/validators/users.rs

29 lines
777 B
Rust
Raw Normal View History

use regex::Regex;
use crate::errors::ValidationError;
2023-04-10 21:20:47 +00:00
use super::profiles::validate_username;
pub fn validate_local_username(username: &str) -> Result<(), ValidationError> {
2023-04-10 21:20:47 +00:00
validate_username(username)?;
// The username regexp should not allow domain names and IP addresses
2023-04-25 11:19:04 +00:00
let username_regexp = Regex::new(r"^[a-zA-Z0-9_]+$").unwrap();
if !username_regexp.is_match(username) {
2023-04-26 10:55:42 +00:00
return Err(ValidationError("invalid username".to_string()));
};
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_validate_local_username() {
let result_1 = validate_local_username("name_1");
2023-04-27 22:01:24 +00:00
assert!(result_1.is_ok());
let result_2 = validate_local_username("name&");
2023-04-27 22:15:44 +00:00
assert!(result_2.is_err());
}
}