use rand::distributions::Alphanumeric;
use rand::{thread_rng, Rng};
pub fn generate_session_id(prefix: Option<&str>) -> String {
let mut rng = thread_rng();
let random_string: String = (&mut rng)
.sample_iter(Alphanumeric)
.take(12)
.map(char::from)
.collect();
format!("{}_{}", prefix.unwrap_or("qs"), random_string)
}
#[test]
fn test_generate_session_id() {
let session_id = generate_session_id(None);
assert!(
session_id.starts_with("qs_"),
"Expected prefix 'qs_', got {}",
session_id
);
assert_eq!(
session_id.len(),
15,
"Expected length 15, got {}",
session_id.len()
);
let session_id = generate_session_id(Some("foo"));
assert!(
session_id.starts_with("foo_"),
"Expected prefix 'foo_', got {}",
session_id
);
assert_eq!(
session_id.len(),
16,
"Expected length 16, got {}",
session_id.len()
);
}