diff --git a/rustfs/src/admin/handlers/policies.rs b/rustfs/src/admin/handlers/policies.rs index e55fdcb17..dd471daf8 100644 --- a/rustfs/src/admin/handlers/policies.rs +++ b/rustfs/src/admin/handlers/policies.rs @@ -377,6 +377,7 @@ impl Operation for RemoveCannedPolicy { #[derive(Debug, Deserialize, Default)] pub struct SetPolicyForUserOrGroupQuery { + #[serde(default)] #[serde(rename = "policyName", alias = "policy")] pub policy_name: String, #[serde(rename = "userOrGroup", alias = "user-or-group")] @@ -983,6 +984,16 @@ mod tests { assert!(!query.is_group); } + #[test] + fn set_policy_query_allows_missing_policy_name_for_policy_removal() { + let query: SetPolicyForUserOrGroupQuery = + serde_urlencoded::from_str("userOrGroup=test-group&isGroup=true").expect("query should parse"); + + assert!(query.policy_name.is_empty()); + assert_eq!(query.user_or_group, "test-group"); + assert!(query.is_group); + } + #[test] fn policy_association_req_requires_exactly_one_target() { let err = validate_policy_association_req(&PolicyAssociationReq {