auth_framework/utils/
string.rs1use rand::{Rng, rng};
4
5pub fn generate_id(prefix: Option<&str>) -> String {
7 const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ\
8 abcdefghijklmnopqrstuvwxyz\
9 0123456789";
10 let random_part: String = (0..16)
11 .map(|_| {
12 let idx = rng().random_range(0..CHARSET.len());
13 CHARSET[idx] as char
14 })
15 .collect();
16
17 match prefix {
18 Some(p) => format!("{}_{}", p, random_part),
19 None => random_part,
20 }
21}pub fn generate_uuid() -> String {
23 uuid::Uuid::new_v4().to_string()
24}
25
26pub fn sanitize_string(input: &str) -> String {
28 input
29 .chars()
30 .filter(|c| c.is_alphanumeric() || *c == '_' || *c == '-')
31 .collect()
32}
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn test_generate_id() {
40 let id = generate_id(None);
41 assert_eq!(id.len(), 16);
42
43 let prefixed_id = generate_id(Some("test"));
44 assert!(prefixed_id.starts_with("test_"));
45 assert_eq!(prefixed_id.len(), 21); }
47
48 #[test]
49 fn test_generate_uuid() {
50 let uuid = generate_uuid();
51 assert_eq!(uuid.len(), 36); assert!(uuid.contains('-'));
53 }
54
55 #[test]
56 fn test_sanitize_string() {
57 let input = "hello@world!#$%";
58 let sanitized = sanitize_string(input);
59 assert_eq!(sanitized, "helloworld");
60 }
61}