This commit is contained in:
Brandon Thomas committed 2026-05-13 10:16:33 -04:00
1 parent eb23abb7b3
commit 463f76a50f
3 files changed
+11 -16

No files matched your search

@@ -229,7 +229,7 @@ pub async fn create_account_handler(
maybe_source,
maybe_referral_url,
maybe_landing_url,
maybe_referral_partner: sanitize_referral_username(request.maybe_referral_username.as_deref()),
maybe_referral_partner: request.maybe_referral_username.as_deref().and_then(sanitize_referral_username),
maybe_user_token: None, // NB: This parameter is for internal testing only
}
).await;
@@ -243,7 +243,7 @@ pub async fn google_sso_handler(
claims_subject: &claims_subject,
claims_email_address: &claims_email_address,
mysql_connection: &mut mysql_connection,
maybe_referral_partner: sanitize_referral_username(request.maybe_referral_username.as_deref()),
maybe_referral_partner: request.maybe_referral_username.as_deref().and_then(sanitize_referral_username),
}).await?;
user_token = result.user_token;
@@ -1,10 +1,10 @@
const MAX_REFERRAL_PARTNER_LENGTH: usize = 32;
/// Sanitize an optional referral username/code for storage.
/// Sanitize a referral username/code for storage
/// in the `users.maybe_referral_partner` column.
/// Trims whitespace and truncates to 32 characters.
/// Returns None if the input is None or empty after trimming.
pub fn sanitize_referral_username(maybe_value: Option<&str>) -> Option<String> {
let value = maybe_value?;
/// Returns None if empty after trimming.
pub fn sanitize_referral_username(value: &str) -> Option<String> {
let trimmed = value.trim();
if trimmed.is_empty() {
return None;
@@ -17,35 +17,30 @@ pub fn sanitize_referral_username(maybe_value: Option<&str>) -> Option<String> {
mod tests {
use super::*;
#[test]
fn none_returns_none() {
assert_eq!(sanitize_referral_username(None), None);
}
#[test]
fn empty_returns_none() {
assert_eq!(sanitize_referral_username(Some("")), None);
assert_eq!(sanitize_referral_username(""), None);
}
#[test]
fn whitespace_only_returns_none() {
assert_eq!(sanitize_referral_username(Some(" ")), None);
assert_eq!(sanitize_referral_username(" "), None);
}
#[test]
fn trims_whitespace() {
assert_eq!(sanitize_referral_username(Some(" alice ")), Some("alice".to_string()));
assert_eq!(sanitize_referral_username(" alice "), Some("alice".to_string()));
}
#[test]
fn truncates_long_values() {
let long = "a".repeat(50);
let result = sanitize_referral_username(Some(&long)).unwrap();
let result = sanitize_referral_username(&long).unwrap();
assert_eq!(result.len(), 32);
}
#[test]
fn passes_through_normal_values() {
assert_eq!(sanitize_referral_username(Some("bob123")), Some("bob123".to_string()));
assert_eq!(sanitize_referral_username("bob123"), Some("bob123".to_string()));
}
}