use umbral::orm::Model;
use umbral_auth::AuthUser;
fn field(name: &str) -> &'static umbral::orm::FieldSpec {
<AuthUser as Model>::FIELDS
.iter()
.find(|f| f.name == name)
.unwrap_or_else(|| panic!("AuthUser has no field `{name}`"))
}
#[test]
fn auth_user_privilege_columns_are_default_deny() {
assert!(
field("is_superuser").privileged,
"AuthUser.is_superuser must be #[umbral(privileged)] (mass-assignment guard)"
);
assert!(
field("is_staff").privileged,
"AuthUser.is_staff must be #[umbral(privileged)] (mass-assignment guard)"
);
}
#[test]
fn auth_user_password_hash_is_never_form_writable() {
assert!(
field("password_hash").noform,
"AuthUser.password_hash must be #[umbral(noform)]"
);
}
#[test]
fn auth_user_identifier_columns_normalize_on_dynamic_writes() {
for name in ["username", "email"] {
let f = field(name);
assert!(
f.trim && f.lowercase,
"AuthUser.{name} must be #[umbral(trim, lowercase)] so admin/REST writes canonicalize"
);
}
}